Удалить права acl linux

Системное администрирование Linux

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

Новый ресурс

Для примера допустим у вас в системе есть две группы admins и managers, а также два пользователя alexei и petr.

Создадим директорию Managers для доступа на чтение и запись пользователям, входящим в группу managers.

setfacl -m d:g:managers:rwx,g:managers:rwx Managers

Первая команда создаст директорию с правами чтения выполнения и изменения содержимого для пользователя root.
Второй командой мы установим те же права для пользователей группы managers.

Файлы и директории, создаваемые пользователями этой группы, либо root-ом, будут наследовать атрибуты доступа.

Просмотр прав доступа

Увидеть права доступа из консоли можно выполнив команду:

Программа выведет следующий текст:

# owner: root # group: root user::rwx group::--- group:managers:rwx mask::rwx other::--- default:user::rwx default:group::--- default:group:managers:rwx default:mask::rwx default:other::---

Управление доступом

Для управлением доступом используется команда setfacl.
Для модификации или добавления правила используется параметр -m.

Если пользователь пропущен, то права назначаются владельцу файла.
Если группа пропущена, то права назначаются группе-владельцу файла.

Добавить право на чтение/запись файла secretinfo пользователям alexei и petr:

setfacl -m user:alexei:rw,u:petr:rw secretinfo

Права по умолчанию

Для директорий можно указать ACL права, которые будут автоматически добавляться для файлов и директорий, создаваемых в ней.
Для этого используется идентификатор default или параметр -d. На саму директорию права указанные в default не распространяются.

Для файлов и директорий, создаваемых в директории managerdata, добавить право чтение/записи для пользователя petr.

setfacl -m default:user:iivanov:rw managerdata

Рекурсивная установка прав

Для установки прав для всех файлов и директорий внутри директории используется параметр -R.
Так как для того, чтобы читать файл необходимы права на чтение r, а для того чтобы читать директорию необходимы права на чтение и выполнение rx, то можно при указании прав вместо х указывать X.
Флаг X устанавливает права на выполнение только для директорий и файлов, которые уже имеют право на выполнение.
Флаг X вычисляется на момент запуска setfacl, поэтому в default правилах она интерпретируется как x.

Разрешить пользователю alexei читать все файлы и просматривать директории в folder.

setfacl -R -m d:u:alexei:rwx,u:apetrov:rwX folder

setfacl -R -m d:u:alexei:rw,u:apetrov:rwX folder

Обе команды имеют недостаток, который проявляется при создании новых файлов и директорий.
Разница в том, что в первом случае пользователь alexei получит право на выполнение всех новых файлов создаваемых в folder и вложенных директориях,
а во втором случае пользователь не сможет просматривать новые директории.

Читайте также:  Firefox esr для linux

Удаление прав

Удалить права доступа к файлу secretfile для пользователя petr.

setfacl -x u:petr secretfile

Удалить права доступа ко всем файлам и директориям внутри folder для пользователя alexei.

setfacl -R -x u:alexei folder

Очистка правил

Для удаления всех ACL правил используется опция -b. Ее также можно использовать совместно с -m, для того, чтобы заместить права.

Удалить все ACL правила и разрешить пользователю petr читать secretfile.

setfacl -b -m u:petr:r secretfile

Эффективная маска

Эффективная маска используется для ограничения определенного действия для всех пользователей и групп описанных в ACL. То есть можно например запретить всем писать в файл установив эффективную маску r-x.

Иногда эффективная маска вычисляется автоматически (например при действии chmod, а также при создании файла, так как применяется права umask). Для отмены маски ее следует установить в значение rwx.

Порядок определения доступа к файлу

Может ли пользователь выполнить действие над файлом или директорией определяются следующим образом.

  1. Используются права владельца, если пользователь им является.
  2. Используются права, указанные конкретно для этого пользователя.
  3. Если действие разрешено хотя бы для одной из группы в которую входит пользователь.
  4. Если пользователь не входит ни в одну группу описанную в ACL, то используются права для other.

Источник

Sysadminium

