让我们假设这种情况:我们有一个用户登录,通过以下方式执行一些应用程序sudo
or su
。该用户有一个dbus-daemon
跑步。
然而,当以 root 权限运行的应用程序尝试访问 D-Bus 时,它只会生成另一个dbus-daemon
,由 root 用户拥有。这不是我们想要的情况。
有没有办法获得对运行应用程序的用户的 D-Bus 会话的访问权限sudo
or su
?
如果您使用的是 systemd 发行版,相对较新 https://github.com/systemd/systemd/pull/1022 machinectl shell
命令可以完成以下工作su
/sudo
,它还会设置会话变量,例如XDG_RUNTIME_DIR
and DBUS_SESSION_BUS_ADDRESS
。例如,如果我想运行systemctl --user
作为用户test
,正常的方法将会失败:
$ sudo --user=test systemctl --user
Failed to connect to bus: No such file or directory
但这种方法有效:
$ sudo machinectl shell --uid=test .host -- /usr/bin/systemctl --user
如果您需要“返回”调用 sudo 脚本的用户会话,您可以使用SUDO_USER
/SUDO_UID
一起破解某些东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)