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

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

例えば読むことができるようにここ、logind は systemd の一部であり、ユーザーセッションに対して特定のデバイスの権限を設定できます。映像もあります。この動作が実際にどのように機能するかを教えてください。簡単に言えば、amarokを起動して一部の曲を再生すると、ログインプロンプトだけを持つ他のユーザーまたはTTYに切り替えるまで音が鳴ります。アクティブなセッションが無効になっているためです。

特定のグループ(この場合は「オーディオ」)に1人以上のユーザーを追加すると、この問題が「解決」される可能性があることがわかりますが、他の回避策があるかどうか疑問に思います。私が本当に望むのは、すべてのユーザーがセッションをロックした場合でも常にサウンドカードを使用できるように、プロセスにいくつかの権限を設定することです。

それは可能ですか?音楽をたくさん聴くのにディスプレイをほとんどオンにしておく必要がないので、ただ画面をロックしているので、どうぞ。ただし、画面をロックするとアクティブセッションが無効になり、amarokの再生が停止します。はい、画面を消すのではなく、ロックする必要があります。

編集する:

私が使用するディストリビューションが重要だとは思わない。なぜなら、私がシステムをマウントしているなら、同じ問題になるからです。とにかく私はdebian sidを使用していますが、systemd、udev(およびいくつかの依存関係)などのいくつかのパッケージは実験用ブランチから来ており、現在バージョン219-9にあります。

答え1

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

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

コンソールキットがデータベースにサウンドデバイスを追加せず、サウンドデバイスのACLを管理しないようにマークを解除しようとしています。

答え2

私が言いたいのは、Linuxデスクトップのオーディオについて知っていることがほとんどないことです。これが役に立たない場合は謝罪したいと思います。

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

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

アマロックが運営するグループとして。このグループで amarok を強制的に実行するには、systemd を使用します。まず、amarok systemdファイルを/etc/systemd/user/にコピーして修正します。

[Service]
Group=audio

(ファイル全体ではなく修正です。)

しかし、今日のLinuxオーディオシステムの多層特性のために、より「複雑な」答えがあるかもしれません。

答え3

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

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

VNCを使用して、次の説明に従ってデスクトップを表示できます。https://en.wikipedia.org/wiki/Xvfb

答え4

Pulseaudioは、以下のxdg自動起動で起動します~/.config/autostart/。というファイルがあり、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

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

関連情報