当使用 gnome-session 登录用户时,会创建一个用户分片,启动用户 dbus 会话,并且所有用户进程都在该分片内运行。
如果我以 root 身份登录到使用 shell 的系统,我该如何“登录”到另一个用户,并在用户会话中运行 shell,如上所述?也就是说,如何使用 shell 而不是图形会话登录?
注意:如果我使用“login myuser”,它可以工作,创建切片。但是 systemctl --user 返回一个错误,指示用户 dbus 未运行。
答案1
我之后问了这个问题:
- docker exec 带有用户 ID
- sudo bash
- su-我的用户
这不起作用,因为原始 tty 已经附加到该用户,无需经过 PAM。
systemd 用户实例由 systemd pam 扩展启动。因此,如果我改为:
- 使用 root 权限执行 docker exec
- su-我的用户
systemd 用户单元和 systemd --user 以及 dbus 实例都已正确启动,因为 systemd / pam 现在识别到我正在切换用户帐户并创建一个新会话。