2

Мне нужно 2 пользователя Linux, чтобы разделить папку. В этой папке пользователи всегда должны иметь возможность создавать файлы и подпапки и записывать их в любую подпапку (независимо от того, принадлежит она им или нет). Однако они должны иметь возможность редактировать только те файлы, которыми они на самом деле владеют.

Я пытался использовать липкий бит и ACL, но все еще борюсь.

1 ответ1

3

Это невозможно сделать с помощью ACL-списков POSIX - если вы сделаете подкаталоги доступными для записи по умолчанию, файлы также станут доступными для записи по умолчанию.

  1. Чтобы разрешить создание файлов, предоставьте права на запись (rwx) в каталог. "Списки ACL по умолчанию" могут помочь с этим: установите d:g:twousers:rwX в каталоге (при условии, что оба пользователя находятся в группе twousers ), и все вновь созданные элементы унаследуют это.

  2. Чтобы запретить изменение файлов других пользователей, ничего не делайте. Стандартная настройка umask (022) уже гарантирует, что вновь созданные файлы будут доступны для записи только владельцу (rw/r/r).

    Однако, если в каталоге установлены "ACL по умолчанию", как в # 1, эти ACL также будут добавлены во вновь созданные файлы.

    (Однако помните, что только владелец может изменять (chmod) права доступа к файлу. Таким образом, другие пользователи не могут сделать файл доступным для записи, если его еще нет.)

  3. Чтобы запретить удаление файлов других пользователей, установите бит закрепления в каталоге. Это не может быть унаследовано, к сожалению.

Как видите, точки № 1 и № 2 конфликтуют (списки ACL по умолчанию применяются ко всем объектам независимо от их типа).

Можно вроде этого добиться путем обучения пользователей chmod +t,g+w каждой новой директории , которую они создают, но это не особенно надежен.


Решением будет использование списков ACL NFSv4 , которые могут быть помечены как наследуемые только файлами или каталогами. К сожалению, они изначально не поддерживаются в Linux, поэтому требуются исправления ядра. Если вы увлекаетесь этим, nfs4acl и ngacl являются двумя реализациями.

Одно место, в котором Windows делает свою работу лучше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .