setfacl
изменяет ACL к файлам или каталогам. В командной строке за последовательностью команд идет последовательность файлов (за которой, в свою очередь, также может идти последовательность команд и так далее).
setfacl
[-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] <ФАЙЛ> …
setfacl
--restore=file
-b
— удалить все разрешенные записи ACL;
-k
— удалить ACL по умолчанию;
-n
— не пересчитывать маску эффективных прав, обычно setfacl
пересчитывает маску (кроме случая явного задания маски) для того, чтобы включить ее в максимальный набор прав доступа элементов, на которые воздействует маска (для всех групп и отдельных пользователей);
-d
— применить ACL по умолчанию;
-R
— для подкаталогов рекурсивно;
-L
— переходить по символическим ссылкам на каталоги (имеет смысл только в сочетании с -R
);
-P
— не переходить по символическим ссылкам на каталоги (имеет смысл только в сочетании с -R
);
-L
— следовать по символическим ссылкам, даже если они не указаны в командной строке;
-P
— не следовать по символическим ссылкам, даже если они указаны в командной строке;
--mask
— пересчитать маску эффективных прав;
-m
— изменить текущий ACL для файла;
-M
— прочитать записи ACL для модификации из файла;
-x
— удалить записи из ACL файла;
-X
— прочитать записи ACL для удаления из файла;
--restore=file
— восстановить резервную копию прав доступа, созданную командой getfacl –R
или ей подобной. Все права доступа дерева каталогов восстанавливаются, используя этот механизм. В случае если вводимые данные содержат элементы для владельца или группы-владельца, и команда setfacl
выполняется пользователем с именем root, то владелец и группа-владелец всех файлов также восстанавливаются. Эта опция не может использоваться совместно с другими опциями за исключением опции --test
;
--set=acl
— установить ACL для файла, заменив текущий ACL;
--set-file=file
— прочитать записи ACL для установления из файла;
--test
— режим тестирования (ACL не изменяются).
--set
, -m
и -x
должны быть перечислены записи ACL в командной строке. Элементы ACL разделяются одинарными кавычками.
-set-file
, -M
и -X
команда setfacl
принимает множество элементов в формате вывода команды getfacl
. В строке обычно содержится не больше одного элемента ACL.
setfacl
использует следующие форматы элементов ACL:
[d[efault]:] [u[ser]:]uid [:perms]
[d[efault]:] g[roup]:gid [:perms]
[d[efault]:] m[ask][:] [:perms]
[d[efault]:] o[ther][:] [:perms]
setfacl
создает права доступа, используя уже существующие, согласно следующим условиям:
test.txt
, принадлежащего пользователю liza и группе docs, так, чтобы:
$Установить разрешения (от пользователя liza):ls -l test.txt
-rw-r-r-- 1 liza docs 8 янв 22 15:54 test.txt $getfacl test.txt
# file: test.txt # owner: liza # group: docs user::rw- group::r-- other::r--
$Просмотреть разрешения (от пользователя liza):setfacl -m u:ivan:rw- test.txt
$setfacl -m u:misha:--- test.txt
$ getfacl test.txt
# file: test.txt
# owner: liza
# group: docs
user::rw-
user:ivan:rw-
user:misha:---
group::r--
mask::rw-
other::r--
Примечание
ls -l
указывает на использование ACL:
$ ls -l test.txt
-rw-rw-r--+ 1 liza docs 8 янв 22 15:54 test.txt