Назад | Перейти на главную страницу

ZFS - используйте чистые ACL для принудительного наследования разрешений на запись группы

Я переношу структуру каталогов из файловой системы UFS в ZFS. В старом месте у меня были POSIX ACL, настроенные для принудительного создания всех новых файлов / каталогов в структуре с разрешениями на запись группы -

group::rwx
default:group::rwx

В новой файловой системе ZFS я попытался воспроизвести это с помощью списков ACL NFSv4 с установленными флагами "file_inherit / dir_inherit", но обнаружил, что они удалены (или, в случае каталогов, заменены ACE с установленным "inherit_only"), поэтому другие пользователи в группе не иметь права на запись в новый каталог. Например:

$ chmod A+group@:rwxp:fd:allow .
$ ls -Vd .
drwxrws---+  6 user1    grp1         13 Nov  8 12:55 .
            group@:rwxp----------:fd----:allow
            owner@:--------------:------:deny
            owner@:rwxp---A-W-Co-:------:allow
            group@:--------------:------:deny
            group@:rwxp----------:------:allow
         everyone@:rwxp---A-W-Co-:------:deny
         everyone@:------a-R-c--s:------:allow
$ mkdir test
$ ls -Vd test
drwxr-sr-x+  2 user1    grp1          2 Dec  1 14:24 test
            group@:rwxp----------:fdi---:allow
            group@:--------------:------:allow
            owner@:--------------:------:deny
            owner@:rwxp---A-W-Co-:------:allow
            group@:-w-p----------:------:deny
            group@:r-x-----------:------:allow
         everyone@:-w-p---A-W-Co-:------:deny
         everyone@:r-x---a-R-c--s:------:allow
$ touch afile
$ ls -V afile
-rw-r--r--+  1 user1    grp1          0 Dec  1 14:40 afile
            group@:--------------:------:allow
            owner@:--x-----------:------:deny
            owner@:rw-p---A-W-Co-:------:allow
            group@:-wxp----------:------:deny
            group@:r-------------:------:allow
         everyone@:-wxp---A-W-Co-:------:deny
         everyone@:r-----a-R-c--s:------:allow

Я могу исправить это, установив umask на 002, но я хотел бы знать, есть ли чистый способ ACL (поскольку в настоящее время установленные версии FTP и SSH не позволяют устанавливать umask для каждого пользователя).

Я использую что-то вроде нижеприведенного для своего беспарольного хранилища NAS. Я не очень хорошо разбираюсь во всех детализированных разрешениях, поэтому, вероятно, это перебор с разрешениями владельца / группы и недопустимостью для всех, но вот оно:

setfacl -m owner@:full_set:fd:allow /zfs/raid1/storage
setfacl -m group@:full_set:fd:allow /zfs/raid1/storage
setfacl -m everyone@:rx:fd:allow /zfs/raid1/storage

Это на FreeBSD, поэтому списки ACL ZFS NFSv4 встроены в setfacl. Я думаю, они также могут быть в nfs4_setfacl и chmod в некоторых ОС. Я новичок в ACL и даже новичок во FreeBSD, так что все это может заставить системных администраторов плакать. Он также действует как chmod 2774 и устанавливает новые группы файлов / каталогов в группу набора данных.

Отредактируйте, чтобы немного уточнить: /zfs/raid1 это фактическое крепление ZFS, storage это набор данных внутри него.