通过服务生成GUI

时间:2018-06-25 11:48:46

标签: c linux privileges polkit

我在通过systemd启动的linux系统中以root身份运行服务。此服务有时可能会在用户当前的登录环境中生成GUI(我通过DBUS从Logined获得了Display和Xauth的值)。 gui的启动工作正常,但是环境混乱了。

当前,gui是通过forkexecvp启动的。在调用execvp之前,先使用setuidsetgid放弃特权。

使用正确的环境变量启动进程的合适方式是什么?当前,当尝试从应用程序中使用例如policykit时,出现错误,无法找到当前的/dev/tty,依此类推。

使用su -l是否合适?还是有其他方法以其他用户身份启动流程?

1 个答案:

答案 0 :(得分:0)

su使您可以指定运行用户,例如:

su nonrootuser -c "/usr/bin/mygui"