mpd может использовать только звуковое устройство alsa, если оно запускается от имени пользователя root - как я могу запустить его без полномочий root
Я пытаюсь запустить mpd на fedora 23, используя alsa (pulseaudio удален). Однако при запуске mpd от имени пользователя "mpd" я получаю
alsa_output: Error opening default ALSA device: Permission denied
Поэтому я запустил его как пользователь root, и все в порядке. Хорошо, проблема с разрешениями - просто я не понимаю, почему она не работает как пользователь mpd - разрешения выглядят нормально для меня:
/dev/snd:
total 0
crw-rw----+ 1 root audio 116, 0 Jan 1 1970 controlC0
crw-rw----+ 1 root audio 116, 16 Jan 8 20:38 pcmC0D0p
crw-rw----+ 1 root audio 116, 17 Jan 1 1970 pcmC0D1p
crw-rw----+ 1 root audio 116, 1 Jan 1 1970 seq
crw-rw----+ 1 root audio 116, 33 Jan 1 1970 timer
[root@sh02 ~]# grep audio /etc/group
audio:x:63:isaac,mpd
[root@sh02 ~]# getenforce
Permissive
И, конечно же, я перезагрузил компьютер, чтобы убедиться, что все правильно инициализировано. Кто-нибудь понял, чего не хватает, чтобы позволить mpd получить доступ к моему аудио устройству? Я мог бы, вероятно, добавить некоторые acl, чтобы разрешить явный доступ к mpd - но в моем понимании членство в группе должно быть достаточным???
РЕДАКТИРОВАТЬ Это разрешения файла конфигурации mpd:
-rw-r-----. 1 root root system_u:object_r:mpd_etc_t:s0 13585 Jan 8 22:04 /etc/mpd.conf
Обратите внимание, что mpd может работать как пользователь mpd, если используется плагин импульсного выхода. Но поскольку пульс заикался и иногда не запускался, я решил не использовать пульс, а использовать выход alsa.
В домах нет файлов.mpdconf.
2 ответа
Добавление acls для явного разрешения mpd доступа к звуковым устройствам решило проблему:
sudo setfacl -m u:mpd:rw /dev/snd/*
Делая это, Бевор был так:
# file: dev/snd/controlC0
# owner: root
# group: audio
user::rw-
user:lightdm:rw-
group::rw-
mask::rw-
other::---
# file: dev/snd/pcmC0D0p
# owner: root
# group: audio
user::rw-
user:lightdm:rw-
group::rw-
mask::rw-
other::---
# file: dev/snd/pcmC0D1p
# owner: root
# group: audio
user::rw-
user:lightdm:rw-
group::rw-
mask::rw-
other::---
# file: dev/snd/seq
# owner: root
# group: audio
user::rw-
user:lightdm:rw-
group::rw-
mask::rw-
other::---
# file: dev/snd/timer
# owner: root
# group: audio
user::rw-
user:lightdm:rw-
group::rw-
mask::rw-
other::---
Поскольку mpd уже был членом аудиогруппы, этих acls должно было быть достаточно. Я дам награду тому, кто сможет объяснить, что здесь происходит.
Вы должны добавить пользователя в аудиогруппу:
usermod -aG audio [пользователь]
Выйдите из системы и вернитесь обратно. Вы должны иметь возможность использовать аудио.