我有一个主要用户,X运行在:username1。我有另一个用户帐户,我做了很多工作,用户名2 如何制作它以便我可以将命令的输出从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文件可能需要处理;但是我不熟悉它。我将继续审查文档。
任何建议都将不胜感激。
答案 0 :(得分:0)
能够写入其他用户剪贴板将是一个巨大的安全问题。幸运的是,我们可以信任一个用户(或者至少我们应该信任),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
即可查看该值,如果不能,则可以运行命令w
或who
来查看该值。
接下来,我们设置XAUTHORITY=/home/username1/.Xauthority
来处理所有授权/安全废话。现在,username2无法读取此变量,但root肯定可以(或者username1可以chmod a+r ~/.Xauthority
为每个人提供读取权限。)
注意:在Ubuntu 12.04 LTS上测试