web-dev-qa-db-ja.com

ルートへのsuの後にpulseaudioの音が出ない、デフォルトのオーディオデバイスが設定されていない

この動作は、少なくともUbuntu13.10とUbuntu14.04で見られます。

コマンドラインのplayパッケージのsoxコマンドを使用してサウンドを再生しています。 Xにログインするユーザーである私には問題なく機能します。ただし、rootとしてsuすると、機能しなくなります。

% play /usr/share/sounds/alsa/Front_Center.wav
play FAIL sox: Sorry, there is no default audio device configured

まさにコマンドは、私が実行するように正常に機能します。これはどうあるべきか?

これが私のインストールされたsoxパッケージです(つまり、libsox-fmt-Pulseがインストールされています):

ii libsox-fmt-base:AMD64  AMD64 Minimal set of SoX format libraries
ii libsox-fmt-mp3:AMD64  AMD64 SoX MP2 and MP3 format library
ii libsox-fmt-Pulse:AMD64  AMD64 SoX PulseAudio format I/O library
ii libsox2:AMD64  AMD64 SoX library of audio effects and processing
ii sox  AMD64 Swiss army knife of sound processing
3
xpt

UbuntuのPulseaudioは、ユーザーごとのセッションを使用するように構成されています。つまり、通常のユーザーアカウントは問題なくアクセスできますが、経験したように、別のユーザー(rootなど)が同時に使用するように構成されているわけではありません。

これはバグではありません。 Ubuntuに付属している構成を考えると、これは正常な動作です。

「私はオンラインで調査し、さまざまなセットアップをテストし、Pulseaudio開発者と話をするのに何時間も費やしました。結局のところ、通常のユーザーモードでpulseaudioを実行すると、ConsoleKitによってマークされたアクティブなセッションのみがオーディオハードウェアにアクセスできるようになります。」

出典: https://help.ubuntu.com/community/MultiseatX

ユーザーごとの構成を使用するのではなく、システム全体のインスタンスとして実行するようにPulseaudioを構成する方法についていくつかの情報がありますが、これには欠点がないわけではありません。

Pulseaudioのmanページから:

--system [= BOOL]ユーザーごとではなく、システム全体のインスタンスとして実行します。これによりPulseAudioの特定の機能が無効になり、システムがローカルユーザーを認識していない場合(シンクライアントなど)を除いて、通常は推奨されないことに注意してください。この機能には、特別な構成と専用のUNIXユーザーの設定が必要です。これを--disallow-module-loadingと組み合わせることを強くお勧めします(以下を参照)。

そもそもなぜルート再生オーディオを取得しようとしているのかを検討し、それが何をしようとしているのかを達成するためのより良い方法はないと判断するのが最善です。複数のユーザーにpulseaudioへの同時アクセスを許可する必要がある場合、これは見下ろしたいルートです。

2
0xDAFACADE