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