Way to set permissions so a process could use a specific device

logindsessionsystemd

As you can read, for instance here, logind, which is a part of systemd, can set permissions to some devices for user sessions. There's also a vid showing how this kind of behavior works in practice. In short, if you start, let's say, amarok, and you play some song, you will hear the sound till you switch to another user or TTY where you have only the login prompt. That's because the active session became inactive.

I know that you can simply add a user (or users) to a specific group, in this case "audio", and that will 'fix' this issue, but I'm wondering if there's another solution. What I really want is to set some permissions for the process so it could use the sound card all the time, even when all users have their sessions locked.

Is that possible? I'm asking because I often listen to the music and I don't really need my monitor to be on most of the time, so I just lock the screen. But when I lock the screen, the active session becomes inactive and amarok stops playing. And yes, the screen should be locked, and not just turned off.

EDIT:

I don't think that it matters which distro I'm using because if there's systemd on board, it would be the exact same issue. Anyways, I'm using debian sid, but some packages like systemd, udev (and some dependencies) are from experimental branch, and now it's the 219-9 version.

Best Answer

I am not sure, which version/flavor of Linux you are using, but looks like ACL's for sound devices are controlled by ConsoleKit via udev rules. On my Debian host, I see something like below in /lib/udev/rules.d/70-udev-acl.rules

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

I would play with untagging this, so consolekit won't add sound devices into its database and not manage ACL on sound devices

Related Question