2

Моя проблема идентична этому вопросу Windows, но касается NFS4 (Linux) и базового ZFS (OpenIndiana), который мы используем. У нас есть эта ZFS, совместно используемая через NFS4 и CIFS для пользователей Linux и Windows соответственно. Было бы неплохо, чтобы обе группы пользователей получили выгоду от ACL, но одна недостающая часть головоломки выглядит следующим образом:

У каждого пользователя есть дом, где он устанавливает верхний уровень, унаследованный ACL. Позже он может итеративно улучшать разрешения для содержащихся файлов / папок. Со временем иногда необходимо снова обобщать разрешения, чтобы избежать увеличения загрязнения записей ACL. Вы можете настроить ACL каждого отдельного файла, если необходимо получить требуемые разрешения, но это противоречит цели унаследованных ACL. Итак, как можно полностью очистить ACL, как в вопросе, связанном выше?

Я не нашел ничего о том, как должен выглядеть пустой, унаследованный ACL. Этот сценарий просто не существует. На самом деле, на странице Solaris chmod четко сказано

A-                            Removes all ACEs  for  current
                              ACL   on   file  and  replaces
                              current ACL with new ACL  that
                              represents  only  the  current
                              mode of the file.

Т.е. мы получаем три новые записи ACL, заполненные вещами, представляющими биты прав доступа, что довольно бесполезно для очистки.

Если я пытаюсь вручную удалить все ACE, на последнем я получаю

chmod A0- <file>
chmod: ERROR: Can't remove all ACL entries from a file

Что, кстати, заставляет меня задуматься: а почему бы и нет? На самом деле, я действительно хочу, чтобы весь ACL для конкретного файла исчез.

То же самое относится и к Linux, который перечисляет ACE, начиная с 1(!), И менее усердно озвучивает свои проблемы

nfs4_setacl -x 1 <file>
Failed setxattr operation: Unknown error 524

Итак, какова идея ACL под Solaris/NFS? Разве они никогда не могут быть очищены? Почему опция рекурсии для команд установки ACL загрязняет все дочерние элементы вместо того, чтобы устанавливать один ACL и заставлять дочерние объекты наследовать? Это действительно намерение дизайнеров? Я могу отлично очистить ACL с помощью Windows-клиента, но должен ли я сказать пользователям Linux, что им нужно переключать ОС только для того, чтобы объединить разрешения?

1 ответ1

1

С помощью «chmod A-file» вы полностью удаляете все ACL из файла, хранящегося в файловой системе ZFS. После этого все еще отображаются "поддельные" списки ACL, вычисленные из прав доступа к файлу. Если вы хотите удалить их тоже, вы можете запустить "chmod 0 file" в дополнение к предыдущей команде.

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