systemd 的 logind 或 Gnome-wayland-session 与 hidepid=2 不兼容吗?

systemd 的 logind 或 Gnome-wayland-session 与 hidepid=2 不兼容吗?

是否有任何文档表明systemd将安装hidepid=2选项设置为/proc procfs会导致问题?

启动 Gnome wayland 会话失败之前的错误消息部分是:

systemd[330]: Started D-Bus User Message Bus.
gnome-session[339]: gnome-session-binary[339]: WARNING: Could not get session id for session. Check that logind is properly installed and pam_systemd is getting use
gnome-session-binary[339]: WARNING: Could not get session id for session. Check that logind is properly installed and pam_systemd is getting used at login.
gnome-session[339]: gnome-session-binary[339]: WARNING: Could not parse desktop file orca-autostart.desktop or it references a not found TryExec binary
gnome-session-binary[339]: WARNING: Could not parse desktop file orca-autostart.desktop or it references a not found TryExec binary
gnome-shell[346]: Can't initialize KMS backend: Could not get session ID: No such file or directory
gnome-session[339]: gnome-session-binary[339]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
gnome-session-binary[339]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
gnome-session-binary[339]: Unrecoverable failure in required component org.gnome.Shell.desktop
gdm[296]: GdmDisplay: display lasted 0.735810 seconds

我猜想会话 ID 是通过 PID 以某种方式获取的,这对 gnome-session 来说是不可见的。

该问题发生在 Arch Linux 发行版上。但我确实认为这与上游问题有关。似乎正如所讨论的Gentoo 的 Wiki“没有 systemd 的 GNOME”特别是 Gnome 的 wayland 会话与 systemd 紧密结合。

systemd它似乎是s的组合logindhidepid=2 procfs挂载选项与 Gnome wayland 会话相互作用,比 Gnome Xorg 会话更依赖于登录。

我还遵循了 @sourcejedi 答案中给出的建议,并对登录进行了 /etc/fstab 豁免。所以我的这是我的条目/etc/fstab

proc     /proc     proc     nosuid,nodev,noexec,relatime,hidepid=2,gid=26     0 0

其中 26 是添加了 logind 和 polkitd 组的 proc 组的 GID。然而这并没有解决问题。

如图所示https://www.freedesktop.org/wiki/Software/systemd/logind/

  接口 org.freedesktop.login1.Manager {
    方法:
      GetSession(在 s session_id 中,
                 输出 o object_path);
      GetSessionByPID(在你的pid中,
                      输出 o object_path);

似乎可以使用 PID 来查询 SessionID,一旦hidepid=2使用选项,这自然可能会产生问题。

答案1

https://wiki.archlinux.org/index.php/Security#hidepid

为了使 Xorg 工作,需要为 systemd-logind 添加例外:

/etc/systemd/system/systemd-logind.service.d/hidepid.conf
[Service]
SupplementaryGroups=proc

编辑:本文档没有解释为什么有必要。放眼上游systemd-logind.service,服务单元不作为单独的用户运行。 (hidepid一般被描述为不适用于root)。然而从代码,我认为hidepid实际上使用了一个能力CAP_SYS_PTRACE。并且systemd-logind.service将自身限制为一组功能,其中不包括 CAP_SYS_PTRACE。

无论如何,这意味着 Arch Linux 的 systemd PID 1 能够使用 hidepid 正常启动。就我个人而言,即使没有 Xorg,我也会担心是否需要这个“例外”,以防其他软件使用相同的 systemd-logind 功能。

相关内容