🐧 Linux Junior. Программирование под Linux.
3.2K subscribers
169 photos
2 videos
1 file
101 links
Канал для программистов работающих с Linux.
Почти все Python девелоперы с нами ну и другие тоже подтянутся.

По рекламе: @jannytg
@anothertechrock
Download Telegram
🔥 Расширенные права доступа (ACL) в Linux

Обычная модель прав в Linux проста: есть владелец, группа и все остальные. Для большинства случаев этого хватает, но не всегда.

А что если нужно, чтобы user1 и user2 имели разные права к одному и тому же файлу? Или чтобы у определённого пользователя был доступ только к подкаталогу?
Тут на сцену выходит ACL — Access Control List.

✔️ Что такое ACL

ACL позволяет задавать права не только для владельца и группы, а для любого пользователя или группы. Это похоже на “дополнительный слой” поверх обычных разрешений.

🔍 Проверка наличия ACL

Посмотрим на файл:

ls -l report.txt
-rw-r-----+ 1 marina staff 2048 Oct 22 11:20 report.txt


Плюсик + после прав (rw-r-----+) говорит, что у файла есть ACL.

Подробнее:

getfacl report.txt


Результат может выглядеть так:

# file: report.txt
# owner: marina
# group: staff
user::rw-
user:john:r--
group::r--
mask::r--
other::---


Мы видим, что кроме владельца и группы, есть отдельная запись для пользователя john.

✏️ Назначение ACL

Выдать пользователю john права на чтение файла:

setfacl -m u:john:r file.txt


Выдать группе designers права на запись:

setfacl -m g:designers:rw file.txt


Удалить конкретную запись ACL:

setfacl -x u:john file.txt


Сбросить все расширенные права (оставив только базовые chmod-права):

setfacl -b file.txt


🗂 Установка ACL по умолчанию для каталога

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

Пример: всем пользователям группы team разрешить читать и писать в каталог /srv/docs:

setfacl -d -m g:team:rw /srv/docs


Теперь любой файл, созданный внутри /srv/docs, получит те же права.

🟢 Полезно знать

mask в выводе getfacl — это "ограничитель" максимальных разрешений ACL. Даже если пользователю выданы права rwx, но в качестве mask стоит rw-, то выполнение будет заблокировано.

Маску можно менять отдельно:

setfacl -m m:rw file.txt


⚙️ Пример из жизни

Пусть в /var/www/project лежит сайт, над которым работают два человека: admin и editor. Админ имеет полный доступ, а редактор — только чтение и запись контента:

chown -R admin:admin /var/www/project
setfacl -R -m u:editor:rw /var/www/project/content
setfacl -d -m u:editor:rw /var/www/project/content


Первая команда setfacl назначает права доступа для уже существующих файлов и каталогов в /var/www/project/content. Вторая устанавливает шаблон прав, который унаследуют будущие файлы и папки, созданные в /var/www/project/content.

Теперь editor сможет редактировать файлы в /content (в том числе и все созданные в дальнейшем), но не затронет код приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM