Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Постановка задачи
На компьютере под управлением Astra Linux требуется настроить разделение прав прямого доступа пользователей к оптическим дискам.
При этом должны быть разграничены права пользователей на копирование и запись оптических дисков. Права на монтирование оптических дисков управляются отдельно (см. Съемные носители в ОС Astra Linux).
Особенности применения
Приводы оптических дисков представлены устройствами /dev/srX с дискретными правами доступа на чтение и запись для владельца root и группы cdrom:
Command | ||
---|---|---|
| ||
brw-rw----+ 1 root cdrom 11, 0 авг 4 08:05 /dev/sr0 |
При этом прямой доступ на чтение и запись к таки устройствам по умолчанию предоставляется всем пользователям автоматически при входе пользователя в сессию. Это делается с помощью правила UDEV /usr/lib/udev/rules.d/70-uaccess.rules (/lib/udev/rules.d/70-uaccess.rules для Astra Linux выпущенных ранее обновления x.7). В указанном правиле перечислены различные устройства, доступ к которым должен быть общим. При подключении таких устройств правило 70-uaccess.rules присваивает устройству тэг uaccess. Тэг обрабатывается службами systemd при входе в пользовательскую сессию и таким устройствам присваивается атрибут ACL (см. Списки управления доступом к файловым объектам (ACL) в Astra Linux) разрешающий пользователю прямое чтение и запись:
Command | ||
---|---|---|
| ||
getfacl: Removing leading '/' from absolute path names # file: dev/sr1 |
Решение
Для отключения автоматически предоставляемого общего доступа следует отменить назначение ACL, этот доступ разрешающий, то есть удалить тэг uaccess из атрибутов утройства. Для этого:
Определить атрибуты, по которым можно идентифицировать устройство (или класс устройств):
Command sudo udevadm info --query=property --name=<имя_устройства>
например:
Command sudo udevadm info --query=property --name=/dev/sr0
Далее в примере правила UDEV будет использоваться использован класс устройств ID_CDROM_DVD;
Создать правило udev, которое будет выполняться после правила 70-uaccess.rules и удалять тэг uaccess. Например, создать файл 71-uaccess-astra.rules (порядок выполнения правил определяется алфавитной сортировкой имен файлов с правилами). Файл разместить в том же каталоге, в котором находится правило 70-uaccess.rules. Пример правила:
Блок кода SUBSYSTEM=="block", ENV{ID_CDROM_DVD}=="1", TAG-="uaccess", RUN+="/usr/bin/logger 'Astra UDEV: removeset uaccessaccess tag for device %E{DEVNAME}'"
Перезагрузить компьютер.
После выполнения указанных действий прямой доступ к оптическим дискам на чтение и запись будет разрешен только суперпользователю (sudo) и пользователям, входящим в группу cdrom.
Для более точного разделения прав дополнительно можно определить права только на прямое чтение без права прямой записи. Для этого:
Создать группу, которой будет разрешено чтение, например, группу cdrom_ro:
Command sudo groupadd cdrom_ro В правиле 71-uaccess-astra.rules назначить устройству (устройствам) ACL, разрешающий чтение участникам группы cdrom_ro, для чего привести правило к виду:
Блок кода SUBSYSTEM=="block", ENV{ID_CDROM_DVD}=="1", TAG-="uaccess", RUN+="/usr/bin/setfacl -m g:cdrom_ro:r %E{DEVNAME}", RUN+="/usr/bin/logger 'Astra UDEV: set access for device %E{DEVNAME}'"
- Для применения правила сменить носитель в приводе.
После выполнения указанных действий прямой доступ к оптическим дискам на чтение и запись будет разрешен суперпользователю (sudo) и пользователям, входящим в группу cdrom, а также разрешен доступ на чтение пользователям, входящим в группу cdrom_ro.