В этой статье разберём расширенные права доступа к файлам в Linux, которые называются Access Control List / списки контроля доступа (ACL).

О системе прав ACL в Linux

В этой статье мы познакомились со стандартной системой прав в Linux. Но может возникнуть ситуация, что к файлу с правами: rw-r—r— user1 user1 , нужно дать доступ пользователю admin с правами rw- , и пользователю user2 c правами r— .

Стандартная система прав здесь не поможет. Для решения подобной задачи применяют ACL (Access Control List / списки контроля доступа).

  • права доступа к файлу — определяет доступ к файлу или каталогу;
  • ACL default — назначается только каталогу, при этом создаваемые файлы в этом каталоге будут наследовать такие права.

Подготовка системы к практике

Давайте для начала создадим трёх новых пользователей в системе. Так как это административное действие то в Ubuntu я использую sudo, а в Debian переключусь на пользователя root:

alex@ubu:~$ sudo useradd -m -s /bin/bash admin alex@ubu:~$ sudo useradd -m -s /bin/bash user1 alex@ubu:~$ sudo useradd -m -s /bin/bash user2 alex@deb:~$ su - Пароль: root@deb:~# useradd -m -s /bin/bash admin root@deb:~# useradd -m -s /bin/bash user1 root@deb:~# useradd -m -s /bin/bash user2

Про создание пользователей я писал в этой статье.

Читайте также:  Терминал linux просмотр файла

Установим пользователям пароли:

alex@ubu:~$ sudo passwd admin New password: Retype new password: passwd: password updated successfully alex@ubu:~$ sudo passwd user1 New password: Retype new password: passwd: password updated successfully alex@ubu:~$ sudo passwd user2 New password: Retype new password: passwd: password updated successfully root@deb:~# passwd admin Новый пароль: Повторите ввод нового пароля: passwd: пароль успешно обновлён root@deb:~# passwd user1 Новый пароль: Повторите ввод нового пароля: passwd: пароль успешно обновлён root@deb:~# passwd user2 Новый пароль: Повторите ввод нового пароля: passwd: пароль успешно обновлён

Дальше все примеры для Ubuntu я показывать не буду, там всё аналогично. Единственное не забывайте при административных действиях использовать sudo перед командами.

Под пользователем user1 создадим каталог test и в нем файл file1.txt:

root@deb:~# su - user1 user1@deb:~$ mkdir test user1@deb:~$ touch test/file1.txt user1@deb:~$ exit выход root@deb:~#

На этом подготовка системы закончена, мы сделали трёх пользователей: admin, user1 и user2. И в домашнем каталоге пользователя user1 создали каталог test в котором создали файл file1.txt.

Работа с ACL в Linux

Для начала установим систему acl, про установку дополнительных пакетов в систему поговорим позже, просто выполните:

Чтобы посмотреть acl права на файл или каталог используют команду getfacl (её может выполнить любой пользователь без административных прав):

root@deb:~# getfacl /home/user1/test/file1.txt getfacl: Removing leading '/' from absolute path names # file: home/user1/test/file1.txt # owner: user1 # group: user1 user::rw- group::r-- other::r--

Для данного файла acl пока не настроен. Поэтому мы видим стандартные права, где владелец имеет права на чтение и запись, а группа и все остальные только на чтение.

Для установки acl прав используем команду setfacl (выполнять эту команду может только root пользователь, или пользователь с sudo правами):

  • опция -m используется когда нужно модифицировать права;
  • дальше, если мы устанавливаем права для пользователя, то ставим символ u, для группы будем использовать символ g;
  • затем, после двоеточия, имя пользователя;
  • дальше, после двоеточия, права доступа для этого пользователя;
  • и наконец указываем имя файла.

Вот примерное использование setfacl:

# setfacl -m u:пользователь:права_доступа файл # setfacl -m g:группа:права_доступа файл

Вот как решается описанная в самом начале задача, используя acl:

