我在通过systemd启动的linux系统中以root身份运行服务。此服务有时可能会在用户当前的登录环境中生成GUI(我通过DBUS从Logined获得了Display和Xauth的值)。 gui的启动工作正常,但是环境混乱了。
当前,gui是通过fork
和execvp
启动的。在调用execvp
之前,先使用setuid
和setgid
放弃特权。
使用正确的环境变量启动进程的合适方式是什么?当前,当尝试从应用程序中使用例如policykit
时,出现错误,无法找到当前的/dev/tty
,依此类推。
使用su -l
是否合适?还是有其他方法以其他用户身份启动流程?