通常、ユーザーのホームディレクトリの.xauthority
ファイルに保存されている「マジッククッキー」を使用してXサーバーに対して認証する必要があることを考えると、GDMはどのように機能しますか(ほとんどのログインプロセスと同様に、rootとして実行されます)。 )ログイン画面を描画するためにXサーバーに接続しますか? rootユーザーのホームディレクトリに保存されている.xauthorityファイルを使用しますか、それとも完全に認証をバイパスしますか?
私のシステムではps
がこれを見つけます:
/usr/bin/Xorg -br :0 vt7 -nolisten tcp -auth /var/lib/xdm/authdir/authfiles/A:0-wEJjac
ディスプレイマネージャーは、パラメーターとして使用する認証ファイルでXを開始します。そのファイルを直接使用できます。
編集1:
私の場合はKDMであり、GDMではありません。
あなたの理論をテストしてください。これらのファイルをルートの/root
ディレクトリから一時的に移動し、これらのファイルが次のいずれかであるかどうかを確認します。
/root
でファイルを再生成しますGNOME Display Manager Reference Manual を見てみましょう。ドキュメントを見ると、rootはXとまったく対話していないように見えます。これは、これを行うユーザーの実効ユーザーIDで別のプロセスをフォークします。
GDMリファレンスマニュアル-GDMデーモンセクションからの抜粋
GDMは、シンプルさとセキュリティを念頭に置いて作成されました。全体的な設計コンセプトは次のとおりです。
起動時に、gdmデーモンはその構成ファイルgdm.confを解析します。ローカルディスプレイごとに、gdmはXserverとスレーブプロセスをフォークします。メインのgdmプロセスは、リモートディスプレイからのXDMCPリクエストをリッスンし、ローカルディスプレイセッションを監視します。
Gdmスレーブプロセスが表示を開き、グラフィカルログインプログラムであるgdmloginを起動します。 gdmloginは専用ユーザーとして実行され、パイプを介してスレーブプロセスと非同期的に通信します。
GDMは、PAM(Pluggable Authentication Modules)の存在に大きく依存していますが、レガシーシステムでは通常のcrypt()およびシャドウパスワードをサポートしています。
リモートディスプレイは、GDMホストのXDMCPポートに接続できます。 gdmは、TCPラッパー構成ファイルのgdmサービスセクションで指定されたホストへのアクセスを許可します。GDMは、TCPラッパーがないシステムでのリモートディスプレイアクセス制御をサポートしていませんただし、XDMCPサポートは完全にオフにすることができます。
認証ファイルが保存される場所はディストリビューション固有のようです。 Red Hatディストリビューションの場合、それらは/var/run/gdm
の下にあり、他のOSの場合、それらは/var/lib/xdm
の下にあります。
これが私のFedoraディレクトリです:
$ pwd
/var/run/gdm
$ tree
.
├── auth-for-gdm-8DkDnQ
│ └── database
└── auth-for-saml-PSW952
└── database
2 directories, 2 files
したがって、2つの認証ディレクトリがあります。1つはユーザーgdm
用で、もう1つはユーザーsaml
用です。
$ strings auth-for-saml-PSW952/database
grinchy
MIT-MAGIC-COOKIE-1
-G9
[root@grinchy gdm]# strings auth-for-gdm-8DkDnQ/database
grinchy
MIT-MAGIC-COOKIE-1
-G9
データベースファイルの内部を見ると、MIT-MAGIC-COOKIES
に関する情報があります。