root@deb:~# setfacl -m u:admin:rw-,u:user2:r-- /home/user1/test/file1.txt root@deb:~# getfacl /home/user1/test/file1.txt getfacl: Removing leading '/' from absolute path names # file: home/user1/test/file1.txt # owner: user1 # group: user1 user::rw- user:admin:rw- user:user2:r-- group::r-- mask::rw- other::r--

При этом если мы посмотрим командой ls -l права, то заметим знак «+«, который и указывает что файл имеет дополнительные acl права:

root@deb:~# ls -l /home/user1/test/file1.txt -rw-rw-r--+ 1 user1 user1 0 янв 20 14:38 /home/user1/test/file1.txt

Для группы владельцев и всех остальных также можно устанавливать acl права таким образом:

setfacl -m g:groupname:rwx setfacl -m o:rwx

Для того чтобы удалить пользователя или группу из acl нужно использовать команду setfacl с опцией -x, например вот так:

root@deb:~# setfacl -x u:user2 /home/user1/test/file1.txt root@deb:~# getfacl /home/user1/test/file1.txt getfacl: Removing leading '/' from absolute path names # file: home/user1/test/file1.txt # owner: user1 # group: user1 user::rw- user:admin:rw- group::r-- mask::rw- other::r--

Как видим у пользователя user2 не осталось acl прав к этому файлу. Таким же образом можем удалить группу:

Читайте также:  Как установить atom linux

Для того чтобы удалить все acl права с файла используем команду setfacl с опцией -b:

root@deb:~# setfacl -b /home/user1/test/file1.txt root@deb:~# getfacl /home/user1/test/file1.txt getfacl: Removing leading '/' from absolute path names # file: home/user1/test/file1.txt # owner: user1 # group: user1 user::rw- group::r-- other::r--

Наследование ACL

Теперь разберемся с acl default. Устанавливаются такие права только на каталог. Для установки таких прав используется команда setfacl с опцией -d:

root@deb:~# setfacl -d -m u::rwx,g::rw-,o::r,u:admin:rw /home/user1/test/ root@deb:~# getfacl /home/user1/test/ getfacl: Removing leading '/' from absolute path names # file: home/user1/test/ # owner: user1 # group: user1 user::rwx group::r-x other::r-x default:user::rwx default:user:admin:rw- default:group::rw- default:mask::rw- default:other::r--

Добавились новые поля default, которые определяют права по умолчанию для всех новых файлов в этом каталоге.

Теперь, для проверки, создадим новый файл и посмотрим на его права:

root@deb:~# touch /home/user1/test/file2.txt root@deb:~# getfacl /home/user1/test/file2.txt getfacl: Removing leading '/' from absolute path names # file: home/user1/test/file2.txt # owner: root # group: root user::rw- user:admin:rw- group::rw- mask::rw- other::r--

Выше я создал файл из под пользователя root, но пользователь admin получил к нему доступ, так как он указан в правах default этого каталога.

Маска ACL

Кроме прав доступа и прав по умолчанию в acl присутствуем маска. Маска говорит о максимально возможных назначенных правах для пользователей. Она вычисляется автоматически при добавлении пользователя. Т.е. мы можем одному пользователю дать права rw- , второму r— , маска при этом станет rw- .

Маску можно изменить командой setfacl -m m:права_доступа файл например:

root@deb:~# touch /home/user1/test/file2.txt root@deb:~# setfacl -m m:r /home/user1/test/file2.txt root@deb:~# getfacl /home/user1/test/file2.txt getfacl: Removing leading '/' from absolute path names # file: home/user1/test/file2.txt # owner: root # group: root user::rw- user:admin:rw- #effective:r-- group::rw- #effective:r-- mask::r-- other::r--

По значению effective:r— мы видим что права изменились.

Использовать это можно, если мы дали различные права на файл разным пользователям, а затем всех решили ограничить.

Рекурсивное назначение прав

Для установки рекурсивно прав на все файлы в каталоге и подкаталогах используется опция -R, её же можно использовать при удалении прав:

setfacl -R -m u:пользователь:права_доступа каталог setfacl -R -b каталог

Источник

Оцените статью
Adblock
detector