У меня есть система FreeNAS (FreeBSD) с общим ресурсом CIFS (называемым "библиотекой"), поддерживаемым файловой системой ZFS. Общий ресурс настроен в соответствии с графическим интерфейсом FreeNAS для использования ACL "Windows / Mac", что, как я полагаю, означает ACL NFSv4.
Вот как я хочу, чтобы выглядели основные списки контроля доступа:
nas# getfacl /mnt/big/library/test
# file: /mnt/big/library/test
# owner: DOMAIN\administrator
# group: DOMAIN\domain admins
owner@:rwxpDdaARWcCo-:fd----:allow
group@:rwxpDdaARWcCo-:fd----:allow
everyone@:r-x---a-R-c---:fd----:allow
Который из графического интерфейса Windows 7 отображается как "Полный контроль" для "DOMAIN\administrator" и "DOMAIN\Domain Admins" и "Чтение и выполнение" для "Everyone", унаследованных от корня общего ресурса. Windows даже правильно распознает владельца как "Администратора".
У меня возникли две проблемы, которые, как я полагаю, могут быть связаны между собой.
Во-первых, если я изменяю или создаю ACE для существующего объекта (файла или каталога), Windows заменяет ACE owner@
на один для group:DOMAIN\administrator
, а в случае добавления создает групповой ACE для group:DOMAIN\joe
для пользователя. Меня не так уж и беспокоит тот факт, что он считает пользователя группой (лишь бы это работало), но замена владельца ACE — это проблема, потому что теперь, если я изменю владельца объекта, ACE все равно будет существовать для предыдущего владельца.
Вторая неприятность заключается в том, что при создании нового объекта ACL выглядит следующим образом:
nas2# getfacl /mnt/big/library/test/New\ folder/
# file: /mnt/big/library/test/New folder/
# owner: DOMAIN\joe
# group: DOMAIN\domain users
owner@:rwxpDdaARWcCo-:fd----:allow
group@:rwxpDdaARWcCo-:fd----:allow
everyone@:r-x---a-R-c---:fd----:allow
Хотя, кажется, он правильно унаследовал ACE, он не сохранил владельца или группу родительского каталога. Есть ли способ создать его со свойствами содержащего каталога?
Глядя настраница руководства setfaclГоворится:
-d The operations apply to the default ACL entries instead of access
ACL entries. Currently only directories may have default ACL's.
This option is not applicable to NFSv4 ACLs.
Что для меня означает, что NFSv4 ACL не поддерживают ACE по умолчанию, что, похоже, мне нужно для исправления моей второй проблемы. Кто-нибудь знает, верно ли это?
решение1
Я на самом деле не особо разбирался во всем этом и могу серьезно ошибаться, но вот несколько моментов, которые могут это объяснить:
Списки контроля доступа NFSv4 похожи, ноне совсемнапример, списки контроля доступа Windows/CIFS/NTFS.
Например, формат ACL Windows вообще не различает SID «пользователь», «группа» или «специальный». Поскольку NAS не знает, какие учетные записи есть в вашей системе Windows, он не может определить, какие SID принадлежат пользователям, а какие — группам — ему приходится угадывать.
Однако, хотя списки контроля доступа NFSv4 не поддерживают «записей ACE по умолчанию» в стиле POSIX, ониделатьподдерживают «наследуемые» ACE в стиле Windows/CIFS; то есть каждая запись может быть наследуемой или нет.
В FreeBSD
getfacl
, вы можете увидеть флагиf
иd
, которые соответствуют «наследуется файлами» и «наследуется каталогами».Существует также флаг «только наследование»
i
, который практически является точным эквивалентом ACE «по умолчанию» в POSIX ACL — то есть ACE только наследуется, но не используется для самого каталога.При создании файла необходимовсегдапринадлежит пользователю, который его создал. Он не наследуется.
Если бы сервер CIFS работал под управлением Windows Server, у него была бы возможность сделать встроенную группу «Администраторы» владельцем файла по умолчанию (снова обратите внимание, что он позволяет владельцу быть как пользователем, так и группой, и не имеет «группового владения»).