mpd может использовать только звуковое устройство alsa, если оно запускается от имени пользователя root - как я могу запустить его без полномочий root

0

Я пытаюсь запустить 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.

Isaac
источник
У вас есть файл в вашем доме под названием ~/.mpdconf? Если да, какие разрешения у него есть? Какие разрешения имеет файл /etc/mpd.conf?
nKn
Я обновил свой вопрос запрошенной информацией.
Isaac

Ответы:

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 должно было быть достаточно. Я дам награду тому, кто сможет объяснить, что здесь происходит.

Isaac
источник
-1

Вы должны добавить пользователя в аудио группу:

usermod -aG audio [пользователь]

Выйдите из системы и вернитесь обратно. Вы должны иметь возможность использовать аудио.

Jamey
источник
Пожалуйста, прочитайте вопрос правильно. Пользователь уже был членом аудиогруппы. Это не сработало, хотя и должно было, в соответствии с разрешениями группы. Вот почему я разместил этот вопрос в первую очередь :)
Isaac