pam 없이 ssh나 다른 서비스가 어떻게 작동하는지 이해할 수 없습니다. pam은 모든 규칙을 정의하고, 내가 올바르게 이해했다면 다른 모듈을 호출하여 리소스나 제한 등을 설정합니다.
SSH를 설정하면 SSH가 어떻게 작동하는지 설명해 줄 수 있나요 UsePam=No
? 인증, 세션 생성 등을 담당하는 모듈은 무엇입니까?
답변1
으로 설정하면 UsePam no
PAM sshd
모듈의 작업을 최대한 자체적으로 수행합니다.
루트로 실행되기 때문에 선택한 비밀번호 해싱 알고리즘 해시 시작을 살펴봄으로써 sshd
(또는 NIS, LDAP 또는 시스템의 C 라이브러리가 지원하는 다른 저장 위치에서) 사용자의 비밀번호 해시 및 기타 정보를 가져오는 기능을 사용할 수 있습니다. getspnam(3)
그런 다음 /etc/shadow
결과의 솔트를 사용하여 사용자가 입력한 비밀번호를 해시합니다. 그런 다음 결과는 검색된 전체 비밀번호 해시와 비교됩니다. 일치하면 비밀번호 인증이 성공한 것입니다.getspnam(3)
crypt(3)
getspnam(3)
계정 확인 단계도 매우 간단합니다. 비밀번호 만료 정보가 결과에 포함되고 getspnam(3)
, 사용자의 셸이 다시 확인되어 해당 정보가 존재하고 목록에 나열되어 있는지 확인합니다 /etc/shells
.
세션 생성에는 여러 단계가 포함되며, 세부 사항은 서비스가 실행 중인 Linux 또는 Unix 유형에 따라 다릅니다. 그러나 일반적으로 쉘 세션의 경우 sshd
이 특정 연결을 처리하는 하위 프로세스는 세션 정보를 및 utmp
files 에 기록하고 wtmp
의사 TTY를 설정한 다음 fork()
다른 하위 프로세스가 사용자의 UID 및 그룹 멤버십을 가져와 사용자의 홈 디렉터리로 전환하고 다음을 호출합니다. setsid()
대화의 리더가 되어 보세요. 그러면 이 프로세스가 exec()
사용자의 셸로 들어갑니다 .
쉘이 종료되면 sshd
의사 TTY 마스터를 보유한 하위 프로세스는 세션 종료를 파일에 기록하는 등 필요한 정리 작업을 수행합니다 wtmp
.
이는 PAM이 발명되기 전에 Unix 세션이 처리된 방식과 대략 같습니다.