
私のサーバーの 1 つで、1 日に 1 回か 2 回、次の syslog エントリが表示されます。このサーバーは、Kerberos サービス プリンシパルを使用して、ファイルを AFS スペースにバックアップします。
Dec 6 04:01:06 myserver kernel: [3681180.757245] afs: Tokens for user of AFS id -1 for cell realm.example.com have expired (server 192.168.22.24)
サーバーは Debian wheezy 64 ビットを実行しています。このメッセージの原因を突き止めるにはどうすればよいでしょうか?
答え1
-1 の ID の理由は、トークンがメッセージの表示とほぼ同時に破棄されたためと考えられます。誰かがトークンを「ログから削除」したか、または (より可能性が高いのは) カーネル モジュールの定期的なハウスクリーニング プロセスがトークンの期限切れに気付き、トークンを無効にしたかのどちらかです。-1 の ID は、トークンが無効であるとフラグ付けされる 1 つの方法です (これは、openafs カーネル モジュールの 'unixuser' 構造体の ViceId です)。そのメッセージで常に ID -1 が表示される場合、実際に知るその時点で AFS に認証されているものが少数しか実行されていない場合を除き、これらのメッセージを具体的にトリガーするものは何ですか。
まだ使用していない場合は、k5start または krenew (どちらも Debian のパッケージ「kstart」内) を -t オプション付きで使用して、ファイルのバックアップ プロセスに AFS にアクセスするための期限切れでないトークンがあることを確認する必要があります。
ただし、k5start を使用している場合、-K オプションの動作に関するいくつかのエッジケースにより、期限切れのトークンでアクセスが失敗する可能性があります。http://permalink.gmane.org/gmane.comp.encryption.kerberos.general/18343-K を指定した k5start は、krb5 チケットが今後 2 分間有効であることのみを保証するため、今後約 2 分間またはそれ以下の期間有効な AFS トークンを取得する可能性があります。これらの 2 分間有効なトークンを使用して AFS ファイル サーバーに接続し、通信に 2 分以上かかると、「トークンの有効期限が切れました」というメッセージが表示されてアクセスが失敗する可能性があります。または、AFS サービス プリンシパルの最大チケット有効期間が TGT の最大チケット有効期間よりも短い場合、AFS トークンはチケットよりも先に期限切れになる可能性があり、k5start はトークンを期限切れにします。
-H オプションを -K オプションと一緒に使用して、保証されたチケットの有効期間を長くすることで、このような事態が発生しないようにすることができます。-H をデフォルトの 2 分よりも長い時間 (30 分や 1 時間など) に設定するだけです。または、-a オプションを使用して、k5start/krenew が起動するたびにチケットを常に更新することもできます (これが私の推奨方法です)。ただし、この段落で説明されているすべてのことは、k5start の最新リリース バージョンでは不可能であるため、これを行うには、k5start の新しいリリースを待つか、git からビルドする必要があります。
kinit -kt /path/to/keytab && aklog
これを解決する別の方法は、k5start を使用せず、 AFS にファイルをバックアップするプロセスと同じ PAG で、独自のスクリプトを 1 時間ごとに実行することです。