web-dev-qa-db-ja.com

ログインごとに繰り返し設定されるXAUTHORITY環境変数

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'から表示されます

誰かが私がこれを修正する方法を知っていますか?

6
user1039494

suを使用してrootとしてログインしている場合は、以下で説明されているように、 pam_xauth を使用してそのセッションの新しいxauthorityファイルを設定している可能性があります。 この古い電子メールスレッド

1
alanc

ずっと前に、私は同じ質問をしていました。プロセス環境でこの変数セットをエクスポート/所有しているのは誰か。幸いなことに、私はシェルスクリプトを持つように教えられました。これは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

0
Nikhil Mulley