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无法读取该文件。