Короткий ответ
Стандартная модель прав позволяет задать права только для одного владельца и одной группы; когда нужно дать разные права нескольким конкретным пользователям или группам на один и тот же файл или каталог (например, трём разным командам с разным уровнем доступа), используют POSIX ACL через setfacl для установки и getfacl для просмотра.
Как это работает подробнее
ACL расширяют классическую модель, добавляя список дополнительных записей (user:имя:права, group:имя:права) поверх стандартных владельца/группы/остальных; при проверке доступа ядро учитывает совпадающую ACL-запись точнее, чем обычный механизм, что требует поддержки ACL в самой файловой системе (обычно включено по умолчанию в ext4/xfs с нужными опциями монтирования).
Пример кода
commands.sh
setfacl -m u:alice:rwx /srv/shared/project
setfacl -d -m g:devteam:rx /srv/shared/project
getfacl /srv/shared/projectЧто использовать на практике
- Практика. ACL особенно полезны на общих каталогах, где несколько команд или сервисных аккаунтов должны иметь разный доступ без создания отдельной группы на каждое сочетание прав; также полезны default ACL на каталоге (setfacl -d), чтобы новые файлы внутри автоматически наследовали нужные права без ручного chmod после каждого создания.
Подводные камни
- Риск. Частая ошибка — настроить ACL на файле, но забыть про default ACL на родительском каталоге, из-за чего новые файлы, создаваемые внутри, получают только стандартные права, а не ожидаемые ACL-права.