Suse Linux11.04システムを実行しています。私の問題は、rootとしてシェルに新規ログインすると、xauth*****
という形式の新しいXauthorityファイルが/root/
ディレクトリに作成されることです。シェルを終了すると、いくつかの.xauth
ファイルが残ります。他のシステムで試しましたが、発生しません。また、XAUTHORITY
環境変数がroot
に対してのみ設定され、システム内の他のユーザーに対しては設定されないのはなぜですか?
man xdm
は、XAUTHORITY
環境変数について次のように述べています。
DisplayManager.DISPLAY.userAuthDir
Xdmが通常のユーザー認証ファイル($ HOME/.Xauthority)に書き込めない場合、xdmはこのディレクトリーに固有のファイル名を作成し、作成されたファイルに環境変数XAUTHORITYを指定します。デフォルトでは/ tmpを使用します。
だから私のシステムではこれを行います:
xauth
典拠ファイルの使用/root/.xauthPpRsfU
xauth>
[Ctrl+d]
を終了して再度ログインすると、別の.xauth*
ファイルの使用が開始されていることがわかります。
xauth
典拠ファイルの使用/root/.xauthq1xt4z
xauth>
ログインするたびに異なるxauth
ファイルを作成し続ける必要があるのはなぜですか?また、デフォルトの場所が/tmp/
であるのに、なぜルートにあるのですか? xdm
構成ファイルで.DisplayManagaer.DISPLAY.userAuthDir
を/tmp
に設定していません。
他のシステムではこの動作は見られません。 RHELとUbuntuではすべて問題ありません。
ポインタについては、この問題に直面しているのは私だけではありません。この投稿も似ていると思います: `$ XAUTHORITY`はsu + tmuxの 'nowhere'から表示されます 。
誰かが私がこれを修正する方法を知っていますか?
su
を使用してrootとしてログインしている場合は、以下で説明されているように、 pam_xauth
を使用してそのセッションの新しいxauthorityファイルを設定している可能性があります。 この古い電子メールスレッド 。
ずっと前に、私は同じ質問をしていました。プロセス環境でこの変数セットをエクスポート/所有しているのは誰か。幸いなことに、私はシェルスクリプトを持つように教えられました。これはSolarisで機能します。 Linuxでは、プロセスの親環境を解析することは少し異なる可能性があります。
そのときの会話をお伝えすることもできます: https://groups.google.com/group/comp.unix.Shell/browse_thread/thread/a91bf497add5544e/56dd2f64c4029734?hl=en&ie=UTF-8&q=mnikhil + who + exported + this + variable&pli = 1#56dd2f64c4029734
envtrace(){
ptree $$ |
while read pid prog
do
/usr/ucb/ps eww $pid
done |
sed -n '
s/^ *//
/^[^0-9]/d
h
s/ .*/:/p
g
s/^.* \('"$1"'=[^ ]*\).*/\1/p
g
/^'"$$"' /q'
}
envtrace PATH envtrace OSTYPE