Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Linux.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
144.9 Кб
Скачать

8 Права доступа к файлам и каталогам: acl, управление доступом. Использование posix acl

ACL (список контроля доступа) — определяет, кто или что может получать доступ к конкретному объекту, и какие именно операции разрешено или запрещено этому субъекту проводить над объектом.

ACL поддерживается файловыми системами Ext2, Ext3, IBM JFS, ReiserFS, SGI XFS.

Таблица. Компоненты ACL

Entry type

Text form

Owner

user::rwx

Named user

user:name:rwx

Owning group

group::rwx

Named group

group:name:rwx

Mask

mask::rwx

Others

other::rwx

Включение работы с ACL

Для работы с ACL ядро системы должно быть скомпилировано с их поддержкой (в большинстве дистрибутивов по умолчанию). А также при монтировании файловой систетемы должен быть указан параметр acl

mount /dev/sdb1 /mnt -o acl

или для автоматического монтирования это параметр должен быть указан в файле /etc/fstab

/dev/vg0/lv0 /home ext3 defaults,usrquota,acl 0 2

Для работы с ACL используются утилиты getfacl и setfacl

При помощи программы getfacl можно посмотреть список текущих ACL.

getfacl [параметры] файлы

Для установки и удаления ACL используется программа setfacl.

setfacl [параметры] [{-m|-x} ACL] файлы

setfacl [параметры] [{-M|-X} файл] файлы

Для добавления и изменения ACL используется параметр –m.

После –m записывается ACL. Формат записи достаточно простой. Если первый символ u, то добавляются права для указанного после двоеточия пользователя. Если первый символ g — определяются права для группы. Если m — определяется маска. Сами права записываются в символьном виде.

В списке ACL присутствует слово mask. Это не пользователь, а специальная возможность, ограничивающая права доступа. Маска является фильтром, определяющим максимально возможные права доступа. После введения макси напротив пользователей и групп появилось поле, указывающее реальные права доступа. На права владельца, группы и «всех остальных» маска не влияет. Маска влияет только на дополнительных пользователей и дополнительные группы. Для того, чтобы маска заработала, ее необходимо определить явно при помощи setfacl. Иначе она будет «плавающей» и не будет выполнять свои функции. Маску всегда определяют самой последней, после указания прав доступа всех пользователей и групп, иначе она вновь станет «плавающей» (не влияет на установленные права).

Если у файла установлены ACL, определение прав доступа происходит в том порядке, в котором они выводятся программой getfacl.

Программа setfacl предоставляет возможность скопировать ACL одного файла на другой файл. Для этих целей служит параметр --set-file. Например, необходимо скопировать списки доступа файла test в файл newtest. Тогда командная строка будет выглядеть следующим образом:

$ getfacl test | setfacl --set-file=- newtest

Удаление элементов из списка ACL происходит при помощи параметра –x.

$ setfacl -x u:user1 test

Рассмотрим возможные форматы записи ACL.

[d[efault]:][u[ser]:][пользователь][:[+|^]права]

[d[efault]:] g[roup]:[группа][:[+|^]права]

[d[efault]:] m[ask][:[+|^]права]

[d[efault]:] o[ther][:[+|^]права]

default — устанавливает ACL по умолчанию. Имеет смысл только для директории. Если создавать файлы в директории, у которой установлен ACL по умолчанию, то значения ACL копируются во вновь создаваемые файлы.

Если при написании ACL права доступа начинаются с символа +, то эти права добавляются к уже существующим. Если в начале описания прав стоит символ ^, то их значение отнимаются от существующих прав доступа.

У программы setfacl есть еще две интересные опции: –M и –X. Первая изменяет или добавляет ACL, вторая удаляет ACL. В отличии от –m и –x, список ACL передается не в командной строке, а в отдельном файле. Формат файла соответствует выводу программы getfacl.

$ getfacl newtest > aclfile

Теперь установим ACL, записанные в файле aclfile, на файл test.

$ setfacl -M aclfile test

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]