编辑

编辑

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

No protocol specified Error: Can't open display: :0.0

超级用户使用 xauth 命令时 CLI 为黑色,没有错误消息或文本。

  1. 如何才能使多个用户看到相同的显示内容?

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

  3. 为什么对于一个超级用户来说 xauth 命令是黑色的?

答案1

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

这:

$ echo 'hello' | xclip

对我来说很好用。

编辑

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

$ xauth list
Feynman/unix:0  MIT-MAGIC-COOKIE-1  <<redacted>>

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

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

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

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

答案2

扩展另一个答案,“sudo”用户无法使用非特权用户的 X 会话或显示。一种解决方法可能是使用su -c

$ sudo su # echo 'hello' | su -c 'xclip -selection clipboard' nonprivusername

相关内容