Linux는 어디에서 비밀번호를 확인합니까?

Linux는 어디에서 비밀번호를 확인합니까?

비밀번호가 다음에 저장되어 있다는 것을 알고 있습니다./etc/shadow

그러나 로그인 프로세스 중에 Linux는 사용자 이름과 비밀번호를 인수로 사용하고 동일한 알고리즘을 사용하여 비밀번호를 암호화한 다음 이를 섀도우에 저장된 비밀번호와 비교한다고 가정합니다.

내 질문은 이 프로세스가 어디에서 발생하는가입니다. (코드) PAM을 검색해 보았으나 유용한 내용을 찾을 수 없었습니다.

답변1

PAM에서 저장된 /etc/shadow로컬 비밀번호의 경우pam_unix.

뒤에서 검증은 다음에 의해 수행됩니다.crypt기능. (사실 대부분의 경우crypt_r.) 이름에도 불구하고 이 기능은 비밀번호를 암호화하거나 해독하지 않습니다.해시 값비밀번호. 의 비밀번호 필드에는 /etc/shadow해시 매개변수와 실제 해시 값이 포함되어 있습니다.

pam_unix 모듈의 소스 코드는 다음과 같습니다.리눅스-PAM. 이 함수의 소스 코드 crypt는 C 라이브러리(glibc).

답변2

비밀번호가 /etc/shadow에 저장되어 있다는 것을 알고 있습니다.

Gilles가 이미 말했듯이 비밀번호 해시만 저장되며 /etc/shadow이는 가능한 위치 중 하나일 뿐이며 ldap서버나 NIS테이블에 전체적으로 저장될 수 있습니다.

그러나 로그인 프로세스 중에 Linux는 사용자 이름과 비밀번호를 인수로 사용하고 동일한 알고리즘을 사용하여 비밀번호를 암호화한 다음 이를 섀도우에 저장된 비밀번호와 비교한다고 가정합니다.

프로세스는 그보다 훨씬 더 유연합니다. PAM구성 에 따라 시스템은 여러 모듈을 순차적으로 검사하고 하나가 성공하여 충분하다고 선언되거나 하나가 실패하여 필수로 선언되면 중지될 수 있습니다. 모듈은 로그인을 시도하는 사용자와 대화를 설정할 수 있으므로 제공되는 것이 반드시 사용자 이름/비밀번호 쌍일 필요는 없습니다. 예를 들어 rlogin( pam_rhosts_auth)를 사용하면 사용자에게 비밀번호를 제공하지 않고도 액세스 권한을 부여할 수 있습니다. 비밀번호가 곧 만료된다는 경고, 만료된 비밀번호를 변경하라는 메시지 및 유사한 대화형 작업을 사용자에게 알려야 합니다.

내 질문은 이 프로세스가 어디에서 발생하는가입니다. (코드) PAM을 검색해 보았으나 유용한 내용을 찾을 수 없었습니다.

Gilles는 또한 et 파일 항목 pam_unix을 작업하면서 이 질문에 답했습니다 ./etc/passwd/etc/shadow

관련 정보