我在我的服务器上配置了 ssh,有时我必须在它上面运行一些图形应用程序。当我与-X
选项连接时,它工作得很好。我可以运行,例如google-chrome
。但是,如果我将用户更改为sudo -i -u other_user
,则无法以该用户身份运行 GUI 应用程序。
我认为它与环境和显示有关,但不知道该怎么做。我尝试添加-E
,但随后收到错误消息,提示我无法将其与-i
. 如何以其他用户身份通过 ssh 运行 GUI 应用程序?
最简单的方法是使用ssh -X
以其他用户身份运行命令。但这会使应用程序的运行速度明显变慢,即使在本地也是如此。
该-i
选项告诉sudo
重新初始化环境。X 应用程序需要$DISPLAY
和(在某些设置上)$XAUTHORITY
,并且可能使用其他环境变量,例如区域设置。尝试不使用-i
,或者如果必须使用-i
,请运行
sudo -i -u other_user \
env DISPLAY="$DISPLAY" XAUTHORITY="${XAUTHORITY-$HOME/.Xauthority}" \
xapplication
Run Code Online (Sandbox Code Playgroud)
即使您摆脱了-i
,您也可能必须XAUTHORITY
明确提供:默认情况下(如果未设置变量)它.Xauthority
位于主目录中。
到目前为止,我一直假设其他用户可以读取您的$XAUTHORITY
. 但情况并非如此,除非您这样做(例如使用setfacl -m user:other_user:r $XAUTHORITY
)。
或者,$XAUTHORITY
您可以将正确的 cookie 复制到用户可以读取的另一个文件中,而不是让其他用户读取您的.
xauth extract -f - "$DISPLAY" |
sudo -u other_user xauth -f ~other_user/.Xauthority merge -
Run Code Online (Sandbox Code Playgroud)
请注意,允许其他用户访问您的显示器几乎可以让他对其进行任何操作,包括向应用程序发送虚假按键。因此,如果您为了隔离而更改用户,您将不会得到太多。
归档时间: |
|
查看次数: |
4258 次 |
最近记录: |