我尝试使用 alsa(pulseaudio 已移除)在 fedora 23 上运行 mpd。但是,当我以用户“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 文件。
答案1
添加 acls 以明确允许 mpd 访问声音设备解决了该问题:
sudo setfacl -m u:mpd:rw /dev/snd/*
在执行此操作之前,acl 是这样的:
# 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 已经是 audio 组的成员,这些 acl 应该已经足够了。我会给能解释这里发生了什么的人悬赏。
答案2
您必须将用户添加到音频组:
usermod -aG 音频 [用户]
注销并重新登录。您应该能够使用音频。