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. 구성요소 의 경우 account,man 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)이면 충분합니다. 이전에는 세 줄 모두 로그인이 필요했기 때문에 스택이 pam_ldap.so도 확인했고, LDAP 서비스가 다운되었거나 액세스할 수 없는 경우 인증 스택이 중단되었습니다.

pam_unix.so그들의 문제는 그들이 창조하도록 요청받은 문제가 아닙니다 . pam_ldapLDAP 서비스가 실패하면 스택 아래에서 문제가 발생합니다. 성공하면 건너뛰기를 허용하는 sufficient대신 사용하세요. required댓글에서 이 질문의 OP가 확인한 대로 실제로 로컬이 아닌 사용자가 반환되었으므로 스택 오버플로 질문의 OP는 로컬이 아닌 사용자에 대해 항상 (무의미하게) 성공하는 구성을 설정한 것 같습니다. 올바른 방법은 this 질문과 같이 사용하는 것 같습니다.pam_ldappam_unixpam_unixPAM_SUCCESSpam_localuser

관련 정보