私の通常のユーザーアカウントは、たとえば、user1です。 xにuser1としてログインしている間に実行したいが、user1データへの読み取り/書き込みアクセスを防ぐ方法で、いくつかのxアプリケーション用に個別のuser2を作成しました。このアプリケーションを実行するために、user1からuser2にxauthとSudo/suを使用できると思いました。どうすればよいですか? xauthの構成方法がわかりません。
KDEで自分にぴったりのものが見つかりました
kdesu -u username /path/to/program
Xauth selectively、をuser1として使用するには、次のコマンドを実行します。
xauth list|grep `uname -n`
これにより、hexkey認証エントリが出力されます。あなたがこれらのホストに関連付けられたさまざまなディスプレイを持っている可能性があります。
User2としてディスプレイを設定します(デフォルトの場合を想定):
DISPLAY=:0; export DISPLAY
次に実行します:
xauth add $DISPLAY . hexkey
$ DISPLAYの後、hexkeyの前のドットに注意してください。
アクセスが不要になった場合、user2として次のコマンドを実行できます。
xauth remove $DISPLAY
.zshrc
にexport XAUTHORITY=~/.Xauthority
を含む行を挿入すると、Sudo -E xcommand
を実行できるようになります。多くのグーグルの後、私にとってこれが最も簡単な方法でした。
最初:xhost +
を使用しないでください。かなり安全ではありません(全面的な許可/拒否)。
むしろX-Cookieメカニズムを使用します。
su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority
export DISPLAY=:0
または、sux
がインストールされている場合は、それを使用します(ehempelの回答を参照)。
どちらの場合でも、user2は.XauthorityのシークレットCookieを使用してXサーバーに認証し、他のユーザーはそれにアクセスできません。
ノート:
.Xauthority
をコピーする代わりに、xauth
を使用して認証キーを抽出およびコピーすることもできます(Randallの回答を参照)。 .Xauthority
ファイルに複数のキーがある場合、これはより選択的です。そうでなければ、それは好みの問題です。Debianまたはubuntuを想定しています(Red Hat/SUSEでも同様であるべきです)。
Sudo apt-get install sux
sux user -c 'command'
これにより、すべてのユーザーの問題が修正されます。
cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF
ルートとして:
xhost local:yourusername
Yourusernameはユーザー名です:)
次に、ユーザーxclock
がインストールされていれば機能するはずなので、suを実行します。
これらは単なるハックです:
上記のsleskeには適切な解決策があると思います。
この方法はsuse/opensuseで作成されました: http://www.novell.com/support/kb/doc.php?id=700374
/etc/pam.d/suを変更し、オプション(太字)を追加するだけです。
セッションオプションpam_xauth.sosystemuser = 1
次に、suなしで切り替えることができます-:
su user2
アプリをグラフィカルに実行します。