解決策 1:
xauth を選択的に使用するには、 user1 として実行:
xauth list|grep `uname -n`
これにより、16 進数認証エントリが出力されます。 できる それらのホストに関連付けられた別のディスプレイも持っています。
user2 がディスプレイを設定したとき (デフォルトのケースを想定):
DISPLAY=:0; export DISPLAY
次に実行します:
xauth add $DISPLAY . hexkey
$DISPLAY の後と hexkey の前のドットに注意してください。
アクセスが不要になったら、user2 として実行できます:
xauth remove $DISPLAY
解決策 2:
.zshrc
を入れました export XAUTHORITY=~/.Xauthority
の行 sudo -E xcommand
を実行できるようになりました .グーグルでいろいろ調べた結果、これが一番簡単な方法でした。
解決策 3:
最初:xhost +
を使用しないでください 、かなり安全ではありません (一括許可/拒否)。
代わりに X-Cookie メカニズムを使用してください:
su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority
export DISPLAY=:0
または、 sux
がある場合 インストールされている場合は、それを使用してください (ehempel の回答を参照してください)。
どちらの場合も、user2 は .Xauthority の秘密の Cookie を使用して X サーバーを承認し、他の誰もアクセスできなくなります。
注:
- ファイルのアクセス許可によっては、別の方法で .Xauthority をコピーする必要がある場合があります。
.Xauthority
をコピーする代わりに 、xauth
も使用できます 認証キーを抽出してコピーします(ランドールの回答を参照)。.Xauthority
に複数のキーがある場合 file これはより選択的です。それ以外は好みの問題です。
解決策 4:
debian または ubuntu を想定しています (Red Hat / SUSE でも同様のはずです)。
sudo apt-get install sux
sux user -c 'command'
解決策 5:
これにより、すべてのユーザーの問題が解決されます:
cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF