[systemd-devel] logind device access weird behavior
serenissi
serenissi at inventati.org
Tue Apr 1 15:53:34 UTC 2025
Right! Stupid me. It just occurred to me that it is debian (which adds
local users to video) and `group::---` looks sus. I spun up the vm to
confirm and saw this reply in my inbox. Thanks!
~serene
On 4/1/25 19:36, Mantas Mikulėnas wrote:
> It sounds as if your original user is in the "video" group, so it
> receives the 'group' permissions and not 'other' permissions. (They
> are not additive in the POSIX model like they would be in Windows.)
>
> Even though the device node had no specific ACL entries, it still
> *had* an ACL in general, so the 'group' permission bits no longer
> affect actual group permissions: they change the overall ACL access
> mask (and so can limit access for all entries at once, but not grant
> access).
>
> So doing "chmod 777" actually did the equivalent of setting
> "u::rwx,m::rwx,o::rwx" while the "g::-" entry was left unchanged with
> no permissions. If you're not owner but are in the 'video' group you
> therefore get no access.
>
> Use "setfacl -m g::rwx" to change the main group access entry instead.
>
> On Tue, Apr 1, 2025, 17:29 serenissi <serenissi at inventati.org> wrote:
>
> I noticed a phenomenon about logind managed devices (drm node). I
> have
> two users, localuser and testuser, the former has a session in seat0
> (this is important). I attached drm card1 to new seat `seat1` and set
> 777 permission to the dev node /dev/dri/card1. Now the acl looks like
>
> # file: dev/dri/card1
> # owner: root
> # group: video
> user::rwx
> group::---
> mask::rwx
> other::rwx
>
> as expected. Now if I do from a localuser shell: sudo -u testuser cat
> /dev/dri/card1, the device opens as expected. However doing so as
> localuser results in permission denied.
>
> But if I add another acl entry with setfacl -m u:localuser:rw
> /dev/dri/card1, cat /dev/dri/card1 suddenly works as expected. In
> this
> case the acl is
>
> # file: dev/dri/card1
> # owner: root
> # group: video
> user::rwx
> user:localuser:rw-
> group::---
> mask::rw-
> other::rwx
>
> here the `other` entry makes the `user:localuser` entry pointless in
> common sense, which is not the case.
>
> My hunch is ebpf but I couldn't find where this logic is defined in
> systemd tree. Could anyone here help me with that?
>
>
> ~ serene
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20250401/316b4e6f/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0x20257A7131FFF28B.asc
Type: application/pgp-keys
Size: 652 bytes
Desc: OpenPGP public key
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20250401/316b4e6f/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 236 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20250401/316b4e6f/attachment.sig>
More information about the systemd-devel
mailing list