3

我有一个 X 运行的主要用户:username1。我有另一个用户帐户,我在其中做了很多工作,username2。
我如何做到这一点,以便我可以将命令的输出从 userame2 复制到 username1s 剪贴板。

这是一个失败的例子:

username2 $ echo "hello" |xclip
    No protocol specified
    Error: Can't open display: :0

在网上看,我发现我应该更改 DISPLAY 变量。
这是我进行更改后得到的结果:

username2 $ echo "hello" |xclip
    Error: Can't open display: myws:0

搜索时,我还发现我可能需要对我的 .Xauthority 文件做一些事情;但是我不熟悉它。我将继续查看文档。

任何建议将不胜感激。

4

1 回答 1

1

能够写入另一个用户剪贴板将是一个巨大的安全问题。幸运的是,有一个我们可以信任的用户(或者至少我们应该信任),root。因此,假设您的纯 shell 用户 (username2) 具有 root 权限(如 sudo)。

username2 $ export DISPLAY=:0
username2 $ export XAUTHORITY=/home/username1/.Xauthority
username2 $ echo "hello" | sudo xclip

我们将 username2 的DISPLAY变量设置为:0,以便告诉 X 我们正在处理的屏幕。如果您可以控制 username1,则可以简单echo $DISPLAY地查看值,如果没有,则可以运行命令wwho查看值。

接下来,我们开始XAUTHORITY=/home/username1/.Xauthority处理所有授权/安全方面的废话。现在 username2 不能读取这个变量,但 root 肯定可以(或者 username1 可以chmod a+r ~/.Xauthority给每个人读取权限)。

注意:在现货 Ubuntu 12.04 LTS 上测试

于 2012-08-06T13:36:16.240 回答