我有一个运行使用gpu的程序的Ubuntu服务器。 直到现在,为了运行我的程序,我一直在调用
export DISPLAY=:0
export XAUTHORITY=/var/run/lightdm/root/:0
但是,这需要我以root身份运行我的应用程序,因为root拥有:0文件。最后,我的问题是如何配置我的系统以避免这种情况?
一些背景知识:
此服务器当前配置为在启动时调出lightdm。 lightdm反过来启动Xorg,使用-auth / var / run / sddm / root /:0,这样ps -aux
将此作为一个进程显示:
/usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
在玩游戏时,我已成功配置所有内容,因此我不需要sudo:
export XAUTHORITY=~/.Xauthority
mcookie|sed -e 's/^/add :0 . /'|xauth
-auth “$HOME/.Xauthority”
这一切都很好,但不是可部署的解决方案。所以这里有其他问题:
如果要在启动时启动Xorg,如何提供对特定用户的访问权限?或者应该在用户登录时以某种方式提起?如果我将从命令行执行所有操作,我是否还需要lightdm?我有什么选择,最好的方法是什么?
答案 0 :(得分:2)
有几种可能性。
一个简单的方法是允许使用xhost访问已经运行的X(但是不鼓励使用xhost,使用cookie被认为更安全):
xhost +SI:localuser:USERNAME
另一个是从ps -aux
中提取Cookie名称并将其复制到~/.Xauthority
。将~/.Xauthority
的所有权更改为用户。只有用户才能拥有rw-access(chmod 600
)。
另一种可能性是,如果它以X extension SECURITY运行,则从X获取新的cookie。请注意,您已经需要访问已在运行的X才能获得新Cookie:
xauth -f /home/USERNAME/.Xauthority generate $DISPLAY . trusted
标准方式:在使用
启动X之前为选项-auth
创建一个cookie
export XAUTHORITY=$HOME/.Xauthority
export DISPLAY=:0
xauth -f $XAUTHORITY add $DISPLAY . $(mcookie)
使用-auth“$ HOME / .Xauthority”重新启动Xorg
小心;检查$HOME/.Xauthority
是否已存在且不为空;否则X根本没有身份验证协议运行,每个人都可以访问它。而是使用xauth
自己创建一个cookie。
我不确定你想要完成什么;请注意,允许多个用户访问同一个X显示器是安全危险/隐私泄漏。 X客户可以互相监视。