我有一个在通过 systemd 启动的 linux 系统中以 root 身份运行的服务。该服务有时可能会在用户的当前登录环境中生成一个 GUI(我通过 DBUS 从 Logind 获取 Display 和 Xauth 的值)。gui的启动工作,但环境搞砸了。
目前 gui 是通过fork
和启动的execvp
。在使用和删除调用execvp
权限之前。setuid
setgid
使用正确的环境变量启动进程的合适方法是什么?目前,当尝试policykit
从应用程序中使用时,我收到一个错误,即/dev/tty
找不到当前的等等。
是否适合使用su -l
?还是有其他方法可以以不同的用户身份启动进程?