sudo:他のユーザーでサウンド再生を実行する

sudo:他のユーザーでサウンド再生を実行する

私はiptablesを使用して、子供のLinuxアカウントからすべてのインターネットトラフィックをブロックします。時々私は彼らが1つまたは別のプログラムを使用したいと思います。この場合、sudoersを介して他の(無制限)ユーザーとしてプログラムを実行できるようにします。今回はそれらを使ってみました。翻訳シェルmpg123音/発音翻訳された単語を再生するだけでなく:

kiddy ALL= (daddy) NOPASSWD: /usr/bin/trans

ただし、ユーザーsudo -u daddy trans en:he -speak -player mpg123 appleとして実行すると、kiddy端末に正しい翻訳が表示されますが、音は再生されず、「音声出力は英語では使用できません」というメッセージが表示されます。 Gnomeにログインdaddyして同じコマンドを実行すると:trans en:he -speak -player mpg123 apple- すべてが期待どおりに機能し、テキストが翻訳され、サウンドが再生されます。どちらのユーザーもこのaudioグループに属します。頑張ったこの方法しかし、IDは役に立ちません。私はDebian 12を使用していますが、WaylandやXorgのどちらも$HOME/.Xauthorityこのソリューションに関するドキュメントを持っていません...

他のユーザーとしてsudoを介して翻訳シェル再生オーディオを作成するには?

ベストアンサー1

最新システムのオーディオ機器は次のように構成されています。管路あなたのディレクトリにソケットがあります/run/user。 sudo:edプロセスが現在のセッションのパイプラインインスタンスにアクセスするには、ソケットへのアクセスを許可する必要があります$XDG_RUNTIME_DIR/pipewire-0。ソケット自体は一般的に誰にでも開いていますが、$XDG_RUNTIME_DIRそうではありません。

有効なコマンドの順序は次のとおりです。

chmod a+x $XDG_RUNTIME_DIR
sudo -u daddy  XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR trans en:he -speak -player mpg123 apple

$XDG_RUNTIME_DIRしかし、望ましくない人に自分自身を開いていることを考慮してください。

おすすめ記事