私は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
しかし、望ましくない人に自分自身を開いていることを考慮してください。