LDAPが有効になっていても、pam_unix.soが「必須」に設定されているのはなぜですか?

LDAPが有効になっていても、pam_unix.soが「必須」に設定されているのはなぜですか?

私のRocky Linux 9.3システムでは、LDAP認証が有効になっていてauthselect正常に動作します。ローカルアカウントとLDAP専用アカウントを介してSSH経由でこのコンピュータにログインできます。しかし、/etc/pam.d/password-authmyを含めることは/etc/pam.d/sshd現在の動作と矛盾するようです。これには以下が含まれます。

account     required                                     pam_unix.so
account     sufficient                                   pam_localuser.so
account     sufficient                                   pam_usertype.so issystem
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required                                     pam_permit.so

LDAPアカウントのみが失敗しますpam_unix.so(いいえ?)。はいpam_unix.so。 LDAPアカウントだけでは(成功しても)requiredフルテストに失敗するようです。ただし、実際にはLDAPアカウントのみが機能します。なぜ?accountpam_sss.so

man pam.conf説明する:

必須:これらのPAMが失敗すると、最終的にPAM-APIは失敗を返します。

十分:そのようなモジュールが成功し、以前に必要なモジュールが失敗しませんでした。PAMフレームワークはアプリケーションに成功を返します。

OK:この戻りコードがモジュールスタック全体の戻りコードに直接影響する必要があることをPAM管理者に通知します。つまり、スタックの以前の状態のためにPAM_SUCCESSが返された場合、モジュールの戻りコードはその値を上書きします。ノート、スタックの以前の状態にモジュールエラーを示す値が含まれている場合、この "ok"値はその値を上書きするために使用されません。 (私の強調)

そこにも別の問題required pam_unix.so問題が発生しました(予想通り)。

私のシステムが機能するのはなぜですか?

答え1

これはではaccountありませんauth。コンポーネントの場合accountman pam_unix説明する:

The account component performs the task of establishing the status of the user's account
and password based on the following shadow elements: expire, last_change, max_change,
min_change, warn_change. In the case of the latter, it may offer advice to the user on
changing their password or, through the PAM_AUTHTOKEN_REQD return, delay giving service to
the user until they have established a new password. The entries listed above are
documented in the shadow(5) manual page. Should the user's record not contain one or more
of these entries, the corresponding shadow check is not performed.

(ローカル)パスワードが期限切れでない限り、ログインはブロックされません。

そこにも別の問題、必須pam_unix.soが問題を引き起こしました(予想どおり)。

実際、いいえあなたが期待していたように。確認する受け入れられた回答、この質問のOPから:

[問題] Pam認証はカスケード方式で機能するため、すでにローカルアカウントを持っている場合は、アカウントサービスを引き続き使用する理由はありません。したがって、認証には最初の行(pam_unix.so)で十分です。以前は、3行すべてログインが必要であったため、スタックはpam_ldap.soも確認していましたが、LDAPサービスがダウンしているかアクセスできない場合、認証スタックは中断されました。

pam_unix.so彼らの問題は彼らが創造するように頼まれた問題ではありません。pam_ldapLDAP サービスが失敗すると、スタックの下で問題が発生します。成功した場合はスキップを許可するsufficient代わりに使用してください。requiredコメントでこの質問のOPが確認したように、実際にはローカルでないユーザーが返されたため、スタックオーバーフローの質問のOPは、ローカルでないユーザーに対して常に(無意味に)成功する構成を設定したようです。正しい方法はthis質問のように使用するようです。pam_ldappam_unixpam_unixPAM_SUCCESSpam_localuser

関連情報