Access control list linux

Access Control Lists

Access control list (ACL) provides an additional, more flexible permission mechanism for file systems. It is designed to assist with UNIX file permissions. ACL allows you to give permissions for any user or group to any disk resource.

Contents

Installation

The acl package is a dependency of systemd, it should already be installed.

Enable ACL

To enable ACL, the filesystem must be mounted with the acl option. You can use fstab to make it permanent on your system.

There is a possibility that the acl option is already active as default mount option on the filesystem. Btrfs does and Ext2/3/4 filesystems do too. Use the following command to check ext* formatted partitions for the option:

Also check that the default mount option is not overridden, in such case you will see noacl in /proc/mounts in the relevant line.

You can set the default mount options of a filesystem using the tune2fs -o option partition command, for example:

Using the default mount options instead of an entry in /etc/fstab is very useful for external drives, such partition will be mounted with acl option also on other Linux machines. There is no need to edit /etc/fstab on every machine.

Usage

Set ACL

The ACL can be modified using the setfacl command.

To set permissions for a user ( user is either the user name or ID):

To set permissions for a group ( group is either the group name or ID):

To set permissions for others:

To allow all newly created files or directories to inherit entries from the parent directory (this will not affect files which will be copied into the directory):

To remove a specific entry:

To remove the default entries:

To remove all entries (entries of the owner, group and others are retained):

The factual accuracy of this article or section is disputed.

Show ACL

To show permissions, use:

Examples

Set all permissions for user johnny to file named abc :

Change permissions for user johnny :

Remove all ACL entries:

Output of ls command

You will notice that there is an ACL for a given file because it will exhibit a + (plus sign) after its Unix permissions in the output of ls -l .

Execution permissions for private files

The following technique describes how a process like a web server can be granted access to files that reside in a user’s home directory, without compromising security by giving the whole world access.

In the following we assume that the web server runs as the user http and grant it access to geoffrey ‘s home directory /home/geoffrey .

The first step is granting execution permissions for the user http :

Since the user http is now able to access files in /home/geoffrey , others no longer need access:

Читайте также:  Canon f915300 драйвер windows 10

Use getfacl to verify the changes:

As the above output shows, other ‘s no longer have any permissions, but the user http is still able to access the files, thus security might be considered increased.

If you need to give write access for the user http on specific directories and/or files, run:

Источник

Access Control Lists (Русский)

Списки управления доступом (Access Control Lists, ACL) — расширенный, более гибкий механизм прав доступа для файловых систем, разработанный как дополнение к стандартным правам доступа UNIX. ACL позволяет задавать права доступа к объектам на диске для пользователей и групп.

Contents

Установка

Пакет acl уже установлен, так как является зависимостью systemd.

Включение ACL

Для использования ACL файловая система должна быть смонтирована с опцией acl . Файл fstab позволяет настроить постоянное монтирование с данной опцией.

В некоторых файловых системах параметр монтирования acl включён по умолчанию. К таким файловым системам относятся Btrfs и Ext2/3/4. Следующая команда позволяет проверить раздел с файловой системой ext* на наличие параметра acl :

Убедитесь, что используемая по умолчанию опция не была переопределена. Об этом будет свидетельствовать параметр noacl в соответствующей строке файла /proc/mounts .

Задать параметры монтирования файловой системы по умолчанию можно командой tune2fs -o параметр раздел , например:

Это очень удобно при работе с внешними дисками, поскольку такой диск будет монтироваться с опцией acl и на других Linux-машинах. В противном случае придётся редактировать файл /etc/fstab на каждой системе.

Использование

Изменение ACL

Для изменения прав ACL используется команда setfacl.

Задать права пользователя (в качестве пользователь можно использовать имя пользователя или его ID):

Задать права группы (в качестве группа можно использовать имя группы или её ID):

Задать права для остальных:

Настроить наследование новыми файлами и каталогами записей ACL родительского каталога (не относится к файлам/каталогам, которые копируются в каталог):

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

Удалить записи по умолчанию:

Удалить все записи ACL:

The factual accuracy of this article or section is disputed.

Просмотр ACL

Вывести права доступа ACL:

Примеры

Установить все права доступа к файлу abc для пользователя johnny :

Измененить права для пользователя johnny :

Удалить все записи ACL:

Вывод команды ls

Символ + (плюс) после прав доступа Unix в выводе команды ls -l указывает на использование ACL:

Права на выполнение личных файлов

Ниже описано, как процесс вроде веб-сервера может получить доступ к файлам в домашнем каталоге пользователя без ущерба для безопасности.

Будем считать что веб-сервер работает от пользователя http и получает доступ к домашнему каталогу /home/geoffrey пользователя geoffrey .

Санчала предоставим права на выполнение для пользователя http :

Поскольку пользователь http теперь имеет доступ к файлам в /home/geoffrey то безопаснее будет удалить доступ для остальных пользователей:

Проверим изменения с помощью getfacl :

Как видно из вывода, other больше не имеют никаких прав, но пользователь http всё ещё может обращаться к файлам.

Если необходимо будет выдать пользователю http права доступа на запись в определённые файлы/каталоги, выполните:

Источник

Урок 18. Расширенные права доступа Linux с помощью ACL

Что делать, если для файла требуется установить различные права доступа для различных пользователей. Например, файл Report.pdf имеет следующие права доступа:

Допустим пользователю admin необходимо предоставить доступ rw- , а пользователю technician — только r— .

Читайте также:  Windows system32 config regback default

Что делать в этом случае?

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

ACL бывает 2-х типов:

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

