ACL в Linux: расширенные права доступа для файлов и директорий | SecureFlow

ACL в Linux: расширенные права доступа для файлов и директорий

Постер статьи

Содержание

Когда обычных прав rwx в Linux уже недостаточно — приходит время познакомиться с ACL (Access Control Lists). Это мощный механизм управления доступом, который позволяет более гибко задавать права для конкретных пользователей и групп. Особенно актуально, если один файл должен быть доступен разным пользователям с разными правами.

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

В стандартной системе прав Linux у файла есть только три уровня доступа:

  • Владелец (user)
  • Группа (group)
  • Остальные (others)

Но что делать, если нужно дать доступ не владельцу и не группе, а какому-то другому пользователю? Здесь на помощь приходит ACL.

ACL (Access Control List) — это список, в котором для каждого пользователя или группы указано, какие права они имеют на файл или папку.

Как проверить поддержку ACL в Linux

Большинство современных файловых систем (например, ext4) уже поддерживают ACL. Но если ты не уверен — можно проверить, примонтирована ли файловая система с поддержкой ACL:

mount | grep acl

Если ничего не найдено, попробуй посмотреть fstab:

cat /etc/fstab

Там может быть опция acl, например:

UUID=... / ext4 defaults,acl 0 1

Если acl нигде не отображается, это не значит, что он не работает — в современных дистрибутивах Linux он включён по умолчанию и может даже не быть явно прописан в fstab.

Как установить ACL в Linux

На большинстве дистрибутивов всё уже есть, но если команда getfacl и setfacl не найдена, можно установить нужный пакет.

Ubuntu / Debian

sudo apt update && sudo apt install -y acl

CentOS / RedOS

sudo dnf update -y && sudo dnf install -y acl

ALT Linux

sudo apt-get update -y && sudo apt-get install -y acl

Как посмотреть текущие ACL права

getfacl имя_файла

Пример:

getfacl test.txt

Вывод может выглядеть так:

# file: test/test.txt
# owner: user
# group: user
user::rw-
group::rw-
other::r--

Какие права используются в ACL

ACL использует привычные для Linux флаги прав:

  • rчтение (просмотр содержимого файла или списка файлов в каталоге)
  • wзапись (изменение содержимого файла или создание файлов в каталоге)
  • xисполнение
    • для файлов — возможность запускать как программу
    • для директорий — возможность заходить в папку (cd)

Совет: если ты даёшь доступ к директории, не забудь про x, иначе пользователь не сможет в неё зайти, даже если у него есть права на чтение (r).

Как задать ACL права в Linux

Назначить права пользователю

setfacl -m u:alex:rw report.txt

Расшифровка:

  • -m — модифицировать ACL
  • u:alex:rw — дать пользователю alex права rw

Назначить права группе

setfacl -m g:devs:r report.txt

Как удалить ACL

Удалить конкретные ACL:

setfacl -x u:alex report.txt

Полностью сбросить все ACL:

setfacl -b report.txt

Полезные примеры использования ACL

Дать полный доступ к папке

setfacl -m u:student:rwx /var/data

Дать доступ ко всем файлам внутри папки

setfacl -R -m u:student:rw /var/data

Сделать так, чтобы новые файлы в папке наследовали права

setfacl -d -m u:student:rwx /var/data

-d означает default — такие права применяются ко всем новым файлам и папкам внутри указанной директории.

Посмотреть ACL права всех файлов в папке

getfacl -R /var/data

Как узнать, есть ли у файла ACL?

При выводе ls -l, если у файла установлен ACL, ты увидишь + после прав:

-rw-r--r--+ 1 alex admins 0 Jun 26 13:00 test.txt

Как ACL работает вместе с chmod и chown?

ACL не заменяет классические права доступа — они работают вместе.
Ты всё так же можешь использовать chmod, chown, umask, но при наличии ACL система сначала проверяет его.

Подробнее о классических правах в Linux — читай в отдельной статье

Часто задаваемые вопросы

Чем ACL отличается от chmod?

chmod работает только с владельцем, группой и остальными, а ACL позволяет задавать доступ для конкретных пользователей и групп, которых нет в этих категориях.

Где особенно полезен ACL?

  • В компаниях, где один файл должен использоваться многими пользователями.
  • На файловых серверах.
  • В проектах с несколькими отделами (например, dev и QA), которым нужны разные уровни доступа.

Можно ли использовать ACL для директорий?

Да, и даже можно задать наследуемые права, чтобы новые файлы в папке автоматически получали нужный уровень доступа.

Заключение

ACL — незаменимый инструмент для системного администратора или продвинутого пользователя Linux. Он расширяет стандартную модель прав доступа и позволяет точно управлять, кто и что может делать с файлами и каталогами.

Если ты работаешь в многопользовательской системе или настраиваешь сервер — обязательно научись пользоваться ACL, это сэкономит кучу времени и избавит от сложных костылей с группами.