Моя проблема идентична этому вопросу 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, что им нужно переключать ОС только для того, чтобы объединить разрешения?