Answers:
要有选择地使用xauth ,以user1的身份运行:
xauth list|grep `uname -n`
这会为您打印十六进制授权条目。您可能还具有与这些主机关联的不同显示。
以user2设置您的显示(假定默认情况):
DISPLAY=:0; export DISPLAY
然后运行:
xauth add $DISPLAY . hexkey
注意$ DISPLAY之后和十六进制键之前的点。
当不再需要访问时,可以以user2的身份运行:
xauth remove $DISPLAY
unset XAUTHORITY 在user2下忘记了
hexkey在xauth add命令一样从xauth list或做我必须创建一个随机的新的?
我把我.zshrc带线export XAUTHORITY=~/.Xauthority,现在我能够执行sudo -E xcommand。经过大量的谷歌搜索,对我来说这是最简单的方法。
sudo -E(并且-E在大多数默认安装中已禁用using ),因为通常默认sudoers配置将允许将XAUTHORITY环境变量传递给sudo。
-E。可以将其设置为可以传递的变量,Red Hat或Debian都建议使用。
假设使用debian或ubuntu(在Red Hat / SUSE上应该类似)。
sudo apt-get install sux
sux user -c 'command'
sux无需维护(并已从Debian / Ubuntu的存储库中删除):packages.qa.debian.org/s/sux/news/20140101T172633Z.html
第一:不要使用xhost +,这是很不安全的(空白允许/拒绝)。
而是使用X-Cookie机制:
su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority
export DISPLAY=:0
或者,如果您已sux安装,请使用它(请参阅Ehempel的答案)。
在这两种情况下,user2都将使用.Xauthority中的秘密cookie来授权X服务器,其他任何人都无法访问它。
笔记:
.Xauthority,您还可以使用xauth提取和复制授权密钥(请参阅Randall的答案)。如果.Xauthority文件中有多个键,则更具选择性。否则这是一个品味问题。对于GNOME(实际上没有任何桌面环境,我仅将它与icewm一起使用)gksu:
gksu -u username program
.Xauthority的用户主目录中没有文件。问题2:由于某种原因,由于某种原因,我不了解su,XAUTHORITY保留了user1的文件路径。但是user2无法读取该文件。