- 论坛徽章:
- 1
|
由于root帐号有权限管控,我们只有应用的系统帐号(IBM TDS应用),但做应用配置需要root权限和转发X11图形介面,首先,root给该帐号配置了sudo权限。
现象:
1、应用帐号执行xclock可以在本机显示图形介面
2、sudo xclock用root权限执行报Error: Can't open display: localhost:10.0
[dsrdbm01@PRDESS3 ~]$ sudo xclock
[sudo] password for dsrdbm01:
Error: Can't open display: localhost:10.0
[dsrdbm01@PRDESS3 ~]$
原因:
x11转发失败。
RHEL linux X11本机转发使用Xauthority的方式验证。用户登录后会在home目录下创建.Xauthority文件,该文件中存放一个魔法密钥,转发端和接收端的魔法密钥需要一致,可以通过xauth命令查看。
[dsrdbm01@PRDESS3 ~]$ xauth
Using authority file /home/dsrdbm01/.Xauthority
xauth> list
PRDESS3/unix:10 MIT-MAGIC-COOKIE-1 b4a86e15e4e7985cc6fa790a65d54b70
xauth>
[dsrdbm01@PRDESS3 ~]$ echo $DISPLAY
localhost:10.0
本地的X11转发到localhost的6000+10端口(6010),xauth结果中对应主机名、平台、端口、密钥命、密钥
[dsrdbm01@PRDESS3 ~]$ netstat -nlp | grep 6010
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN -
tcp 0 0 ::1:6010 :::* LISTEN -
可以本机在监听6010端口,然后通过shh的x11转发功能将图形介面转到本地xmanager上显示。
而root中的xauth密钥和应用帐号的密钥不一致(端口号为10的记录),该密钥每次SSH登录后都会重新生成。
[root@PRDESS3 ~]# xauth
Using authority file /root/.Xauthority
xauth> list
PRDESS3/unix:10 MIT-MAGIC-COOKIE-1 541a97cf84b6ae6644adea6f760ad901
PRDESS3/unix:11 MIT-MAGIC-COOKIE-1 98d6c1adca68a77af675ec775ecdb15a
xauth>
由于root和应用帐号中的auth密钥不一致,所以sudo转发x11失败。因为sudo也是转发到localhost:10:0
[dsrdbm01@PRDESS3 ~]$ sudo env
DISPLAY=localhost:10.0
所以
方法1、需要将应用帐号当前的X11密钥配置到root的auth中
[dsrdbm01@PRDESS3 ~]$ sudo auth
sudo: auth: command not found
[dsrdbm01@PRDESS3 ~]$ sudo xauth
Using authority file /root/.Xauthority
xauth> add PRDESS3/unix:10 MIT-MAGIC-COOKIE-1 b4a86e15e4e7985cc6fa790a65d54b70
xauth> list
PRDESS3/unix:10 MIT-MAGIC-COOKIE-1 b4a86e15e4e7985cc6fa790a65d54b70
PRDESS3/unix:11 MIT-MAGIC-COOKIE-1 98d6c1adca68a77af675ec775ecdb15a
xauth>
方法2:
再启用一个root的session,并将sudo的DISPLAY和新的root会话的DISPLAY设成一致。这当然没必要了,有root权限,就这用这么干了。
|
|