$ setfacl — x u: paulh,g: teach tfile

$ getfacl — omit-header tfile

user::rwx

group::r-x

mask::r-x

other::-x

Обратите внимание: во время этой операции команда setfacl автоматически подстраивает запись маски так, чтобы она соответствовала всем записям класса группы. (Здесь оказалась всего одна такая запись: ACL_GROUP_OBJ.) Если необходимо избежать подобной подстройки, то в команде setfacl следует указать параметр — n.

В заключение надо отметить, что команду setfacl с параметром — b можно использовать для удаления всех расширенных записей из ACL-списка, оставив лишь минимальные (то есть для пользователя, группы и остальных).

17.6. ACL-списки по умолчанию и создание файла

До сего момента разговора о списках ACL рассматривались списки доступа. Как видно из самого названия, данный список используется при определении разрешений, которые имеет процесс, получающий доступ к файлу, связанному с ACL-списком. Можно создать список второго типа для каталогов: ACL-список по умолчанию.

Данный список не играет роли при определении прав доступа, предоставляемых при доступе к каталогу. Напротив, его наличие или отсутствие определяет ACL-список (или списки), а также права доступа, которые относятся к файлам и к подкаталогам, создаваемым в данном каталоге. (ACL-список по умолчанию хранится в виде расширенного атрибута с именем system.posix_acl_default.)

Чтобы просмотреть и задать ACL-список по умолчанию для каталога, применяется параметр — d для команд getfacl и setfacl.

$ mkdir sub

$ setfacl — d — m u::rwx,u: paulh: rx,g::rx,g: teach: rwx,o::- sub

$ getfacl — d — omit-header sub

user::rwx

user: paulh: r-x

group::r-x

group: teach: rwx

mask::rwx Команда setfacl создала запись ACL_MASK автоматически

other::-

Удалить ACL-список по умолчанию для каталога можно с помощью параметра setfacl — k.

Если у каталога есть ACL-список по умолчанию, то:

• новый подкаталог, создаваемый в данном каталоге, наследует ACL-список по умолчанию в качестве своего ACL-списка по умолчанию. Иными словами, ACL-списки по умолчанию распространяются на нижние уровни дерева каталогов по мере создания новых подкаталогов;

• новый файл или подкаталог, созданные в данном каталоге, наследуют ACL-список по умолчанию для каталога в качестве своего ACL-списка доступа. Для записей ACL-списка, соответствующих традиционным битам прав доступа, применяется маска (операция И) в сочетании с соответствующими битами аргумента mode системного вызова (open(), mkdir() и т. д.), использованного для создания файла или подкаталога. Под «соответствующими записями ACL-списка» подразумеваются:

• ACL_USER_OBJ;

• ACL_MASK или, если отсутствует запись ACL_MASK, ACL_GROUP_OBJ;

• ACL_OTHER.

Если у каталога есть ACL-список по умолчанию, то маска umask для процесса (см. подраздел 15.4.6) не принимает участия в определении прав доступа для записей ACL-списка доступа нового файла, созданного в данном каталоге.

В качестве примера того, как новый файл наследует ACL-список доступа от ACL-списка по умолчанию для родительского каталога, допустим, что мы использовали следующий вызов open() для создания нового файла в каталоге, созданном выше:

open("sub/tfile", O_RDWR | O_CREAT,

S_IRWXU | S_IXGRP | S_IXOTH); /* rwx — x — x */

Новый файл имел бы следующий ACL-список доступа:

$ getfacl — omit-header sub/tfile

user::rwx

user: paulh: r-x #effective:-x

group::r-x #effective:-x

group: teach: rwx #effective:-x

mask::-x

other::-

Если у каталога нет ACL-списка по умолчанию, то:

• новые подкаталоги, созданные в этом каталоге, также не имеют ACL-списка по умолчанию;

• права доступа к новому файлу или к каталогу устанавливаются в соответствии с обычными правилами (см. подраздел 15.4.6): для прав доступа к файлу берется значение аргумента mode (переданное вызову open(), mkdir() и т. д.), кроме битов, которые отключены маской umask для процесса. Это приводит к тому, что новый файл обладает минимальным ACL-списком.

17.7. Границы реализации списка контроля доступа

Различные реализации файловых систем накладывают ограничения на количество записей в ACL-списке.

Перейти на страницу:

Похожие книги