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

1272
Isaac

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

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

2 ответа на вопрос

2
Isaac

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

-1
Jamey

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

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

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

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

Похожие вопросы