3

X を実行するメイン ユーザーがいます: username1。多くの作業を行う別のユーザー アカウント、username2 があります。
コマンドの出力をuserame2からusername1のクリップボードにコピーできるようにするにはどうすればよいですか。

失敗した例を次に示します。

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

別のユーザーのクリップボードに書き込むことができると、セキュリティ上の大きな問題になります。幸いなことに、私たちが信頼できる (または少なくとも信頼できるはずの) 1 人のユーザー、root がいます。したがって、シェルのみのユーザー (username2) が root 権限 (sudo など) を持っていると仮定します。

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

扱っている画面を X に伝えるために、username2 のDISPLAY変数を に設定します。:0username1 を制御できる場合は、単にecho $DISPLAY値を確認できます。そうでない場合は、コマンドを実行するwwho、値を確認できます。

次にXAUTHORITY=/home/username1/.Xauthority、承認/セキュリティのナンセンスをすべて処理するように設定します。現在、username2 はこの変数を読み取ることができませんが、root は確実に読み取ることができます (または、username1 がchmod a+r ~/.Xauthority全員に読み取りアクセス権を与えることができます)。

注: ストック Ubuntu 12.04 LTS でテスト済み

于 2012-08-06T13:36:16.240 に答える