Phil Asked: 2009-08-07 08:19:12 +0800 CST2009-08-07 08:19:12 +0800 CST 2009-08-07 08:19:12 +0800 CST 如何使用 xauth 在 linux 上通过其他用户运行图形应用程序 772 我的常规用户帐户是 user1。我为某些 x 应用程序创建了单独的 user2,我想在以 user1 身份登录 x 时运行该应用程序,但以某种方式阻止它对 user1 数据的读/写访问。我认为我可以使用 xauth 和 sudo/su 从 user1 到 user2 来运行这个应用程序。我该怎么做呢?我不确定如何配置 xauth。 linux sudo 10 个回答 Voted Randall 2009-08-08T10:11:09+08:002009-08-08T10:11:09+08:00 要选择性地使用 xauth ,作为 user1 运行: xauth list|grep `uname -n` 这将为您打印十六进制密钥授权条目。您也可以拥有与这些主机关联的不同显示器。 作为 user2 设置您的显示(假设默认情况下): DISPLAY=:0; export DISPLAY 然后运行: xauth add $DISPLAY . hexkey 注意 $DISPLAY 之后和十六进制键之前的点。 当不再需要访问权限时,您可以作为 user2 运行: xauth remove $DISPLAY kfl62 2011-01-15T09:54:35+08:002011-01-15T09:54:35+08:00 我输入了.zshrc一条线,export XAUTHORITY=~/.Xauthority现在我可以执行sudo -E xcommand. 经过大量的谷歌搜索,对我来说这是最简单的方法。 sleske 2009-08-07T08:35:59+08:002009-08-07T08:35:59+08:00 第一:不要使用xhost +,它相当不安全(一揽子允许/拒绝)。 而是使用 X-Cookie 机制: su user2 cp /home/user1/.Xauthority /home/user2/.Xauthority export DISPLAY=:0 或者,如果您已sux安装,请使用它(请参阅 ehempel 的回答)。 在这两种情况下,user2 都将使用 .Xauthority 中的秘密 cookie 来授权 X 服务器,其他任何人都无法访问它。 笔记: 根据您的文件权限,您可能必须以其他方式复制 .Xauthority。 除了复制之外.Xauthority,您还可以使用xauth提取和复制授权密钥(请参阅 Randall 的回答)。如果.Xauthority文件中有多个键,则更具选择性;否则就是口味问题。 ehempel 2009-08-07T18:18:09+08:002009-08-07T18:18:09+08:00 假设 debian 或 ubuntu(在 Red Hat / SUSE 上应该类似)。 sudo apt-get install sux sux user -c 'command' JMS 2011-02-05T10:48:57+08:002011-02-05T10:48:57+08:00 这将为所有用户解决问题: cat <<EOF > /etc/profile.d/xauth.sh #!/sbin/bash export XAUTHORITY=~/.Xauthority EOF ACV 2015-09-09T01:26:33+08:002015-09-09T01:26:33+08:00 作为根: xhost local:yourusername 你的用户名是你的用户名:) 然后执行 su ,因为 xclock如果已安装,您的用户应该可以工作 alex 2009-08-07T09:55:32+08:002009-08-07T09:55:32+08:00 其他一些选项: xauth +(不安全)(不适用于最新版本的xauth) ssh -X user2@localhost(丑陋,但可能比直接身份验证更容易开始工作) Best Answer Phil 2009-08-07T15:44:20+08:002009-08-07T15:44:20+08:00 我在 KDE 上发现了一些对我有用的东西 kdesu -u username /path/to/program pojem 2013-07-26T13:26:32+08:002013-07-26T13:26:32+08:00 这种方式在 suse/opensuse 中制作: http ://www.novell.com/support/kb/doc.php?id=7003743 只需修改 /etc/pam.d/su,添加选项(粗体): 会话可选 pam_xauth.so systemuser=1 然后你可以在没有 - 的情况下使用 su 进行切换: 苏用户2 并以图形方式运行应用程序。 Matija Nalis 2017-09-28T09:59:55+08:002017-09-28T09:59:55+08:00 对于 GNOME(实际上没有任何桌面环境,我只将它与 icewm 一起使用)gksu: gksu -u username program
要选择性地使用 xauth ,作为 user1 运行:
这将为您打印十六进制密钥授权条目。您也可以拥有与这些主机关联的不同显示器。
作为 user2 设置您的显示(假设默认情况下):
然后运行:
注意 $DISPLAY 之后和十六进制键之前的点。
当不再需要访问权限时,您可以作为 user2 运行:
我输入了
.zshrc
一条线,export XAUTHORITY=~/.Xauthority
现在我可以执行sudo -E xcommand
. 经过大量的谷歌搜索,对我来说这是最简单的方法。第一:不要使用
xhost +
,它相当不安全(一揽子允许/拒绝)。而是使用 X-Cookie 机制:
或者,如果您已
sux
安装,请使用它(请参阅 ehempel 的回答)。在这两种情况下,user2 都将使用 .Xauthority 中的秘密 cookie 来授权 X 服务器,其他任何人都无法访问它。
笔记:
.Xauthority
,您还可以使用xauth
提取和复制授权密钥(请参阅 Randall 的回答)。如果.Xauthority
文件中有多个键,则更具选择性;否则就是口味问题。假设 debian 或 ubuntu(在 Red Hat / SUSE 上应该类似)。
这将为所有用户解决问题:
作为根:
你的用户名是你的用户名:)
然后执行 su ,因为
xclock
如果已安装,您的用户应该可以工作其他一些选项:
xauth +
(不安全)(不适用于最新版本的xauth
)ssh -X user2@localhost
(丑陋,但可能比直接身份验证更容易开始工作)我在 KDE 上发现了一些对我有用的东西
这种方式在 suse/opensuse 中制作: http ://www.novell.com/support/kb/doc.php?id=7003743
只需修改 /etc/pam.d/su,添加选项(粗体):
然后你可以在没有 - 的情况下使用 su 进行切换:
并以图形方式运行应用程序。
对于 GNOME(实际上没有任何桌面环境,我只将它与 icewm 一起使用)
gksu
: