aplay를 루트로 실행할 수 없습니다!

aplay를 루트로 실행할 수 없습니다!

루트가 될 필요는 없지만 aplay그것이 나에게 부딪쳤고 왜 작동하지 않아야 하는지 궁금합니다.

# aplay /home/bibek/apert.wav
XDG_RUNTIME_DIR (/run/user/1000) is not owned by us (uid 0), but by
uid 1000! (This could e g happen if you try to connect to a non-root
PulseAudio as a root user, over the native protocol. Don't do that.) 
ALSA lib pcm_dmix.c:1024:(snd_pcm_dmix_open) unable to open slave
aplay: main:722: audio open error: No such file or directory

나는 그것이 나에게 꽤 많은 세부 사항을 제공한다는 것을 알 수 있지만 여전히 이해하지 못합니다.

답변1

루트 쉘은 어디에서 왔습니까 su? 환경 변수는 $XDG_RUNTIME_DIR사용자 셸에서 상속됩니다. export XDG_RUNTIME_DIR=""이전에 실행 하여 aplay지우거나 sudo -i대신 사용하여 su깨끗한 환경을 얻을 수 있습니다.

답변2

오류 메시지에서 알 수 있듯이 원래 사용자가 연결을 요청하지 않으면 연결이 거부됩니다. 루트로서 sudo해당 사용자로서 명령을 실행할 수 있지만 XDG_RUNTIME_DIR사용자 중 한 명이어야 합니다.

sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 aplay ...

원래 사용자 ID를 확인하세요 id -u. 1000이 아닐 수도 있습니다.

답변3

기술적으로 가능하지 않다는 말은 아니지만 일반적으로 서로 통신하고 루트로 실행하면 안되는 응용 프로그램에서 사용할 수 있는 내장된 보안 조치입니다.

이러한 조치가 없으면 "상대방"에 대한 의도하지 않은 제어권을 얻기 위해 일부(아직 발견되지 않은) 버그로 인해 프로토콜이 남용(또는 하이재킹)되지 않도록 해야 합니다. 상대방의 프로그램에 루트 권한이 있을 경우 영향이 더 심할 수 있으므로 처음부터 이를 비활성화하는 것이 더 쉽습니다.

관련 정보