Linuxはどこでパスワードを確認しますか?

Linuxはどこでパスワードを確認しますか?

パスワードが次に保存されていることを知っています。/etc/shadow

ただし、ログインプロセス中に、Linuxはユーザー名とパスワードを引数として使用し、同じアルゴリズムを使用してパスワードを暗号化し、それをシャドウに保存されているパスワードと比較すると仮定します。

私の質問は、このプロセスがどこで発生するかです。 (コード)PAMを検索してみましたが、役に立つものが見つかりませんでした。

答え1

PAMに保存された/etc/shadowローカルパスワードの場合pam_unix

裏での検証は、以下によって行われる。crypt機能。 (事実ほとんどの場合crypt_r.) 名前にもかかわらず、この機能はパスワードを暗号化または復号化しません。ハッシュ値パスワード。のパスワードフィールドには、/etc/shadowハッシュパラメータと実際のハッシュ値が含まれています。

pam_unix モジュールのソースコードは次のとおりです。Linux-PAM。この関数のソースコードcryptはCライブラリ(glibc)。

答え2

パスワードが/etc/shadowに保存されていることを知っています。

Gillesがすでに述べたように、パスワードハッシュのみが保存され、/etc/shadowこれは可能な場所の1つにすぎず、ldapサーバーまたはNISテーブルに完全に保存できます。

ただし、ログインプロセス中に、Linuxはユーザー名とパスワードを引数として使用し、同じアルゴリズムを使用してパスワードを暗号化し、それをシャドウに保存されているパスワードと比較すると仮定します。

プロセスはそれよりはるかに柔軟です。PAM構成によっては、システムは複数のモジュールを順次チェックし、1つが成功して十分であると宣言したり、1つが失敗して必須と宣言したりすると停止することがあります。モジュールはログインしようとしているユーザーと会話を確立できるため、提供されるものは必ずしもユーザー名とパスワードのペアである必要はありません。たとえば、rloginpam_rhosts_auth)を使用すると、ユーザーにパスワードを提供せずにアクセス権を付与できます。パスワードがすぐに期限切れになるという警告、期限切れのパスワードを変更するように求めるメッセージ、および同様の対話型タスクをユーザーに知らせる必要があります。

私の質問は、このプロセスがどこで発生するかです。 (コード)PAMを検索してみましたが、役に立つものが見つかりませんでした。

Gillesはまた、etファイルエントリpam_unixを扱ってこの質問に答えました。/etc/passwd/etc/shadow

関連情報