web-dev-qa-db-ja.com

プロセスが特定のデバイスを使用できるように権限を設定する方法はありますか?

たとえば、 here のように、systemdの一部であるlogindは、一部のデバイスにユーザーセッションのアクセス許可を設定できます。 ビデオもあります この種の動作が実際にどのように機能するかを示しています。簡単に言うと、開始して、たとえばamarokで曲を再生すると、ログインプロンプトしかない別のユーザーまたはTTYに切り替えるまで、サウンドが聞こえます。これは、アクティブなセッションが非アクティブになったためです。

特定のグループ(この場合は「オーディオ」)にユーザーを追加するだけで問題が解決することはわかっていますが、別の解決策があるかどうか疑問に思っています。私が本当に望んでいるのは、すべてのユーザーがセッションをロックしている場合でも、サウンドカードを常に使用できるように、プロセスにいくつかのアクセス許可を設定することです。

それは可能ですか?私はよく音楽を聴いていて、ほとんどの時間モニターをオンにする必要がないので、画面をロックするだけです。しかし、画面をロックすると、アクティブなセッションが非アクティブになり、amarokの再生が停止します。はい、画面をオフにするだけでなく、ロックする必要があります。

編集:

どのディストリビューションを使用しているのかは重要ではないと思います。systemdが搭載されている場合、まったく同じ問題になるからです。とにかく、私はdebian sidを使用していますが、systemd、udev(およびいくつかの依存関係)のようないくつかのパッケージは実験的なブランチからのものであり、現在は219-9バージョンです。

12

Pulseaudioは、~/.config/autostart/の下にあるxdgautostartを介して開始されます。 pulseaudio.desktopというファイルがあり、そのファイルでデフォルトのexec行を次の行に変更しました。

Exec=/usr/bin/sg audio -c "pulseaudio -D"

システムにログインすると、pulseaudioプロセスは次のようになります。

$ ps -eo user,group,args | grep Pulse
morfik   audio    pulseaudio -D
morfik   audio    /usr/lib/pulseaudio/Pulse/gconf-helper

そして今、私はいつも音楽を聴くことができます。これが私が探していた解決策だと思います。

0

使用しているLinuxのバージョン/フレーバーはわかりませんが、サウンドデバイスのACLは、udevルールを介してConsoleKitによって制御されているようです。私のDebianホストでは、/ lib/udev/rules.d /70-udev-acl.rulesに次のようなものがあります。

# sound devices
SUBSYSTEM=="sound", TAG+="udev-acl"

これをタグ付け解除して遊ぶので、consolekitはサウンドデバイスをデータベースに追加せず、サウンドデバイスのACLを管理しません

1
VenkatC

Linuxデスクトップのオーディオについてはほとんど知らないと言わせてください。これが役に立たない場合は、MeaCulpa。

オーディオデバイスのグループ権限を設定します。

chgrp audio <dev-path>
chmod g+rw <dev-path>

amarokが実行されているグループに。systemdを使用して、amarokをそのグループで実行するように強制します。最初にamarok systemdファイルを/ etc/systemd/user /にコピーして変更します。

[Service]
Group=audio

(これは変更であり、ファイル全体ではありません)。

しかし、今日のLinuxオーディオシステムである複数のレイヤーにより、より「洗練された」答えがあるかもしれません。

0
Otheus

Vncフレームバッファでプレーヤーを実行するのはどうですか?ミント17では...

# apt search vfb
p   xvfb                            - Virtual Framebuffer 'fake' X server
p   xvfb:i386                       - Virtual Framebuffer 'fake' X server

https://en.wikipedia.org/wiki/Xvfb で説明されているように、VNCを使用してデスクトップを表示します。

0
smokes2345