Linuxは古いパスワードと新しいパスワードをどのように比較しますか?

Linuxは古いパスワードと新しいパスワードをどのように比較しますか?

私はLinux(少なくともDebian)ではすべてのパスワードがハッシュされています/etc/shadow

ただし、おかげでlibpam-cracklibいくつかのパスワードルールを追加できます。たとえば、古いパスワードと新しいパスワードの間で同じ文字数を表すパラメータを/etc/pam.d/common-password設定できます。Difok

しかし、新しいパスワードを入力すると、Linuxは私の実際のパスワードを知らないので(ハッシュのみ)、古いパスワードとの類似性をどのように知ることができますか?

ありがとうございます!

答え1

PAMモジュールにパスワードの変更(またはパスワードの変更に参加)を要求すると、モジュールはユーザーが指定した新しいパスワードと古いパスワードを検索できます。クリストファーpasswd古いパスワードと新しいパスワードを要求します(他のユーザーのパスワードで実行して変更しない限り)root。モジュールはこの情報を使用して、現在のハッシュを反転したり、バリアントを列挙することなく2つのパスワードを比較できます。

関連するPAM機能は次のとおりです。pam_sm_chauthtokそしてpam_get_item、その文書(およびその中で参照されている他のページ)は、進行状況を理解するのに役立ちます。libpam-cracklibでどのように行われているかを確認できます。ソースコード

関連情報