Вернемся к нашему файлу Report.pdf и проверим расширенные права доступа. Для проверки ACL выполним следующую команду — getfacl Report.pdf :

Как видно ACL пока не настроен для данного файла. Настроем его исходя из вышеуказанных требований. Для установки расширенных прав используется следующая команда:

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

-m ( —modify=acl ) используется, когда необходимо модифицировать ACL.

u ( user ) означает пользователя.

Теперь установим права доступа setfacl -m u:admin:rw-,u:technician:r— Report.pdf и п роверим что у нас получилось:

Можно ли установить расширенные права для группы и остальных пользователей?

Да, можно. Для этого используются следующие ключи:

setfacl -m g:Class:r Report.pdf — добавление группы с правами чтения

setfacl -m o:r Report.pdf — установка прав чтения для всех остальных

Права для группы можно устанавливать и обычным способом с помощью команды chmod .

А как узнать, что у файла установлены расширенные права доступа?

В выводе команды ls -l мы увидим знак “ + ” в конце списка прав доступа:

А как удалить пользователя или группу из ACL?

Для этого воспользуемся опцией -x ( —remove=acl ). Например, удалим пользователя technician — setfacl -x u:technician Report.pdf

А если необходимо удалить полностью весь ACL с данного файла, то воспользуемся опцией -b ( —remove-all ) — setfacl -b Report.pdf

После удаления ACL исчезает и символ “+”:

Мы рассмотрели ACL прав доступа. Теперь рассмотрим ACL по умолчанию. При создании списков доступа по умолчанию добавляется опция -d ( —default ), кроме того необходимо также указать и стандартные права доступа. Для примера создадим

каталог Homework/ и добавим файл fileBeforeACL и каталог folderBeforeACL . Затем назначим каталогу Homework/ ACL по умолчанию. Каталог Homework/ имеет следующие стандартные права доступа:

Теперь добавим пользователя teacher с правами r-x и назначим каталогу ACL по умолчанию — setfacl -d -m u::rwx,g::r—,o::r—,u:andrey:r-x,u:admin:r-x,u:teacher:r-x Homework/

Проверим что получилось:

Добавились новые поля default . Именно они определяют права по умолчанию для всех вложенных файлов. Чтобы убедиться в этом проверим ACL файлов Homework/ :

Но ведь ничего не изменилось!

Все верно, права по умолчанию применяются только к вновь созданным и скопированным файлам. Создадим файл fileAfterACL и каталог folderAfterACL и посмотрим на их права:

Теперь ACL по умолчанию работает так, как надо.

А для чего используется маска во всех ACL?

Маска говорит о максимально назначенных правах для пользователей. Она вычисляется автоматически при добавлении пользователя.

Например, ACL имеет 2-х пользователей:

Маска будет равна rwx .

Значит у пользователя student тоже будут права rwx ?

Нет, у него будут права r— и не более. Однако, если мы вручную изменим маску на r— , то у пользователя teacher понизятся права до r— , хотя по факту установлены rwx .

То есть маска — это своего рода механизм регулирования прав всех пользователей?

Читайте также:  Gigabyte windows usb installation tool инструкция

А как можно вручную изменить маску?

Командой setfacl -m m:права_доступа файл

Список используемых команд:

getfacl файл — проверка ACL

setfacl -m u:пользователь:права_доступа файл — установка прав доступа для определенного пользователя (владельца)

setfacl -m g:группа:права_доступа файл — установка прав доступа для группы владельцев

setfacl -x u:пользователь файл — исключение пользователя из ACL

setfacl -x g:группа файл — исключение группы из ACL

setfacl -b файл — удаление ACL

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

Источник

Access Control Lists(ACL) in Linux

What is ACL ?
Access control list (ACL) provides an additional, more flexible permission mechanism for file systems. It is designed to assist with UNIX file permissions. ACL allows you to give permissions for any user or group to any disc resource.

Use of ACL :
Think of a scenario in which a particular user is not a member of group created by you but still you want to give some read or write access, how can you do it without making user a member of group, here comes in picture Access Control Lists, ACL helps us to do this trick.

Basically, ACLs are used to make a flexible permission mechanism in Linux.

From Linux man pages, ACLs are used to define more fine-grained discretionary access rights for files and directories.

setfacl and getfacl are used for setting up ACL and showing ACL respectively.

List of commands for setting up ACL :

Modifying ACL using setfacl :
To add permissions for a user (user is either the user name or ID):

To add permissions for a group (group is either the group name or ID):

To allow all files or directories to inherit ACL entries from the directory it is within:

See below image for output :

setfacl and getfacl

View ACL :
To show permissions :

Observe the difference between output of getfacl command before and after setting up ACL permissions using setfacl command.
There is one extra line added for user mandeep which is highlighted in image above.

The above command change permissions from rwx to r-x

Remove ACL :
If you want to remove the set ACL permissions, use setfacl command with -b option.
For example :

remove set permissions

If you compare output of getfacl command before and after using setfacl command with -b option, you can observe that there is no particular entry for user mandeep in later output.

You can also check if there are any extra permissions set through ACL using ls command.

check set acl with ls

Observe the first command output in image, there is extra “+” sign after the permissions like -rw-rwxr–+, this indicates there are extra ACL permissions set which you can check by getfacl command.

Using Default ACL :
The default ACL is a specific type of permission assigned to a directory, that doesn’t change the permissions of the directory itself, but makes so that specified ACLs are set by default on all the files created inside of it. Let’s demonstrate it : first we are going to create a directory and assign default ACL to it by using the -d option:

Источник

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