Руководство по администрированию файловых систем ZFS Solaris

Настройка списков ACL для файлов ZFS

В ZFS списки ACL представляет собой массив записей ACL. ZFS использует чистую модель списков ACL, в которой все файлы имеют тот или иной ACL. Обычно ACL является тривиальным в том смысле, что представляет только традиционные записи UNIX владелец/группа/все.

Файлы ZFS по-прежнему содержат биты разрешений и имеют режим разрешений, но эти значения представляют собой скорее кэш списков ACL. Таким образом, при изменении разрешений файла ACL обновляются соответствующим образом. Кроме того, при удалении нетривиального списка ACL, предоставляющего пользователю доступ к файлу или каталогу, этот пользователь по-прежнему сможет получать доступ к этому файлу или каталогу по причине битов разрешений, разрешающих доступ для группы или для всех пользователей. Все решения по управлению доступом определяются разрешениями, содержащимися в списках ACL файла или каталога.

Ниже приведены основные правила обработки списков ACL файлов ZFS:

При выборе для каталога нетривиального списка ACL этот ACL не наследуется дочерними каталогами автоматически. В случае выбора нетривиального списка ACL и необходимости его наследования дочерними каталогами следует использовать флаги наследования списков ACL. Для получения дополнительной информации см. Таблица 8–3 и раздел Настройка наследования списков ACL файлов ZFS в подробном формате.

При создании нового файла, в зависимости от значения umask, применяется тривиальный ACL по умолчанию, подобный следующему:


$ ls -v file.1
-r--r--r--   1 root     root      206663 Aug 31 11:53 file.1
     0:owner@:write_data/append_data/execute:deny
     1:owner@:read_data/write_xattr/write_attributes/write_acl/write_owner
         :allow
     2:group@:write_data/append_data/execute:deny
     3:group@:read_data:allow
     4:everyone@:write_data/append_data/write_xattr/execute/write_attributes
         /write_acl/write_owner:deny
     5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Следует отметить, что для каждой категории пользователей (owner@, group@ , everyone@) в этом примере определены две записи ACL. Одна запись для отказа deny в разрешениях и одна для предоставления allow разрешений..

Ниже приведено описание этого списка ACL для файла:

0:owner@

Пользователю отказано в разрешении на изменение и выполнение файла (write_data/append_data/execute:deny).

1:owner@

Владелец может читать и изменять содержимое файла (read_data/write_data/append_data). Владелец может также изменять атрибуты файла, например отметки времени, расширенные атрибуты и ACL (write_xattr/write_attributes /write_acl ). Кроме того, владелец может изменять владельца файла (write_owner:allow.

2:group@

Группе отказано в разрешении на изменение и выполнение файла (write_data/append_data/execute:deny).

3:group@

Группе предоставляются разрешения на чтение файла (read_data:allow).

4:everyone@

Всем, кто не является пользователем или группой, отказано в разрешении на выполнение или изменение содержимого файла или изменение любых его атрибутов (write_data/append_data/write_xattr/execute/write_attributes/write_acl/write_owner:deny ).

5:everyone@

Все, кто не является пользователем или группой, получают разрешения на чтение файла и атрибутов файла (read_data/read_xattr/read_attributes/read_acl/synchronize:allow ). Разрешения на синхронизацию (synchronize) в настоящее время не реализованы.

При создании нового каталога, в зависимости от значения umask, каталог списков ACL по умолчанию выглядит следующим образом:


$ ls -dv dir.1
drwxr-xr-x   2 root     root           2 Aug 31 11:54 dir.1
     0:owner@::deny
     1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
         /append_data/write_xattr/execute/write_attributes/write_acl
         /write_owner:allow
     2:group@:add_file/write_data/add_subdirectory/append_data:deny
     3:group@:list_directory/read_data/execute:allow
     4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr
         /write_attributes/write_acl/write_owner:deny
     5:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
         /read_acl/synchronize:allow

Ниже приведено описание списков ACL этого каталога :

0:owner@

Список запретов (deny) для владельца в каталоге пуст (::deny).

1:owner@

Владелец может читать и изменять содержимое каталога ( list_directory/read_data/add_file/write_data/add_subdirectory/append_data ), проводить поиск по содержимому (execute) и изменять такие атрибуты файла, как отметки времени, дополнительные атрибуты и ACL (write_xattr/write_attributes/write_acl). Кроме того, владелец может изменять принадлежность каталога (write_owner:allow).

2:group@

Группа не может добавлять содержимое в каталог и изменять его содержимое (add_file/write_data/add_subdirectory/append_data:deny).

3:group@

Группа может выводить в виде списка и просматривать содержимое каталога. Кроме того, группа обладает разрешениями на поиск в содержимом каталога (list_directory/read_data/execute:allow).

4:everyone@

Всем, кто не является пользователем или группой, отказано в разрешении добавлять или изменять содержимое каталога (add_file/write_data/add_subdirectory/append_data). Кроме того, запрещается изменение любых атрибутов каталога (write_xattr/write_attributes/write_acl/write_owner:deny).

5:everyone@

Все, кто не является пользователем или группой, могут читать и выполнять содержимое каталога (list_directory/read_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow ). Разрешения на синхронизацию (synchronize) в настоящее время не реализованы.