pam 규칙을 명확히 하려면 `success=3`을 사용하세요.

pam 규칙을 명확히 하려면 `success=3`을 사용하세요.

pam_ssh_agent_auth.soSSH pubkey를 통해 인증할 때 sudo를 사용하는 일부 사용자에게 비밀번호 없는 환경을 제공하도록 구성하려고 합니다 .

나는보기 시작했다젠투 위키, 사용하는 것이 좋습니다

...
auth [success=3 default=ignore] pam_ssh_agent_auth.so file=/etc/ssh/sudo_authorized_keys
auth    include     system-auth                 <- 1st skipped
account include     system-auth                 <- 2nd skippedm
session include     system-auth                 <- 3rd skipped
...                                             <- should continue from here

저는 페도라를 착용하고 있는데 /etc/pam.d/sudo다음과 같습니다.

auth     [success=3 default=ignore] pam_ssh_agent_auth.so file=/etc/ssh/sudo_authorized_keys
auth     include     system-auth
account  include     system-auth
password include     system-auth
session  optional    pam_keyinit.so revoke
session  required    pam_limits.so
session  include     system-auth

저는 PAM 전문가는 아니지만 매뉴얼 페이지를 보면 success=3"이 규칙이 성공하면 다음 3줄을 건너뜁니다"라고 해석합니다. 따라서 사용자가 올바르게 로그인하고 프록시가 있으면 비밀번호를 얻을 것으로 예상합니다. 묻지 마세요.

아아, 이것은 작동하지 않습니다. 어쨌든 비밀번호를 묻는 메시지가 표시됩니다.

[success=3 default=ignore]using을 사용하지 않고 그냥 사용하면 기본적으로 동일하다고 생각되며 인증은 예상대로 작동합니다. sufficient이 경우 모듈 스택이 다음 3개 module로 구성되어 있으므로 아무런 차이를 볼 수 없습니다.

분명히 사용 [success=3 default=ignore]하고 sufficient동일한 결과를 얻지 못하는 것과 동일한 것이 아닙니다.

누군가 실제 차이점이 무엇인지, 이 경우 전자가 작동하지 않는 이유를 설명해 줄 수 있습니까?

감사해요

답변1

첫째, include해당 라인은 PAM 모듈이 아닙니다. 계산보다는

auth     include     system-auth

건너뛸 항목으로 PAM 라이브러리는 auth include이 행을 auth로 대체합니다 /etc/pam.d/system-auth. 따라서 건너뛴 3개 행을 확인하려면 [success=3 default=ignore]먼저 include해당 명령문을 파일의 적절한 내용으로 바꾼 system-auth다음 건너뛸 행 수를 계산 해야 합니다. .

[success=3 default=ignore]둘째, 모듈 유형 전반에서 작동하지 않는다고 생각합니다 .

사용자를 인증할 때 애플리케이션은 첫 번째 호출을 수행하며 pam_authenticate(), 그 동안 PAM 라이브러리는 auth해당 유형의 항목만 처리합니다. 사용자가 성공적으로 인증되면 애플리케이션은 해당 유형의 항목 pam_acct_mgmt()만 처리하는 이 를 호출할 수 있습니다. account완료되면 pam_open_session()해당 유형의 항목만 처리됩니다 session.

인증 패스, 계정 관리 패스, 세션 설정 패스는 서로 다른 작업이므로 auth [success=3 default=ignore]다음 3줄만 건너뛰면 될 줄 알았습니다.auth유형만. 귀하의 경우 건너뛸 줄은 /etc/pam.d/system-auth파일 내부에 있습니다.


를 사용하면 행에 나열된 모듈이 인증 성공을 보고하면 행 처리가 즉시 중지됨 auth sufficient을 의미합니다 . 즉, 파일 의 줄 수에 관계없이 모든 줄을 건너뜁니다.authauth sufficientauthsystem-auth

을 사용 auth [success=3 default=ignore]하고 auth다음 줄에 줄이 있는 경우 include포함된 파일도 조사하여 무슨 일이 일어날지 정확히 이해해야 합니다. 이 작업을 수행할 때 여전히 암호를 요구한다는 사실은 파일 auth에 3줄 이상이 있다는 것을 분명히 나타냅니다 system-auth.

답변2

매뉴얼 페이지에서:

      sufficient
           if such a module succeeds and no prior required module has failed the PAM
           framework returns success to the application or to the superior PAM stack
           immediately without calling any further modules in the stack. A failure of a
           sufficient module is ignored and processing of the PAM module stack
           continues unaffected.

귀하의 경우에는 "인증 키" 파일을 확인하자마자 성공을 반환합니다.

Fedora 예에서 "인증 키" 파일을 성공적으로 확인하면 다음 두 단계를 건너뛰고 pam_limits.so가 sudo 사용자가 사용할 수 있는 리소스 수에 대한 제한을 설정하는 등 일부 세션 확인을 수행합니다.

관련 정보