该命令适用于用户“heo”。但我通过“$ su another_user; cat file | xclip”收到错误:
No protocol specified Error: Can't open display: :0.0
超级用户使用 xauth 命令时 CLI 为黑色,没有错误消息或文本。
如何才能使多个用户看到相同的显示内容?
我如何才能将所有用户的显示更改为:0 或:1?
为什么对于一个超级用户来说 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