- Фундаментальные основы Linux. Часть VIII. Механизмы безопасной работы с файлами
- Глава 32. Списки контроля доступа
- Параметр acl в файле /etc/fstab
- Утилита getfacl
- Утилита setfacl
- Удаление элемента списка контроля доступа
- Удаление всего списка контроля доступа
- Маска прав списка контроля доступа
- Приложение eiciel
- Access Control Lists (Русский)
- Contents
- Установка
- Включение ACL
- Использование
- Изменение ACL
- Просмотр ACL
- Примеры
- Вывод команды ls
- Права на выполнение личных файлов
- Списки контроля доступа (ACL) в Linux
- Урок 18. Расширенные права доступа Linux с помощью ACL
Фундаментальные основы Linux. Часть VIII. Механизмы безопасной работы с файлами
Глава 32. Списки контроля доступа
Стандартных прав доступа Unix может быть недостаточно в случае развертывании систем в некоторых организациях. В данной главе описываются списки контроля доступа ( access control lists или acls ), предназначенные для дополнительной защиты файлов и директорий от несанкционированного доступа.
Параметр acl в файле /etc/fstab
Утилита getfacl
Утилита setfacl
Запись или модификация списков контроля доступа может осуществляться с помощью утилиты /usr/bin/setfacl . В примерах ниже показана методика модификации списка контроля доступа к файлу с именем file33 с помощью утилиты setfacl .
Удаление элемента списка контроля доступа
Обратите внимание на то, что в случае указания элемента списка контроля доступа к файлу без использования символа u (указывающего на соответствие учетной записи пользователя) или g (указывающего на соответствие группе пользователей), по умолчанию будет рассматриваться элемент списка контроля доступа к файлу , соответствующий учетной записи пользователя.
Удаление всего списка контроля доступа
Маска прав списка контроля доступа
Маска прав списка контроля доступа описывает максимальные эффективные права доступа для любого из элементов этого списка . Данная маска рассчитывается каждый раз, когда вы используете утилиту setfacl или chmod .
Приложение eiciel
Пользователи настольных систем могут отдать предпочтение приложению eiciel , которое является инструментом с графическим интерфейсом для управления списками контроля доступа .
Источник
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 права доступа на запись в определённые файлы/каталоги, выполните:
Источник
Списки контроля доступа (ACL) в Linux
Что такое ACL?
Список контроля доступа (ACL) предоставляет дополнительный, более гибкий механизм доступа для файловых систем. Это разработано, чтобы помочь с разрешениями файла UNIX. ACL позволяет вам давать разрешения для любого пользователя или группы на любой ресурс диска.
Использование ACL:
Подумайте о сценарии, в котором конкретный пользователь не является членом созданной вами группы, но все же вы хотите предоставить некоторый доступ для чтения или записи, как вы можете сделать это, не делая пользователя членом группы, вот как это выглядит на рисунке Списки контроля доступа , ACL помогает нам сделать этот трюк.
По сути, ACL используются для создания гибкого механизма разрешений в Linux.
На страницах руководства Linux списки ACL используются для определения более детальных прав доступа к файлам и каталогам.
setfacl и getfacl используются для настройки ACL и отображения ACL соответственно.
Список команд для настройки ACL:
Модификация ACL с использованием setfacl:
Чтобы добавить разрешения для пользователя (пользователь является либо именем пользователя, либо идентификатором):
Чтобы добавить разрешения для группы (группа является либо именем группы, либо идентификатором):
Чтобы разрешить всем файлам или каталогам наследовать записи ACL из каталога, в котором он находится:
Смотрите изображение ниже для вывода:
setfacl и getfacl
Просмотр ACL:
Чтобы показать разрешения:
Обратите внимание на разницу между выводом команды getfacl до и после настройки разрешений ACL с помощью команды setfacl .
Для пользователя mandeep добавлена еще одна строка, которая выделена на изображении выше.
Приведенная выше команда меняет права доступа с rwx на rx
Удалить ACL:
Если вы хотите удалить установленные разрешения ACL, используйте команду setfacl с параметром -b.
Например :
удалить установленные разрешения
Если вы сравните выходные данные команды getfacl до и после использования команды setfacl с параметром -b, вы увидите, что в последующем выводе нет конкретной записи для пользователя mandeep.
Вы также можете проверить наличие дополнительных прав доступа через ACL с помощью команды ls.
проверить набор acl с помощью ls
Обратите внимание на вывод первой команды в изображении, после дополнительных разрешений, таких как -rw-rwxr– + , есть дополнительный знак «+» , это указывает на наличие дополнительных установленных полномочий ACL, которые вы можете проверить с помощью команды getfacl.
Использование ACL по умолчанию:
ACL по умолчанию — это определенный тип разрешений, назначаемых каталогу, который не изменяет разрешения самого каталога, но делает так, что указанные ACL устанавливаются по умолчанию для всех файлов, созданных в нем. Давайте продемонстрируем это: сначала мы собираемся создать каталог и назначить ему ACL по умолчанию, используя опцию -d:
Источник
Урок 18. Расширенные права доступа Linux с помощью ACL
Что делать, если для файла требуется установить различные права доступа для различных пользователей. Например, файл Report.pdf имеет следующие права доступа:
Допустим пользователю admin необходимо предоставить доступ rw- , а пользователю technician — только r— .
Что делать в этом случае?
Понятное дело, что стандартные механизмы распределения прав доступа здесь не помогут — они не настолько гибкие. И тут на помощь приходит технология списков доступа (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 .
То есть маска — это своего рода механизм регулирования прав всех пользователей?
А как можно вручную изменить маску?
Командой 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:права_доступа файл — изменение маски
Источник