如何使用 xauth 在 Linux 上通过其他用户运行图形应用程序

如何使用 xauth 在 Linux 上通过其他用户运行图形应用程序

我的常规用户帐户是 user1。我为某个 x 应用程序创建了单独的 user2,我希望在以 user1 身份登录 x 时运行该应用程序,但要阻止它对 user1 数据进行读/写访问。我认为我可以使用 xauth 并从 user1 向 user2 执行 sudo/su 来运行此应用程序。我该怎么做?我不确定如何配置 xauth。

答案1

使用 xauth选择性地,以用户1身份运行:

xauth list|grep `uname -n`

这将为您打印十六进制密钥授权条目。您可以与这些主机相关联的显示也不同。

按照用户 2 的设置显示(假设默认情况):

DISPLAY=:0; export DISPLAY

然后运行:

xauth add $DISPLAY . hexkey

注意 $DISPLAY 之后和十六进制键之前的点。

当不再需要访问时,作为用户 2,您可以运行:

xauth remove $DISPLAY

答案2

我输入了.zshrc一行export XAUTHORITY=~/.Xauthority,现在我就可以执行了sudo -E xcommand。经过大量的谷歌搜索,对我来说这是最简单的方法。

答案3

首先:不要使用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则更具选择性;否则,这取决于个人喜好。

答案4

以 root 身份:

xhost local:yourusername

yourusername 是您的用户名:)

然后以你的用户身份执行 su xclock即可(如果已安装)

相关内容