Вики / Пользователи и права
ACL (расширенные права)
Гибкие права сверх rwx — getfacl/setfacl, права для нескольких пользователей.
Классические права (см. permissions) задают доступ только владельцу, одной группе и остальным. ACL позволяют выдать права конкретным пользователям и группам сверх этого.
Признак ACL в ls -l — символ +: -rw-rw----+.
getfacl file # показать ACL
getfacl -R dir > acl.bak # сохранить ACL дерева (бэкап перед изменениями)
setfacl -m u:alice:rw file # дать alice rw (-m = modify)
setfacl -m g:devs:rx dir # группе devs rx
setfacl -m u:alice:rw,g:devs:r f # несколько записей за раз
setfacl -x u:alice file # убрать ACL-запись для alice
setfacl -b file # снять ВСЕ ACL
setfacl -R -m u:alice:rX dir # рекурсивно (X = x только каталогам/исполняемым)
setfacl --restore=acl.bak # восстановить из getfacl -R
# default ACL — наследование для НОВЫХ файлов в каталоге:
setfacl -d -m u:alice:rw dir # новые файлы внутри получат rw для alice
setfacl -k dir # удалить default ACL
В getfacl строка mask:: задаёт максимум эффективных прав для именованных
пользователей/групп (всех, кроме владельца и other). Если права «есть», но не
работают — смотри mask:
getfacl file # строки с пометкой #effective:r-- = урезано маской
setfacl -m m::rwx file # поднять маску до rwx
setfacl обычно пересчитывает mask автоматически; --no-mask отключает это.
Права выглядят верно, но доступа нет / есть лишний
Действуют ACL. Смотри getfacl (а не только ls -l). Символ + в ls -l
подсказывает наличие ACL.
Именованному пользователю дал rw, а он не пишет
Маска урезает: getfacl покажет #effective:r--. Подними setfacl -m m::rwx.
ACL не наследуются новыми файлами
Нужны default ACL на каталоге (setfacl -d -m ...). Обычные ACL не наследуются;
default применяется только к создаваемым после этого файлам.
ACL «пропали» после копирования/бэкапа
cp не переносит ACL — используй cp -a/--preserve=all, rsync -A, tar --acls.
Бэкап ACL: getfacl -R, восстановление: setfacl --restore=.
ФС не поддерживает ACL
Нужна опция монтирования acl (на ext4 обычно по умолчанию). Проверь tune2fs -l/
опции в mount.
getfacl file # показать ACL (+ в ls -l)
setfacl -m u:user:rw file # дать пользователю
setfacl -m g:grp:rx dir # дать группе
setfacl -d -m u:user:rw dir # наследование (default)
setfacl -m m::rwx file # поднять mask
setfacl -b file # снять все ACL
getfacl -R dir > acl.bak ; setfacl --restore=acl.bak # бэкап/восстановление
См. также
- Права доступа (rwx, SUID, sticky) — Пользователи и права
- chmod / chown — Пользователи и права