XDG_RUNTIME_DIR
是systemctl --user
工作所必需的。
我已经设置了 ubuntu 服务器 16.04 来运行 systemd 用户会话。现在,在尝试管理它们时,我发现当通过sudo -u $user -i
甚至更改用户时su - $user
,环境没有XDG_RUNTIME_DIR
设置,从而systemctl --user
无法工作。但是,当我ssh
直接进入该用户时,它设置正确。
如果我正确理解了文档,则应libpam-systemd
在创建用户会话时进行设置。用户切片正确启动,因为XDG_RUNTIME_DIR
应该指向( /run/users/$uid
)的目录存在。我很犹豫是否只是硬编码它,比如,.bash_profile
因为这看起来很笨拙(尽管有效),当 pam 应该照顾它时。
我当然可以添加XDG_RUNTIME_DIR
到env_keep
in sudoers
,但这只会保留 sudoing 用户的环境,这不是我想要的。我想要目标用户的环境。
不过,我真正想知道的是,会话如何正确设置为ssh
,而不是su
或sudo -i
?
一个用户或 root 用户可以控制另一个用户的用户级 systemd 服务吗?
我试过了sudo -u <some user> systemctl --user restart <some service>
,但它抱怨 dbus: Failed to get D-Bus connection: Connection refused
。