setfacl.
Updated: MOPS 1.0
Index Return to Main Contents
НАЗВАНИЕ
setfacl - Изменяет списки прав доступа к файлам.СИНТАКСИС
setfacl [-bkndtRY5vh] [ [[-s|-m|-x] acl_spec ...] file ... ] ...
setfacl [-bkndtRY5vh] [ [[-S|-M|-X] acl_file ...] file ... ] ...
setfacl [-t] -B file
ОПИСАНИЕ
Эта утилита изменяет списки прав доступа (ACL) к файлам или директориям. В командной строке за последовательностью команд идет последовательность файлов (за которой, в свою очередь, также может идти последовательность команд и т.д.).
При использовании опций -s, -m и -x должны быть перечислены записи ACL в командной строке. Элементы АCL разделяются одинарными кавычками (`,').
Опции -s и -S устанавливают ACL к файлу или директории. Предыдущий ACL заменяется. Абсолютные элементы ACL воспринимаются как параметры.
Опции -m и -M модифицируют ACL к файлу или директории. Абсолютные, а также относительные элементы ACL воспринимаются как параметры.
Опции -x и -X удаляют элементы из ACL. Только удаляемые элементы без прав доступа воспринимаются как параметры.
При чтении ACL из файла при помощи опций -S, -M и -X команда setfacl принимает множество элементов в формате вывода getfacl. В строке обычно содержится не больше одного элемента ACL, а всё, что следует за символом `#' - это комментарии.
ОПЦИИ
- -b
- Удалять все дополнительные элементы ACL. Сохраняются базовые элементы ACL, то есть биты прав доступа к файлу для владельца, группы-владельца и всех остальных.
- -k
- Удалить ACL по умолчанию. Если такого ACL не существует, то предупреждающее сообщение не выводится.
- -n
- Не пересчитывать маску эффективных прав. Обычно setfacl пересчитывает маску (кроме случая явного задния маски) для того, чтобы включить её в максимальный набор прав доступа элементов, на которые воздействует маска (для всех групп и отдельных пользователей).
- -d
- Все операции применять к ACL-по умолчанию (для директорий). Обычные элементы ACL используются для установки ACL-по умолчанию. Элементы ACL-по умолчанию игнорируются.
- -B
- Восстановить резервную копию прав доступа, созданную командой `getfacl -R' или ей подобной. Все права доступа дерева директорий восстанавливаются, используя этот механизм. Если вводимые данные содержат элементы для владельца или группы-владельца, и команда setfacl выполняется пользователем с именем root, то владелец и группа-владелец всех файлов также восстанавливаются. Эта опция не может использоваться совместно с другими опциями, за исключением опции `-t'.
- -t
- Режим тестирования. Вместо изменения ACL к каким-либо файлам, результирующие ACL выводятся в формате вывода getfacl.
- -R
- Все операции ко всем файлам и директориям применить рекурсивно. Эта опция не может использоваться совместно с опцией `-B'.
- -Y
- Следовать символьным ссылкам. Обычно символьные ссылки на директории пропускаются. Эта опция подразумевает опцию `-R' и она не может использоваться совместно с опцией `-B'.
- -5
- Начать обработку с поддиректорий. Обрабатывать сначала директории, а потом уже их содержимое. Эта опция подразумевает опцию `-R' и она не может использоваться совместно с опцией `-B'.
- -v
- Вывести версию команды setfacl и завершить работу.
- -h
- Вывести справочную информацию.
- --
- Конец опций командной строки. Все остальные параметры интерпретируются как имена файлов, даже если они начинаются с тире.
- -
- Если параметром имени файла является тире, то setfacl считывает список файлов из стандартного потока ввода.
ЭЛЕМЕНТЫ ACL
Утилита setfacl использует следующие форматы элементов ACL:
- [d[efault]:] [u[ser]:]uid [:[+|^]perms]
- Права доступа отдельного пользователя. Если не задан uid, то права доступа владельца файла.
- [d[efault]:] g[roup]:gid [:[+|^]perms]
- Права доступа отдельной группы. Если не задан gid, то права доступа группы-владельца.
- [d[efault]:] m[ask]:[+|^] perms
- Маска эффективных прав.
- [d[efault]:] o[ther]:[+|^] perms
- Права доступа всех остальных.
Элемент ACL является абсолютным, если он содержит поле perms, и является относительным, если он включает один из модификаторов `+' или '^'. Абсолютные элементы могут использоваться в операциях установки или модификации ACL. Относительные элементы могут использоваться только в операции модификации ACL. Права доступа для отдельных пользователя, группы, не содержащие никаких полей после значений uid, gid (поле perms при этом отсутствует), используются только для удаления элементов.
Значения uid и gid задаются именем или числом. Поле perms может быть представлено комбинацией символов r, w, x, - или цифр (0-7).
АВТОМАТИЧЕСКИ СОЗДАННЫЕ ПРАВА ДОСТУПА
Изначально файлы и директории содержат только три базовых элемента ACL для владельца, группы-владельца и всех остальных пользователей. Существует ряд правил, которые следует выполнять:- *
- Не могут быть удалены сразу три базовых элемента. Должен присутствовать хотя бы один.
- *
- Если ACL содержит права доступа для отдельного пользователя или группы, то ACL также должен содержать маску эффективных прав.
- *
- Если ACL содержит какие-либо элементы ACL-по умолчанию, то в последнем должны также присутствовать три базовых элемента (то есть права доступа по умолчанию для владельца, группы-владельца и всех остальных).
- *
- Если ACL-по умолчанию содержит права доступа для отдельных пользователей или групп, то в ACL также должна присутствовать маска эффективных прав.
Для того, чтобы помочь пользователю выполнять эти правила, setfacl создаёт права доступа, используя уже существующие, согласно следующим условиям:
- *
- Если права доступа для отдельного пользователя или группы добавлены в ACL, а маски прав не существует, то создаётся маска с правами доступа группы-владельца.
- *
- Если создан элемент ACL по умолчанию, а трёх базовых элемента не было, тогда делается копия трёх базовых элементов и они добавляются в ACL по умолчанию.
- *
- Если ACL-по умолчанию содержит какие-либо права доступа для конкретных пользователя или группы, и не содержит маску прав доступа по умолчанию, то при создании эта маска будет иметь те же права, что и у группы по умолчанию.
ПРИМЕРЫ
Установить элементы ACL.
- setfacl -s u::rw,g::r,o:-,g:group1:rw file
Предоставить пользователю дополнительные права на чтение.
- setfacl -m u:user1:r file
Добавить права на запись к правам пользователя.
- setfacl -m u:user1:+w file
Отменить права доступа на запись в файл для всех отдельных пользователей и групп с использованием маски эффективных прав.
- setfacl -m m:rx file
Удалять права доступа для отдельной группы из ACL.
- setfacl -x g:group file
Копировать ACL из одного файла в другой.
- getfacl file1 | setfacl -S- file2
Копировать обычные ACL в ACL-по умолчанию.
- getfacl -a dir | setfacl -d -M- dir
Копировать дерево директорий; копировать все ACL из одного дерева в другое (используя командную оболочку bash).
-
cp -r dir1 dir2 && (cd dir1 && getfacl -R .) |
(cd dir2 && setfacl -B-)
СМ. ТАКЖЕ
getfacl(8), chmod(8), acl(5), acl(8).
Index
- НАЗВАНИЕ
- СИНТАКСИС
- ОПИСАНИЕ
- ОПЦИИ
- ЭЛЕМЕНТЫ ACL
- АВТОМАТИЧЕСКИ СОЗДАННЫЕ ПРАВА ДОСТУПА
- ПРИМЕРЫ
- СМ. ТАКЖЕ