6.35. pam_userdb - db 데이터베이스로 인증

pam_userdb.so db=/path/database [ debug ] [ crypt=[crypt|none] ] [ icase ] [ dump ] [ try_first_pass ] [ use_first_pass ] [ unknown_ok ] [ key_only ]

6.35.1. 설명

pam_userdb 모듈을 이용해 버클리 DB 데이터베이스에 저장된 값으로 사용자명/패스워드 쌍을 검증한다. 사용자명을 데이터베이스 색인으로 하고 사용자명 키에 대응하는 데이터 필드가 패스워드가 된다.

6.35.2. 옵션

crypt=[crypt|none]

데이터베이스에 패스워드가 암호화돼서 저장돼 있는지 아니면 평문으로 저장돼 있는지 나타낸다. crypt이면 패스워드가 crypt(3) 형식으로 데이터베이스에 저장돼 있어야 한다. none을 택한 경우에는 패스워드가 데이터베이스에 평문으로 저장돼 있어야 한다.

db=/path/database

데이터베이스 /path/database를 사용해 검색을 수행한다. 기본값이 없고, 데이터베이스를 지정하지 않으면 모듈에서 PAM_IGNORE를 반환한다. 뒤에 .db를 붙이지 않고 데이터베이스 파일 경로를 지정한다는 점에 유의하라.

debug

디버그 정보 찍기. DB의 해시와 계산한 해시 모두 syslog로 찍힌다는 점에 유의하자.

dump

데이터베이스의 모든 항목을 로그로 찍는다. 특별한 이유가 없으면 하지 말 것!

icase

패스워드 검증에서 대소문자를 무시하게 한다. (등록 번호를 이용하는 등의 경우.) 패스워드 평문 저장 방식에서만 제대로 동작한다.

try_first_pass

앞서 다른 모듈에서 응용과 대화를 해서 얻은 인증 토큰을 이용한다. 토큰을 얻을 수 없으면 모듈에서 대화를 시도하게 된다. 인증 토큰을 다뤄야 하는 여러 모듈을 함께 이용할 때 이 옵션을 쓸 수 있다.

use_first_pass

앞서 다른 모듈에서 응용과 대화를 해서 얻은 인증 토큰을 이용한다. 토큰을 얻을 수 없으면 실패로 처리하게 된다. 인증 토큰을 다뤄야 하는 여러 모듈을 함께 이용할 때 이 옵션을 쓸 수 있다.

unknown_ok

검사 대상 사용자가 데이터베이스에 없는 경우에 오류를 반환하지 않는다. 이를 이용하면 pam_userdb 모듈을 여러 번 쌓아서 여러 데이터베이스를 가지고 사용자명/패스워드를 검사할 수 있다.

key_only

사용자명과 패스워드를 'username-password'처럼 붙여서 데이터베이스 해시로 하고 값은 신경쓰지 않는다. 사용자명과 패스워드를 대시로 연결한 키가 뭐든 결과를 반환하면 그 사용자가 유효한 것이다. 사용자명은 유일하지 않을 수도 있지만 사용자명과 패스워드의 쌍은 유일한 경우에 유용하다.

6.35.3. 제공하는 모듈 종류

authaccount 모듈 타입을 제공한다.

6.35.4. 반환 값

PAM_AUTH_ERR

인증 실패.

PAM_AUTHTOK_RECOVERY_ERR

인증 정보를 얻어 올 수 없음.

PAM_BUF_ERR

메모리 버퍼 오류.

PAM_CONV_ERR

대화 실패.

PAM_SERVICE_ERR

서비스 모듈의 오류.

PAM_SUCCESS

성공.

PAM_USER_UNKNOWN

기반 인증 모듈에서 사용자를 알 수 없음.

6.35.5. 예시

auth  sufficient pam_userdb.so icase db=/etc/dbtest
    

6.35.6. 작성자

Cristian Gafton <gafton@redhat.com>이 pam_userdb를 작성했다.