ルートになる必要はありませんが、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
エラーメッセージが示すように、元のユーザーが接続を要求しなかった場合、接続は拒否されます。 rootとしてsudo
そのユーザーとしてコマンドを実行できますが、XDG_RUNTIME_DIR
ユーザーの1人である必要があります。
sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 aplay ...
元のユーザーIDを確認してくださいid -u
。 1000ではないかもしれません。
答え3
技術的に可能ではないということではありませんが、通常は互いに通信し、root で実行しないアプリケーションで使用できる組み込みのセキュリティ対策です。
このアクションがなければ、「相手」に対する意図しない制御を得るために、いくつかの(まだ見つからない)バグが原因でプロトコルが乱用(またはハイジャック)されないようにする必要があります。相手のプログラムにroot権限がある場合は影響が大きくなる可能性があるため、最初から無効にする方が簡単です。