6.30. pam_succeed_if - 계정 속성 검사

pam_succeed_if.so [flag...] [condition...]

6.30.1. 설명

pam_succeed_if.so를 이용하면 인증하려는 사용자에게 속한 계정의 속성이나 다른 PAM 항목 값에 따라 인증이 성공하거나 실패하게 만들 수 있다. 용도 하나는 그 검사에 따라 다른 모듈을 적용할지 여부를 선택하는 것이다.

모듈 인자로 조건을 한 개 이상 줘야 하며, 조건이 모두 만족할 때만 인증이 성공하게 된다.

6.30.2. 옵션

다음 flag를 지원한다.

debug

syslog로 보내는 디버깅 메시지를 켠다.

use_uid

인증하려는 사용자가 아니라 응용이 도는 UID의 사용자 계정으로 조건을 평가한다.

quiet

실패나 성공을 시스템 로그로 기록하지 않는다.

quiet_fail

실패를 시스템 로그로 기록하지 않는다.

quiet_success

성공을 시스템 로그로 기록하지 않는다.

audit

알 수 없는 사용자를 시스템 로그로 기록한다.

condition은 필드, 검사 방법, 검사 값, 이렇게 세 단어로 이뤄진다.

사용 가능한 필드로 user, uid, gid, shell, home, ruser, rhost, tty, service가 있다.

field < number

필드의 숫값이 number보다 작다.

field <= number

필드의 숫값이 number 이하다.

field eq number

필드의 숫값이 number와 같다.

field >= number

필드의 숫값이 number 이상이다.

field > number

필드의 숫값이 number보다 크다.

field ne number

필드의 숫값이 number와 다르다.

field = string

필드가 지정된 문자열과 정확히 일치한다.

field != string

필드가 지정된 문자열과 일치하지 않는다.

field =~ glob

필드가 지정된 경로 패턴과 일치한다.

field !~ glob

필드가 지정된 경로 패턴과 일치하지 않는다.

field in item:item:...

필드가 콜론으로 항목이 구분된 목록에 포함돼 있다.

field notin item:item:...

필드가 콜론으로 항목이 구분된 목록에 포함돼 있지 않다.

user ingroup group[:group:....]

사용자가 지정된 그룹(들)에 속해 있다.

user notingroup group[:group:....]

사용자가 지정된 그룹(들)에 속해 있지 않다.

user innetgr netgroup

(user,host)가 지정된 netgroup에 속해 있다.

user notinnetgr group

(user,host)가 지정된 netgroup에 속해 있지 않다.

6.30.3. 제공하는 모듈 종류

모든 모듈 타입(account, auth, password, session)을 제공한다.

6.30.4. 반환 값

PAM_SUCCESS

조건이 참이다.

PAM_AUTH_ERR

조건이 거짓이다.

PAM_SERVICE_ERR

서비스 오류가 발생했거나 인자를 제대로 파싱할 수 없다.

6.30.5. 예시

pam_wheel 동작 방식 흉내내기. 그룹 0 처리는 root 그룹 소속 여부 확인으로 비슷하게만 구현.

auth required pam_succeed_if.so quiet user ingroup wheel:root
    

type가 일치한다고 할 때 UID가 500보다 클 때만 다른 모듈 규칙을 돌린다. default의 수를 조정해서 규칙을 여러 개 건너뛸 수 있다.

type [default=1 success=ignore] pam_succeed_if.so quiet uid > 500
type required othermodule.so arguments...
    

6.30.6. 작성자

Nalin Dahyabhai <nalin@redhat.com>