短い答え:XDG_RUNTIME_DIR設定

短い答え:XDG_RUNTIME_DIR設定

私は職場でリモートスタッフがSSHとVNCを介してLinux Mintを実行できるようにします。

すべてのスタッフは、私たちがアクティブにしたい唯一のサウンドデバイスであるUSBヘッドセットを使用しています。無効にする必要があるサウンドデバイスは「内蔵オーディオ」デバイスです。従業員のデスクトップで端末を開くと、デバイスが無効になっていることを確認できますpacmd list-sinks | grep "Built-in Audio"

このコマンドは、従業員のユーザー名とパスワードでログインするとSSHを介しても機能しますが、管理者の「IT」ユーザー名でSSHを試行するとエラーが発生します。PulseAudioデーモンが実行されていないか、セッションデーモンとして実行されていません。「助けてください!セキュリティのために各従業員のローカルパスワードはありませんが、ITユーザー名を介してSSHを介して権限を使用してITをrootに昇格しても、内蔵オーディオが有効になっていることを確認できないようですsu

su - [employee]コマンドを使用してローカルディスプレイにアクセスしようとしましたが、export DISPLAY=:0サウンドデバイスも確認できませんでした。 :(

答え1

私はそれを考えた!そのaplay --list-devicesコマンドが私が必要とする変数を保存したことがわかりました。このコマンドを実行すると、ターゲットシステムのカードと次のハングの「サブデバイス1/1」文字列が表示されます。 「サブデバイス」文字列は、デバイスがオンの場合は0/1に変更され、デバイスがオフの場合は1/1に変更されます。

そこからgrep -A 1カードの状態(この場合は「シミュレーション」と呼ばれる)を解析できるようにパイプし、出力をif / thenステートメントにラップして、内蔵オーディオがオンになっているかオフになっているかを確認します。

if aplay --list-devices|grep -A 1 Analog|grep Subdevices:\ 0/1;then echo Built-in IS ON;else echo off

答え2

短い答え:XDG_RUNTIME_DIR設定

sudo su -l employee_login
export XDG_RUNTIME_DIR=/run/user/$(id -u)
pacmd list-sinks | grep "Built-in Audio" 

説明する

秘訣は、PulseAudioが次を見つけることです。${XDG_RUNTIME_DIR}ソケットの場合はデーモンと通信する必要があります。しかし、XDG_RUNTIME_DIRユーザーがログインすると、PAM(Linux用プラグイン可能認証モジュール)によって設定されます。sudoまたはを使用するとsuPAMがスキップされたため、変数は設定されていません。

ステップ1:ユーザーになる

sudo su -l employee_login

このsuコマンドは、ユーザーの有効なUID(ユーザーID)をあなたが助けたい従業員と同じに設定します。 PulseAudio はこれらの点については面倒で動作を拒否するため、これが必要です。

これは-l必ずしも必要ではありませんが、時にはユーザーログインスクリプトを実行したときに発生する可能性のある問題をデバッグするのに役立ちます。

すでにroot権限を付与している場合は、sudoこれまでこれを行う必要はありません。su -l employee_login

ステップ2:XDG_RUNTIME_DIRを設定

export XDG_RUNTIME_DIR=/run/user/$(id -u)

環境XDG_RUNTIME_DIRこれは、ユーザーがログインしたときにPulseAudioデーモンが起動したソケットを作成し、pulse/nativeそれpulse/cliを使用してクライアントと通信するために必要です。 [脚注1]

ステップ3:PulseAudioを使う

pacmd list-sinks | grep "Built-in Audio"

これpacmdツールを使用すると、実行中のPulseAudioデーモンをスキャン(または再設定)できます。 PulseAudioという用語を考えることができます。流し「スピーカー」を意味し、源泉「マイク」を意味します。

list-sinksここでは、利用可能なすべての出力デバイスを一覧表示するPulseAudioコマンドを実行します。grep元の質問では、従業員のコンピュータがその機能を無効にして可能な受信機として使用できなかったため、私たちは「内蔵オーディオ」があることを確認しました。

参考pacmd(そしてそのいとこpactl)はこれよりも強力で、問題を診断するだけでなく、問題をリモートで解決するためにも使用できます。たとえば、音声出力は正確ですが、デフォルトで誤ったマイクが選択されている場合は、次のことができます。

pactl set-default-source alsa_input.usb-USB_Camera_USB_Camera_SN0001-02.analog-mono 

ヒント:オプションを表示するのに2回、長いソース/シンク名を完成させるために1回使用できるように、bash-completionがインストールされている状態で使用するのが最善ですpacmd。ただし、組み込みの特別なコマンドラインは使用されず、履歴や完了がないため、使用を避けてください。pactlTABpacmdlibreadline

脚注1

技術的には、PulseAudioデーモンは常に以下を使用するわけではありません。XDG_RUNTIME_DIR。たとえば、この変数が設定されていない状態でデーモンが起動した場合は、/tmp と ~username/.config/pulse/ のシンボリックリンクを使用します。オーディオ機器-走る。同様に、PulseAudioは他のユーザーとソケットを共有するように設定できます。コンテナ間

関連情報