有没有办法设置权限以便进程可以使用特定设备?

有没有办法设置权限以便进程可以使用特定设备?

正如您所读到的,例如这里、logind是systemd的一部分,可以为用户会话设置某些设备的权限。还有一个视频展示这种行为在实践中是如何运作的。简而言之,如果您启动 amarok,并播放一些歌曲,您会听到声音,直到您切换到另一个用户或 TTY,其中只有登录提示。那是因为活动会话变得不活动。

我知道您可以简单地将一个或多个用户添加到特定组(在本例中为“音频”),这将“修复”此问题,但我想知道是否还有其他解决方案。我真正想要的是为该进程设置一些权限,以便它可以一直使用声卡,即使所有用户都锁定了其会话。

那可能吗?我这么问是因为我经常听音乐,而且我并不需要显示器大部分时间都处于打开状态,所以我只是锁定屏幕。但是当我锁定屏幕时,活动会话变为非活动状态,并且 amarok 停止播放。是的,屏幕应该被锁定,而不仅仅是关闭。

编辑:

我认为我使用哪个发行版并不重要,因为如果船上有 systemd,那将是完全相同的问题。无论如何,我使用的是 debian sid,但一些软件包如 systemd、udev(和一些依赖项)来自实验分支,现在是 219-9 版本。

答案1

我不确定您使用的是哪个版本/风格的 Linux,但看起来声音设备的 ACL 是由 ConsoleKit 通过 udev 规则控制的。在我的 Debian 主机上,我在 /lib/udev/rules.d/70-udev-acl.rules 中看到类似下面的内容

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

我会尝试取消标记,这样 consolekit 不会将声音设备添加到其数据库中,也不会管理声音设备上的 ACL

答案2

我想说的是,我对 Linux 桌面上的音频知之甚少。如果这没有帮助的话,我要道歉。

我将设置音频设备的组权限:

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

到 amarok 运行的组。使用 systemd 强制 amarok 在该组中运行。首先将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 autostart 启动,可以在 下找到~/.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

现在我可以一直听音乐了。我认为这就是我一直在寻找的解决方案。

相关内容