Rootとして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
私はそれが私に適度な量の詳細を与えているのを見ることができます、しかし私はまだ理解していません。
ルートシェルはsu
からのものですよね?環境変数$XDG_RUNTIME_DIR
は、ユーザーのシェルから継承されています。 aplay
の前にexport XDG_RUNTIME_DIR=""
を実行してクリアするか、su
の代わりにSudo -i
を使用してクリーンな環境を取得できます。
技術的に不可能というわけではありません。相互に通信するアプリケーションでよく利用できる組み込みのセキュリティ対策であり、rootとして実行しないでください。
このような対策がなければ、いくつかの(まだ発見されていない)バグが原因で、「反対側」を意図せずに制御するためにプロトコルが悪用(またはハイジャック)されないようにする必要があります。反対側のプログラムがroot権限を持っている場合、これの影響はさらに深刻になる可能性があるため、最初からそれを拒否する方が簡単です。