내가 아는 한 PAM은 사용자의 셸을 결정하지 않으며 응용 프로그램에 맡겨집니다. PAM의 세션 모듈은 특정 서비스를 사용하여 로그인 할 때마다 수행해야하는 일반적인 작업 및 검사를 수행합니다. 응용 프로그램이 셸을 시작하려는 경우 자유롭게 시작하며 일반적으로 사용자 데이터베이스에서 셸을 찾습니다.
귀하의 질문이 OpenSSH 에 관한 것이라고 가정하면 , 정확히 그렇게합니다 : 일단 사용자가 인증되고 PAM 세션 작업이 완료되면 (PAM¹을 사용하도록 구성된 경우) ssh 서버는 사용자 데이터베이스에서 직접 셸을 조회합니다 PAM 라이브러리를 통해).
사용자 데이터베이스는 /usr/passwd
친구로 제한되지 않습니다 . Linux (내가 언급 한 이후에 사용한다고 가정 shadow
)에서 사용자 데이터베이스를 구성하는 것은의 passwd
설정에 의해 결정됩니다 /etc/nsswitch.conf
. 다중 컴퓨터 설정에서 로컬 데이터베이스에 일반적으로 추가되는 것은 NIS 및 LDAP 입니다. 의 쉘이 아닌 쉘을 사용 /etc/passwd
하려면 구성해야 할 내용 일 수 있습니다 (조금 이상 할 수도 있지만 달성하려는 것을 알려 주면 사람들이 더 나은 제안을 제공 할 수 있습니다).
완전한 셸 액세스 권한이없는 사용자를 원한다면 자연스러운 해결책은 scp, rsync 및 cvs와 같은 소수의 파일 복사 유형 응용 프로그램 만 허용하도록 /etc/passwd
제한된 셸 (예 : rssh) 을 배치 하도록 변경 하는 것 입니다. 사용자 ~/.ssh/authorized_keys
파일 에서 강제 명령을 사용할 수도 있습니다 .
ssh 서버가 수행중인 작업의 추적을 보려면 데몬을로 시작하십시오 ssh -ddd
. ssh -vvv
여기에서 서버의 관점이 가장 중요하지만 클라이언트의 관점을 얻을 수도 있습니다 .
¹
이 PAM 지지체로 구성되며, 경우 OpenSSH를 단지 PAM을 사용 UsePAM
지시로 설정 yes
에서 sshd_config
. PAM을 사용하더라도 PAM 외에 다른 인증 방법을 제공합니다. 특히 공개 키 인증은 PAM을 거치지 않습니다.