所以,这就是我真正想做的事情。我的 Arch Linux 笔记本电脑在 pm-utils 的帮助下进入睡眠状态,一些 X 应用程序(transmission、banshee 等)需要手动关闭(通过 /etc/pm/sleep.d/00script.sh 中的脚本)并在睡眠恢复时重新启动。但是,由于 pm hooks 是以 root 用户身份运行的,因此以 root 身份为普通用户运行 X 应用程序是一项相当大的挑战。我知道,这一切都归结为导出 DISPLAY 和 XAuthority,但我已经不知道该如何让它工作了,我尝试了很多方法,但都没有奏效。
所以,我决定把它扔掉,看看这里是否有超级用户知道可以做些什么:)
答案1
为了回答问题本身,您需要将文件设置为SUID 根。正如 grawity 所评论的,当它进入睡眠状态时,没有必要关闭这些程序。
答案2
长话短说,这就是“如何”
root@host$ sudo -u joe DISPLAY=:0 transmission-gtk
当我问这个问题的时候,我显然正在运行一个带有严重错误的内核,因为当我将笔记本电脑从睡眠状态恢复时,发生了很多奇怪的事情。
现在,我运行另一个内核版本,上述问题均不存在。我现在 sudo 也能正常工作了。我试过各种各样的方法,随便你怎么说。但都不起作用,而且我对 Linux 并不陌生。
现在它确实起作用了。感谢大家的帮助!