ホームディレクトリにアクセスできない場合、GDMは中断されます。

ホームディレクトリにアクセスできない場合、GDMは中断されます。

KRB5とLDAPを介してSSOを使用するOpenSUSE 12.3ワークステーションを設定しました。

これは、GDMが実際にkrb5pを使用してnfsマウントされたユーザーのホームディレクトリにアクセスできないという事実に少し不満を感じるまでかなりうまくいきました。

GDMはホームディレクトリをインストールしなくてもうまく機能します。 1つ以上のホームディレクトリがマウントされている場合は、ウェルカム/ログイン画面を開こうとするとGDMがクラッシュします。

LDAP(sss)を削除すると、/etc/nsswitch.confホームディレクトリがマウントされていてもGDMが正常に動作します。

最初はGDMのためにfstabにnfsをマウントしましたが、/home/users毎回クラッシュしました。その後、別々にマウントするためにautofsに切り替えてみました/home/users/*。 GDMは最初は機能しますが、後で(ユーザーがログアウトすると)クラッシュします。これで、ユーザーがログアウトした後にホームディレクトリがマウント解除されるようにpam_mountを使用するように設定しました。他のユーザーがシステムにログインしない限り、GDMは機能します。

gdmしたがって、問題は、GDMグリッターで使用されているユーザーがマウントされたホームディレクトリにアクセスしようとすると、Kerberosチケットが欠落しているためにnfsサーバーがその権限を拒否するという事実に関連する必要があります。ルートもこのディレクトリにアクセスできません。

そのユーザーがログインする前にこれらのディレクトリへのGDMアクセスを許可しようとすると、セキュリティ上の問題が発生する可能性があります。

興味深いことに、ホームディレクトリが存在しなくてもGDMには問題はありません。したがって、GDMはこれを許可しますfile does not existが許可しませんpermission denied

したがって、GDMはホームディレクトリからアクセスしようとしているすべてが単に必要ではないと結論付けます。

それでは、GDMはホームディレクトリから何を取得しようとしていますか?もっと重要なのは、これを試すことをどのように防ぐのですか?ぶら下がることをどのように防ぐことができますか?追加のトラブルシューティングに関するアイデアはありますか?

または、マウントされたホームディレクトリをGDMが表示できないようにして、転倒しないようにするにはどうすればよいですか?

答え1

/etc/gdm/* 問題

報告GNOMEディスプレイマネージャリファレンスマニュアル/etc/gdm以下に、さまざまなスクリプトなどを含む複数のディレクトリがあることがわかりました。

このディレクトリにはいくつかのペアがあります$HOME。私はそれらをコメントアウトしてそのペアを削除できることを確認します$HOME

問題をさらにデバッグするために、set -xこのディレクトリのさまざまなスクリプトの上部に数行を追加して、「許可を拒否」というメッセージが表示される前に何が実行されているかを確認する傾向があります。

ディレクトリのスクリプトはすべてbash私のシステムのスクリプトです。

/etc/gdm/custom.conf

デバッグオプション

一つあるデバッグオプションこのファイルではデフォルトで無効になっています。有効にすると、メッセージが表示されます/var/log/messages

[debug]
Enable=true

ログイン時に顔を無効にする

私もやりたいすべてのユーザーの顔を禁止顔ブラウザでgdmログイン。

[greeter]
IncludeAll=false

無効にする代わりに、問題のユーザーの1人だけを次のリストに追加して無効にすることができます。

Exclude=<some user>

アップデート#1 - バグジラの問題

この問題は、Red Hat問題トラッカーに送信されたバグに関連しているようです。

現在、解決策はありませんが、バグの一部としてこのエラーが発生するかどうかを確認するテストがあります。

問題が発生すると、GDMはここにキャッシュディレクトリを作成します/var/run/user/42。このディレクトリを削除すると、GDMログインを続行できます。 OPはコメントでこれを確認しました。

アップデート#2 - 考えられる解決策

(I)問題解決のための提案とともに、一部のサイトリンクに2番目のコメントを残しました。リンクのタイトルは次のとおりです。

特に、このセクションでは次のことを行います。

PAM設定をいくつか変更すると、問題が解決する可能性があります。

答え2

gdmがホームディレクトリにあることの1つは、ユーザーリストにユーザーの写真を表示することです。

考えるOpenSUSEはgdm 3.6.2を使用します。これは正しいですか?

私は2つのことをお勧めします:

  1. デバッグロギングの有効化gdm デバッグセクション、gdmを再実行し、システムログに役立つものがあることを確認してください。
  2. 次のようにユーザーリストを無効にしてみてください。簡単なグリーティングの設定

答え3

.dmrcおそらく、ユーザーセッション設定のロードに似たものを探しているでしょう。これを確認するには、gdmプロセスに接続し、開こうとstraceしているファイルが何であるか(そしてどこで停止するのか)を確認してください。次のようなものを使用したい場合があります。

strace -f -o /path/to/logfile PID_OF_GDM

-fまた、-oログをファイル(stderrではなく)にリダイレクトしてサブプロセスを追跡します。

この場合、インストールする前にファイルをユーザーディレクトリに配置して問題を解決します(ただし、ユーザーは変更できません)。

競合が発生する前にGDMに接続するのが簡単でない場合は、実行可能プログラム(適切なシステムデバイス、またはsysvinitの使用に固執している場合はinitスクリプト)を編集できます。

ただし、これを取得する最も安全な方法は、元のバイナリを呼び出すgdmラッパースクリプト(名前の変更など)に置き換えることです。gdm.binこれにより、管理者がどのように作成されても追跡されます。出力には一意の名前のファイルを使用することもできます。ラッパースクリプトで$$および/またはを使用できます。`date --iso=ns`

#!/bin/bash
strace -f -o /path/to/gdm-${$}-$(date --iso-8601=ns).strace \
    /path/to/original/gdm.bin

関連情報