在“sudo su - media”之后无法以用户身份使用 systemctl:无法连接到总线:未定义 $DBUS_SESSION_BUS_ADDRESS 和 $XDG_RUNTIME_DIR

在“sudo su - media”之后无法以用户身份使用 systemctl:无法连接到总线:未定义 $DBUS_SESSION_BUS_ADDRESS 和 $XDG_RUNTIME_DIR

我正在尝试以用户身份创建服务,但是它不起作用:

admin $ sudo su - media
$ systemctl --user edit fmgr-copro.service --full --force
Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)
$ exit
admin $ systemctl status dbus -n 2
● dbus.service - D-Bus System Message Bus
     Loaded: loaded (/lib/systemd/system/dbus.service; static)
     Active: active (running) since Wed 2023-03-22 15:07:24 CET; 1 week 0 days ago
TriggeredBy: ● dbus.socket
       Docs: man:dbus-daemon(1)
   Main PID: 869 (dbus-daemon)
      Tasks: 1 (limit: 38289)
     Memory: 1.7M
        CPU: 4.125s
     CGroup: /system.slice/dbus.service
             └─869 @dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only

Mar 28 10:09:57 myServer dbus-daemon[869]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' r>
Mar 28 10:09:57 myServer dbus-daemon[869]: [system] Successfully activated service 'org.freedesktop.hostname1'
admin $ sudo su - media
$ echo $XDG_RUNTIME_DIR

$ echo $DBUS_SESSION_BUS_ADDRESS

$

EDIT0:看来DBUS_SESSION_BUS_ADDRESSXDG_RUNTIME_DIR变量在之后被清除了sudo su - media

你能帮助我吗 ?

答案1

避免使用su。而是使用来自的工具systemd

  • machinectl
  • systemd-run

(问题是关于交互式使用,但为了完整性,我还添加了非交互式使用)

交互式使用

sudo machinectl shell username@

非交互式使用

sudo systemd-run \
              -M username@ \
              --user \
              --quiet \
              --collect \
              --pipe \
              --wait \
             mycommand

参考

是 ”不是用于打开全新登录会话的工具根据 systemd 的原作者 https://github.com/systemd/systemd/issues/7451#issuecomment-346787237

相关内容