Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

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

Для начала немного теории (лучше поздно, чем никогда...:)).

Список контроля доступа имеется отдельно для каждого inode'а и состоит из нескольких компонентов. Первые три являются копией стандартных (основных) прав доступа к файлу. Они содержатся в единственном экземпляре в ACL и есть у каждого файла в системе изначально:

ACL_USER_OBJ
Режим доступа к файлу пользователя-владельца.
ACL_GROUP_OBJ
Режим доступа к файлу группы-владельца.
ACL_OTHER
Режим доступа к файлу остальных пользователей.

Следующие два являются дополнительными, устанавливаются для каждого файла в отдельности и могут присутствовать в ACL в нескольких экземплярах:

ACL_USER
Содержит UID и режим доступа к файлу пользователя, которому установлены на него права дополнительно от основных. На каждого пользователя со своими правами на данный файл хранится отдельная запись. Не может существовать более одной записи на одного и того же пользователя.
ACL_GROUP
То же самое, что и ACL_USER, но для группы пользователей.

При установке дополнительных прав доступа, также присваивается значение и элементу ACL_MASK, маске действующих прав доступа (effective rights mask). Значения ACL_MASK определяет лимит значения режима доступа для дополнительных пользователей и групп. Т.е. если режим доступа к файлу у пользователя rwx (чтение, запись, запуск), а маска - r--(только чтение), то у пользователя реально будет только доступ на чтение. По умолчанию (если не указывать конкретно) значение маски равно максимальному доступу среди всех дополнительных пользователей и групп.

Каталоги могут также иметь список контроля доступа по умолчанию (Default ACL). В отличие от основного ACL он действует на создаваемые внутри данного каталога файлы и директории. При создании файла внутри такого каталога, файл получает ACL, равный Default ACL этого каталога.

А теперь много практики...:)

Как я уже говорил, все управление списками контроля доступа производится при помощи двух команд getfacl и setfacl.

С помощью getfacl можно просмотреть текущие параметры доступа любого файла. Например, при вызове getfacl /home/dh будет выведено:


# file: home/dh
# owner: dh
# group: root
user::rwx
group::---
other:---

Это означает, что каталог /home/dh принадлежит пользователю dh, группе root и значение прав доступа к нему 0700. Каталог имеет только основные параметры доступа. Дополнительные параметры доступа не установлены. Первоначально ни у одного файла в системе нет дополнительных параметров доступа.

Устанавливаются и изменяются права доступа к файлу при помощи команды setfacl. Для этого используется следующий формат вызова:


setfacl -опции ACL_структура, ACL_структура,...,ACL_структура имя_файла имя_файла ...

ACL-структура представляет собой одну из следующих конструкций:

[d[efault]:][u[ser]:][пользователь] [:[+|^]режимы_доступа]
Определяет режим доступа к файлу или каталогу пользователя (ACL_USER_OBJ). Если пользователь не указан, определяет режим доступа пользователя-владельца (ACL_USER).
[d[efault]:] g[roup]:[группа] [:[+|^]режимы_доступа]
То же, что и предыдущая конструкция, но для группы (ACL_GROUP_OBJ или ACL_GROUP ).
[d[efault]:] m[ask] [:[+|^] режимы_доступа]
Определяет действующие права доступа (ACL_MASK).
[d[efault]:] o[ther] [:[+|^] режимы_доступа]
Определяет режим доступа для остальных пользователей (ACL_OTHER).

Присутствие компонента d (default) в конструкции указывает, что устанавливается Default ACL. При указании режима доступа без модификаторов (+ и ^), предыдущий режим доступа заменяется указанным в конструкции. При использовании модификатора + указанный режим доступа добавляется к существующему, при использовании ^ - удаляется. При использовании нескольких ACL-конструкции в строке запуска они разделяются запятыми. Примеры:

u::rwx
Определяет режим доступа к файлу (каталогу) для пользователя-владельца на чтение, запись и запуск (просмотр).
g:users:+w
Добавляет к правам группы users доступ на запись.
d:u:user1:^rwx
d:u:user1:---
У пользователя user1 не будет доступа к файлам (каталогам), которые будут создаваться в указанном в командной строке каталоге.
o:r-x
o:rx
Определяет режим доступа к файлу (каталогу) остальных пользователей - чтение и запуск (просмотр)
m:^w
Убирает из действующих прав доступ на запись.

Для установки и изменения ACL используются следующие опции:

-s
Заменяет полностью ACL файла на указанный в командной строке.

setfacl -s u::rwx,g::---,o:---,u:user1:rwx,g:users:rx,u:user2:--- /home/dh
getfacl /home/dh

Вывод:

# file: home/dh
# owner: dh
# group: root
user::rwx
user:user1:rwx
user:user2:---
group::---
group:users:r-x
mask:rwx
other:---

-m
Изменяет режимы доступа к файлу (каталогу).

setfacl -m g::rwx /home/dh
setfacl -m u:user1:rx, g:users:+w, d:u::rwx, d:g::--- /home/dh
setfacl -m u:user2:rwx /home/dh
setfacl -m u:nobody:rx,g:nobody:rx /home/dh
setfacl -m m:^w /home/dh
getfacl /home/dh

Вывод:

# file: home/dh
# owner: dh
# group: root
user::rwx
user:nobody:r-x
user:user1:r-x
user:user2:rwx        #effective:r-x
group::rwx        #effective:r-x
group:nobody:r-x
group:users:rwx        #effective:r-x
mask:r-x
other:---
default:user::rwx
default:group::---
default:other:---

-x
Убирает правила доступа из ACL.

setfacl -x u:nobody /home/dh
setfacl -x g:nobody /home/dh
setfacl -x user1,user2 /home/dh
setfacl -x g:users /home/dh
getfacl /home/dh

Вывод:

# file: home/dh
# owner: dh
# group: root
user::rwx
group::rwx
mask:rwx
other:---
default:user::rwx
default:group::---
default:other:---

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

Предыдущая

Содержание

Следующая


(c)Ерижоков А.А., 2001.
Использование данного документа разрешено только с согласия автора и с указанием первоисточника: DH's Linux Site


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP