Я хотел бы управлять полномочиями использовать звуковую карту. Существуют устройства "/dev/snd /*", владелец является "корнем", группа является "аудио", полномочия "660". Так, я ожидал бы, что только пользователи в "аудио" группе могли использовать звуковую карту, однако она не работает. У меня есть пользователь "u1", который не находится в группе "аудио", однако у него есть доступ! Я узнал, что доступом управляют с ACL, таким образом, getfacl
показывает следующее:
# file: timer
# owner: root
# group: audio
# flags: --t
user::rw-
user:u1:rw-
group::rw-
mask::rw-
other::---
Строка "user:u1:rw-" волшебно появляется снова, даже если я удаляю ее с setfacl
.
Для меня похоже, что существует корневой процесс, который автоматически добавляет полномочия к любому пользователю, игнорирующему "аудио" состав группы.
Почему доступ предоставляется? Как отклонить доступ на звуковую карту для пользователя?
Система контроля
Для включения ACL файловая система должна быть смонтирована с acl опцией.
вероятно, что опция ACL уже активна как опция монтирования по умолчанию Вашей файловой системы.
ввод Проверки (заменяют sdXY корректным разделом):
sudo tune2fs -l /dev/sdXY | grep "Default mount options"
вывод должен быть чем-то как:
Default mount options: user_xattr acl
также проверка, что опция монтирования по умолчанию не переопределяется в таком случае, который Вы будете видеть noacl
в /proc/mounts
в соответствующей строке. Введите:
sudo cat /proc/mounts | grep noacl
, Если Вам нужно, можно установить опции монтирования по умолчанию файловой системы с помощью команды раздела tune2fs-o опции, например:
tune2fs -o acl /dev/sdXY
Используя ACL:
для изменения использования ACL setfacl
:
setfacl -m "u:username:permissions
или
setfacl -m "u:uid:permissions
, например, для отклонения доступа на звуковую карту для пользователя введите:
setfacl -m "u:u1:---" /dev/snd/controlC0
можно легко попробовать, если это работает, помещая игру аудиотрека и затем выполнение команды: если звук прерван, команда была выполнена
, можно также проверить, были ли полномочия изменены с:
getfacl /dev/snd/controlC0 ( Control Interface /dev/snd/controlCX )
Обращаются к руководству man acl
и man setfacl
для большего количества опций.