我使用sudo时遇到SSH X-11转发问题。我找到了解决方案。
$hostname
server4.a.b.edu
首先我做:
$ echo $DISPLAY
localhost:10.0
然后
$ xauth list
server1.a.b.edu/unix:12 MIT-MAGIC-COOKIE-1 6026864294a0e081ac452e8740bcd0fe
server4.a.b.edu/unix:10 MIT-MAGIC-COOKIE-1 f01fbfe0c0d68e30b45afe3829b27e58
然后我需要做
$ sudo xauth add server4.a.b.edu/unix:10 MIT-MAGIC-COOKIE-1 f01fbfe0c0d68e30b45afe3829b27e58
让sudo工作,使用我的服务器名称和显示的cookie。
如何编写bash脚本来自动执行此操作?
答案 0 :(得分:4)
对RHEL6有用的一件事是在sudoing之前导出XAUTHORITY变量,例如:
export XAUTHORITY=~/.Xauthority
sudo xclock
答案 1 :(得分:3)
根本不需要脚本;这只是一个命令。
sudo xauth add `xauth list $DISPLAY`
答案 2 :(得分:1)
我做
sudo su otheruser -c "xauth add $(xauth list :${DISPLAY##*:}); xterm"
将xterm替换为您要运行的GUI命令
答案 3 :(得分:0)
我使用ssh登录后使用此功能:
echo -n "xauth add `xauth list :${DISPLAY#*:}`" | sudo su - otheruser
sudo su - otheruser
echo -n "xauth remove :${DISPLAY#*:}" | sudo su - otheruser
基本上它会删除显示的主机名部分。 xauth
在使用时仍会找到它。
即使您没有“su - otheruser
”之外的任何其他命令的sudo权限,它也能正常工作。它还会在之后删除添加的cookie,以提高安全性和清洁度。 :)
您可以使用您喜欢的任何sudo命令变体替换中间的sudo su - otheruser
命令。