GNU/Linux >> Linux の 問題 >  >> Linux

xauth を使用して、Linux で他のユーザーを介してグラフィカル アプリケーションを実行する方法

解決策 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

Linux
  1. LinuxでBusyBoxを使用する方法

  2. Linuxでcronを使用する方法

  3. Linux で UID 0 の非ルート ユーザーを削除する方法

  1. Linuxでchownコマンドを使用して所有権を変更する方法

  2. SSH 経由で IPv6 アドレスで rsync を使用するにはどうすればよいですか?

  3. ユーザーのログアウト後も nohup を使用してコマンドを実行し続ける方法は?

  1. Linuxでidコマンドを使用する方法:5つの便利な例

  2. sudo を使用して非 root ユーザーが特定のコマンドを実行できるようにする方法

  3. Linux マシンで root ユーザーとして Elasticsearch 2.1.1 を実行する方法