web-dev-qa-db-ja.com

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

私の通常のユーザーアカウントは、たとえば、user1です。 xにuser1としてログインしている間に実行したいが、user1データへの読み取り/書き込みアクセスを防ぐ方法で、いくつかのxアプリケーション用に個別のuser2を作成しました。このアプリケーションを実行するために、user1からuser2にxauthとSudo/suを使用できると思いました。どうすればよいですか? xauthの構成方法がわかりません。

48
Phil

KDEで自分にぴったりのものが見つかりました

kdesu -u username /path/to/program
2
Phil

Xauth selectively、をuser1として使用するには、次のコマンドを実行します。

xauth list|grep `uname -n`

これにより、hexkey認証エントリが出力されます。あなたがこれらのホストに関連付けられたさまざまなディスプレイを持っている可能性があります

User2としてディスプレイを設定します(デフォルトの場合を想定):

DISPLAY=:0; export DISPLAY

次に実行します:

xauth add $DISPLAY . hexkey

$ DISPLAYの後、hexkeyの前のドットに注意してください。

アクセスが不要になった場合、user2として次のコマンドを実行できます。

xauth remove $DISPLAY
33
Randall

.zshrcexport XAUTHORITY=~/.Xauthorityを含む行を挿入すると、Sudo -E xcommandを実行できるようになります。多くのグーグルの後、私にとってこれが最も簡単な方法でした。

12
kfl62

最初:xhost +を使用しないでください。かなり安全ではありません(全面的な許可/拒否)。

むしろX-Cookieメカニズムを使用します。

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

または、suxがインストールされている場合は、それを使用します(ehempelの回答を参照)。

どちらの場合でも、user2は.XauthorityのシークレットCookieを使用してXサーバーに認証し、他のユーザーはそれにアクセスできません。

ノート:

  • ファイルの権限によっては、他の方法で.Xauthorityをコピーする必要がある場合があります。
  • .Xauthorityをコピーする代わりに、xauthを使用して認証キーを抽出およびコピーすることもできます(Randallの回答を参照)。 .Xauthorityファイルに複数のキーがある場合、これはより選択的です。そうでなければ、それは好みの問題です。
9
sleske

Debianまたはubuntuを想定しています(Red Hat/SUSEでも同様であるべきです)。

Sudo apt-get install sux
sux user -c 'command'
9
ehempel

これにより、すべてのユーザーの問題が修正されます。

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF
7
JMS

ルートとして:

xhost local:yourusername

Yourusernameはユーザー名です:)

次に、ユーザーxclockがインストールされていれば機能するはずなので、suを実行します。

4
ACV

これらは単なるハックです:

  • xauth +(安全でない)
  • ssh -X user2 @ localhost(醜い)

上記のsleskeには適切な解決策があると思います。

2
alex

この方法はsuse/opensuseで作成されました: http://www.novell.com/support/kb/doc.php?id=700374

/etc/pam.d/suを変更し、オプション(太字)を追加するだけです。

セッションオプションpam_xauth.sosystemuser = 1

次に、suなしで切り替えることができます-:

su user2

アプリをグラフィカルに実行します。

0
pojem