免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4352 | 回复: 2
打印 上一主题 下一主题

[服务应用] 如何在root用户切换到其它用户后使用图形界面? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-24 10:39 |只看该作者 |倒序浏览
在CGSL系统中,使用root用户登录图形界面,在终端中切换到其它用户时,在该用户下执行图形界面程序,会报告如下错误信息:
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
应该如何解决?

论坛徽章:
0
2 [报告]
发表于 2014-03-24 10:41 |只看该作者
原因分析:当CGSL操作系统在本地图形界面登录的时候,生成的xorg显示服务端会加载一个认证码文件,通常保存在/var/gdm/:0.Xauth文件中。当任何图形界面客户端需要启动的时候,必须提供该文件保存的密钥相对应的密钥才能够成功连接显示服务端,否则访问将会被拒绝。
当使用root用户登录的时候,系统给root用户生成一个存放其密钥的文件(根据设置不同,该文件位置可能不同)。因此root用户可以正常的访问显示服务端(在xhost中没有特殊的设置条件下,否则不用该认证文件也能够访问)。如果在终端中直接切换到其它用户,由于没有指定该认证文件,因此导致访问本地的xorg显示服务端失败。
广东省linux公共服务技术支持中心解决:由于已经使用root用户,因此,可以采取复制root用户密钥的方式来达到使非root用户通认证的目的。
(1) 首先检查root用户的认证文件:在root用户的权限下,输入
# env|grep XAU
a. 如果存在该环境变量,可能显示如下:
XAUTHORITY=/tmp/.gdm9WO2JV
则可以执行下述命令将该密钥导出:
# xauth -f $XAUTHORITY -i extract - $DISPLAY|xauth -f ~/.Xauthority merge -
b. 如果不存在该环境变量,则访问root用户根目录,检查是否存在文件/root/.Xauthority,如果存在则执行下面的命令进行导出:
# xauth -f /root/.Xauthority -i extract - $DISPLAY|xauth -f ~/.Xauthority merge -
如果不存该认证文件,该情况比较少见,一般不太可能出现在CGSL系统上(CGSL图形界面默认登录均会创建该认证文件),需要自行生成该认证密钥,暂时不在本节中讨论。
(2) 随后给生成的密钥文件赋于非root用户访问它的权限。
chmod 666 ~/.Xauthority
执行完上述操作后,则在本次图形界面登录环境中可以在终端中切换至非root用户启动图形界面程序。
(3) 如果仍不能启动,请检查非root用户的环境变量XAUTHORITY是否存在并指定,如果是,请将其指定为~/.Xauthority文件指定的指令为在非root用户下执行:
export XAUTHORITY=~/.Xauthority
注意:
(1) 本方案为临时解决方案,可能存在不规范的地方,如导出了root用户的密钥,请谨慎使用。
(2) 如果系统重启,密钥发生更换,则非root将再次不能使用图形程序,请依照第二章重新执行上述操作给非root用户赋以权限。
(3) 直接使用非root登录本地图形界面,可以正常的使用图形界面程序。

论坛徽章:
0
3 [报告]
发表于 2014-03-24 13:58 |只看该作者
在root用户下使用命令xhost +
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP