我以“Ubuntu”用户身份登录 SSH 到服务器上。但是我想以另一个用户“ABC”身份管理运行一些 systemd 服务。
如果我尝试sudo -u abc bash
以用户身份执行此操作ABC
,则每个systemd --user
命令都会出现错误:
Failed to connect to bus: No medium found
我发现这个线程建议添加以下内容~/.bashrc
:
export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
这会将错误更改为:
Failed to connect to bus: No such file or directory
其他消息来源表明,无头服务器通常不会安装 dbus,因此这是有道理的(它似乎是 x11 的一个组件)。虽然我不知道为什么如果我将其作为 运行,它会毫无问题地运行ubuntu
。
我发现这个建议的解决方法
sudo systemctl -M abc@ --user restart foobar.service
这对于基本start
、stop
有效,status
但是:
systemctl --user cat
不起作用- 似乎没有任何变化
journalctl
有效:
Failed to open root directory of machine 'abc@': The name org.freedesktop.machine 1 was not provided by any .service files
Failed to open journal: No route to host
- 打字太长,不方便。
我真的只是想要一个这个其他用户的 shell,就像我登录时一样,ubuntu
并且可以毫无问题地管理我的所有用户服务。
我提到 Podman 是因为当我以其他用户身份运行 Podman 时,它也会非常不高兴。如果我以 身份使用它,它会正常工作,ubuntu
但如果我以 运行它,就会出错sudo -u
。像 systemd 一样,我有一些部分解决方法,但似乎都没有效果好。