sshd
PAM을 사용하도록 구성 ( libpam.so.0
공유 라이브러리에 연결) 했고 다음이 있다고 가정해 보겠습니다 /etc/pam.d/sshd
.
auth requisite pam_nologin.so
auth required pam_env.so
auth required pam_unix.so try_first_pass
auth required pam_google_authenticator.so
account requisite pam_nologin.so
account required pam_unix.so try_first_pass
password requisite pam_cracklib.so
password required pam_unix.so use_authtok nullok shadow try_first_pass
session required pam_loginuid.so
session required pam_limits.so
session required pam_unix.so try_first_pass
session optional pam_umask.so
session optional pam_systemd.so
session optional pam_env.so
session optional pam_lastlog.so silent noupdate showfailed
sshd
PAM이 각 스택의 끝에서 성공 또는 실패를 알리는 것이 맞습니까 ? 그럼 먼저 auth
시설을 처리한 다음 결과를 에 반환하고 sshd
, 그런 다음 account
시설을 처리하고 account
스택 결과를 에 반환하는 sshd
식인가요? 인증된 세션이 종료되면 데몬이 PAM에게 알립니까?
답변1
어떤 의미에서는 그런 일이 일어나고 있지만 나는 그렇게 말하고 싶지 않습니다. PAM은 sshd에 적극적으로 알리지 않지만 sshd는 함수 호출을 통해 PAM에게 요청하기 때문입니다(예:pam_authenticate
,pam_acct_mgmt
등) 결과에 따라 조치를 취합니다. PAM은 또한 세션이 언제 닫히는지 자동으로 알지 못하지만 세션이 닫히는 것을 통과해야 합니다.pam_close_session
(다른 응용 프로그램에서 세션을 닫을 수 있기 때문입니다.)
openssh의 소스를 찾아 sshd가 PAM을 활용하는 위치와 방법을 확인할 수 있습니다. 나는 또한 추천한다Linux-PAM 애플리케이션 개발자 가이드세부 사항에 관심이 있다면.
답변2
스택이 인증, 계정, 비밀번호 및 세션을 의미하는 경우 아니요, PAM은 각 항목 이후에 sshd에 알리지 않습니다. 스태킹은 한 가지 작업, 즉 액세스 권한을 부여하거나 거부하기 위해 함께 사용된다는 의미입니다. 첫 번째 열은 모듈 인터페이스, 두 번째 열은 제어 플래그, 세 번째 열은 모듈 이름 및 매개변수입니다. 먼저 auth는 비밀번호를 확인하고, account는 사용된 계정에 접근 권한이 있는지 확인하고, 비밀번호는 비밀번호 변경에 사용되고, 세션은 홈 디렉토리를 마운트하거나 메일을 활성화하는 데 사용됩니다. 제어 플래그는 자명합니다. 필수는 true여야 함을 의미하고, 충분은 실패하면 무시되지만 성공하면 계속됨을 의미합니다. 마지막 것은 이 경우 PAM이 어떤 모듈을 사용하는지 알려줍니다.
2) 아니요.