Ответ
ACL (Access Control Lists, списки контроля доступа) в Linux — это расширение стандартной модели прав доступа user/group/others (rwx). ACL позволяет назначать права на файлы и каталоги для произвольного количества пользователей и групп, что необходимо в сложных многопользовательских средах или при развертывании сервисов.
Основные команды:
- Установка прав:
setfacl -m u:jenkins:rwx,d:u:jenkins:rwx /opt/deploy/-m— modify (изменить ACL).u:jenkins:rwx— дать пользователюjenkinsправа на чтение, запись и выполнение.d:u:jenkins:rwx— установить правило по умолчанию для новых файлов в этом каталоге.
- Просмотр прав:
getfacl /opt/deploy/ - Удаление конкретной записи:
setfacl -x u:jenkins /opt/deploy/ - Удаление всех ACL:
setfacl -b /opt/deploy/
Практическое применение в DevOps:
- Доступ для сервисных пользователей: Веб-серверу (
www-data) может требоваться доступ на запись в каталог загрузок, принадлежащий другому пользователю, без изменения владельца или основной группы файла. - Совместная работа в каталогах: Несколько разработчиков или CI/CD-агентов (Jenkins, GitLab Runner) могут иметь разные права в общем рабочем каталоге.
- Более тонкое управление, чем sudo: Вместо выдачи полного sudo можно дать через ACL право на запись в конкретный системный конфиг.
Важно: Файловая система должна быть смонтирована с опцией acl (по умолчанию в ext4, xfs). Проверить можно командой tune2fs -l /dev/sda1 | grep "Default mount options".
Ответ 18+ 🔞
А, слушай, вот тема, которая в админской жизни постоянно всплывает, как неотмываемое пятно на белой футболке. ACL, списки контроля доступа. Ну, стандартные права — это, конечно, классика, user/group/others, но они порой тупые, как пробка, понимаешь? Как будто на дворе 2002-й год, и у тебя в системе всего три человека. А на деле? Сервисов, пользователей, скриптов — овердохуища. Вот тут ACL и выручает, потому что позволяет навесить права буквально на кого угодно и сколько угодно.
Основные команды, без которых ты просто мартышлюшка:
- Навесить права:
setfacl -m u:jenkins:rwx,d:u:jenkins:rwx /opt/deploy/-m— это модифицировать, то есть "вмандить" новые правила.u:jenkins:rwx— вот тут мы говорим: "Слушай, чувак jenkins, вот тебе права читать, писать и запускать, делай что хочешь".d:u:jenkins:rwx— а это, ёпта, магия! Правило по умолчанию. Любой новый файл в этой папке автоматом получит такие же права для Дженкинса. Красота же!
- Посмотреть, что наворотил:
getfacl /opt/deploy/. Откроется вся подноготная, кто и что может. - Удалить конкретного нахлебника:
setfacl -x u:jenkins /opt/deploy/. Всё, отозвали пропуск у этого пидараса шерстяного. - Устроить тотальную зачистку:
setfacl -b /opt/deploy/. Просто выносит все ACL-правила к хуям. Чисто, как у младенца.
Где это в работе пригождается, а?
- Доступ для сервисных уродов: Вот сидит у тебя веб-сервер
www-data, и ему надо писать в каталог загрузок, который принадлежит другому юзеру. Менять владельца — геморрой, давать права всем (others) — терпения ноль, ебать. ACL решает всё одним махом: дал права толькоwww-dataи спи спокойно. - Совместная работа в одной папке: Представь, несколько разработчиков или этих... CI/CD-агентов (Jenkins, GitLab Runner) копошатся в одном месте. Одному — читать, другому — писать, третьему — только смотреть. ACL позволяет развести их по углам, чтобы не бздели и не мешали друг другу.
- Альтернатива вседозволенному sudo: Вместо того чтобы давать человеку
sudoна всё, что шевелится (а это доверия ебать ноль), можно через ACL разрешить ему писать только в один конкретный конфиг. Безопаснее и спокойнее.
Но, внимание, важный момент, про который все забывают! Файловая система должна это поддерживать, быть смонтирована с опцией acl. В современных (ext4, xfs) обычно так и есть, но проверить — святое дело. Команда tune2fs -l /dev/sda1 | grep "Default mount options" тебе в помощь. Если опции acl нет — сам от себя охуеешь, когда ничего не заработает. Так что сначала проверь, а потом уже взъёбывайся с настройками.