命令“cat file | xclip”中的错误

1 xorg cat ubuntu

该命令适用于用户“heo”。但是我通过“$ su another_user; cat file | xclip”收到错误消息:

No protocol specified Error: Can't open display: :0.0
Run Code Online (Sandbox Code Playgroud)

超级用户使用 xauth-command 具有黑色 CLI,没有错误消息或文本。

  1. 如何让多个用户保持相同的显示?

  2. 如何将所有用户的显示更改为 :0 或 :1?

  3. 为什么 xauth-command 是黑色的,只有一个超级用户?

der*_*ert 5

xclip 无法与您的 X 服务器通信。检查 $DISPLAY 设置是否正确。其他 X 客户端是否使用相同的 $DISPLAY 设置?

这个:

$ echo 'hello' | xclip
Run Code Online (Sandbox Code Playgroud)

对我来说很好用。

编辑

su转到另一个用户后,您会收到错误消息,因为该用户没有适当的权限连接到您的 X 服务器。X 使用一种称为 MIT 魔法 cookie 的权限检查协议,它通过创建一个随机字符串作为密码来工作。该密码存储在文件中$XAUTHORITY,或者~/.Xauthority如果未设置环境变量。它由xauth工具操纵。例如,

$ xauth list
…
Feynman/unix:0  MIT-MAGIC-COOKIE-1  <<redacted>>
…
Run Code Online (Sandbox Code Playgroud)

我不确定你在做什么 su,但是:

  • 如果是这样,您可以读取文件,那么只需以其他用户身份运行 cat,并将 su 的输出通过管道传输到 xclip。这样,xclip 以您的用户身份运行,并且可以正常工作。
  • 如果您尝试为另一个用户的 X 会话设置剪贴板,那么您需要设置$DISPLAY为该用户的显示以及$XAUTHORITY该用户的 X 权限文件。查看 ConsoleKit(如果您正在使用它)和/var/lib/gdm(如果您正在使用 gdm)以找到所说的东西。

如果以上都不是,那么您必须使用 xauth 来设置授权,并记住任何连接到您的 X 服务器的东西都可以做各种邪恶的事情,例如监视您的所有按键。

PS:$DISPLAY指的是他们登录到哪个 X 服务器。除非您设置了多个运行的服务器(因此多个用户可以同时登录),否则所有用户都是一样的。