Что такое ACL в Linux?

«Что такое ACL в Linux?» — вопрос из категории Linux, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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:

  1. Доступ для сервисных пользователей: Веб-серверу (www-data) может требоваться доступ на запись в каталог загрузок, принадлежащий другому пользователю, без изменения владельца или основной группы файла.
  2. Совместная работа в каталогах: Несколько разработчиков или CI/CD-агентов (Jenkins, GitLab Runner) могут иметь разные права в общем рабочем каталоге.
  3. Более тонкое управление, чем sudo: Вместо выдачи полного sudo можно дать через ACL право на запись в конкретный системный конфиг.

Важно: Файловая система должна быть смонтирована с опцией acl (по умолчанию в ext4, xfs). Проверить можно командой tune2fs -l /dev/sda1 | grep "Default mount options".