pam_ssh_agent_auth.so
SSH 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
을 의미합니다 . 즉, 파일 의 줄 수에 관계없이 모든 줄을 건너뜁니다.auth
auth sufficient
auth
system-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 사용자가 사용할 수 있는 리소스 수에 대한 제한을 설정하는 등 일부 세션 확인을 수행합니다.