解决Linux切换用户之后无法打开X11应用 | 您所在的位置:网站首页 › xshell切换用户 › 解决Linux切换用户之后无法打开X11应用 |
注意,这个帖子不是介绍怎么配置ssh,X11,怎么用xshell远程打开需要图形界面的程序。而是在可以xshell远程打开图形界面的情况下,需要切换用户执行一些程序时发现X11无法正常工作的情况。
这个问题在中文搜索中很难搜到一个有用的解决办法,所以google之后搬运一下解决办法。 问题: ssh连接服务器运行GUI程序MyGuiApp一切正常 ssh [email protected] user@myserver$ MyGuiApp 切换到root运行GUI程序MyGuiApp user@myserver$ su root@myserver# MyGuiApp Error: Can't open display: localhost:10.0报错:Error: Can’t open display: localhost:10.0 这是因为切换用户之后,X的认证变了 user@myserver$ xauth info Authority file: /home/user/.Xauthority File new: no File locked: no Number of entries: 82 Changes honored: yes Changes made: no Current input: (argv):1 root@myserver# xauth info Authority file: /root/.Xauthority File new: no File locked: no Number of entries: 3 Changes honored: yes Changes made: no Current input: (argv):1所以一个临时的解决办法是把user用户的xauth的cookie添加到root用户(或者其他要切换的用户) 先查看user的xauth信息 user@myserver$ xauth list $DISPLAY remote/unix:10 MIT-MAGIC-COOKIE-1 dacbc5765ec54a1d7115a172147866aa复制这行信息,切换用户,然后用xauth add 添加 user@myserver$ su root@myserver# xauth add remote/unix:10 MIT-MAGIC-COOKIE-1 dacbc5765ec54a1d7115a172147866aa这时候应该能正常执行GUI程序了,但是这个方法是临时的,断开连接之后,重新连接就失效了。 下面介绍一种长效的方法: 修改文件/etc/pam.d/su,在文件中添加session optional pam_xauth.so systemuser=1 # vim /etc/pam.d/su
当然,如果你要切换的用户也能ssh,那你另外开一个那个用户的连接也是能解决问题的,或者在当前用户下执行 $ ssh user2@localhost曲线救国,但是我的场景是必须要root执行一些程序,并且出于安全考虑ssh禁止了root用户登录。 |
CopyRight 2018-2019 实验室设备网 版权所有 |