mpd는 root로 실행하는 경우에만 alsa 사운드 장치를 사용할 수 있습니다. 어떻게 root로 실행할 수 있습니까? 이유를 이해하지 못한다 –

나는 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가 내 오디오 장치에 액세스하도록하기 위해 누락 된 사항이 있습니까? 아마도 mpd 명시 적 액세스를 허용하는 몇 가지 ACL을 추가 할 수 있습니다 -하지만 내 이해에 그룹 구성원이 충분해야합니까 ???

편집하다 다음은 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 파일이 없습니다.



답변

명시 적으로 사운드 장치에 대한 mpd 액세스를 허용하는 ACL을 추가하면 문제가 해결됩니다.

sudo setfacl -m u:mpd:rw /dev/snd/*

Bevor이 일을, 암살은 이런 식으로했다 :

# 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 [사용자]

Logout and back in. 오디오를 사용할 수 있어야합니다.