试图逃跑
systemctl --user start my-service.service
在 Ubuntu 服务器 20.04 上,以非 root 用户身份运行
Failed to connect to bus: Permission denied
即使只是
systemctl --user
给出了同样的错误。
该用户已创建adduser --disabled-login my-user
,可通过运行 进行访问su my-user
。
根据我发现的情况研究该问题后发现,似乎是su
由于执行“登录”操作时某些环境变量未正确初始化导致的,而不是导致此问题。
展示你的作品:
答案1
您的用户服务很可能没有启动,因为需要到用户特定的总线套接字文件的路径/run/user/$UID/bus
(它是用户运行时环境的一部分) 在环境变量中没有正确设置DBUS_SESSION_BUS_ADDRESS
...应该设置为类似于这样的内容:
$ echo "$DBUS_SESSION_BUS_ADDRESS"
unix:path=/run/user/1000/bus
如果未设置,则像这样设置并导出:
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus"
然后,尝试重新启动您的用户服务。
注意:但是,这需要一个主要由服务设置的用户运行时环境user@$UID.service
(和公司)($UID
是调用用户的 ID)... 这可能是你遇到的问题……如果它没有运行,请先使用sudo
(从管理员用户帐户)(将示例替换1003
为用户的实际 ID)像这样:
sudo systemctl start [email protected]