Skip to content

Fix systemd-logind apparmor rule

Systemd-logind fails to start in SDK, preventing other subsystems like PipeWire or WirePlumber to start, with error:

  • kernel: audit: type=1400 audit(1623416689.776:50): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/lib/systemd/systemd-logind" name="run/systemd/notify" pid=393 comm="systemd-logind" requested_mask="w" denied_mask="w" fsuid=0 ouid=0

From https://lists.ubuntu.com/archives/apparmor/2018-July/011718.html about attach_disconnected flag, this error occurs for:

a fd that was opened outside of the namespace and "passed in". The "passed in" could be via some fd passing scheme, process inheritance - file open at exec, process inheritance - file open at clone newns, unshare, setns, or file open at pivot_root/chroot with the fd outside of the new root.

AppArmor's default behavior is to reject new accesses to disconnected paths reporting back the pathname without a leading /. Unfortunately this can break some applications, if a profile must allow for mediation of disconnected paths then the profile flag attach_disconnected can be used. This prepend a leading / to the reported name, however this may not result in the original name of the file as AppArmor can only attach the file to root, not to its original location.

See https://gitlab.com/apparmor/apparmor/-/wikis/Release_Notes_2.5#path-name-lookup-and-mediation-of

Signed-off-by: Frédéric Danis frederic.danis@collabora.com

Edited by Frederic Danis

Merge request reports