6.31. pam_time - 시간에 의한 접근 통제

pam_time.so [ conffile=conf-file ] [ debug ] [ noaudit ]

6.31.1. 설명

pam_time 모듈은 사용자를 인증하는 게 아니라 시스템이나 특정 응용에 대한 접근을 특정 요일의 특정 시간으로, 또 여러 터미널 회선으로 제한한다. 사용자 이름, 하루 중의 시간, 요일, 요청 서비스, 요청을 하고 있는 터미널에 따라서 (개별) 사용자에게 접근을 거부하도록 구성할 수 있다.

시간/포트 접근 규칙을 가져오는 설정 파일은 기본적으로 /etc/security/time.conf다. conffile 옵션으로 다른 파일을 지정할 수 있다.

감사 지원을 포함해서 Linux-PAM이 컴파일돼 있으면 모듈에서 접근을 거부하는 경우 보고를 하게 된다.

6.31.2. 설명

pam_time 모듈은 사용자를 인증하는 게 아니라 시스템이나 특정 응용에 대한 접근을 특정 요일의 특정 시간으로, 또 여러 터미널 회선으로 제한한다. 사용자 이름, 하루 중의 시간, 요일, 요청 서비스, 요청을 하고 있는 터미널에 따라서 (개별) 사용자에게 접근을 거부하도록 구성할 수 있다.

이 모듈이 제대로 동작하려면 올바른 형식의 /etc/security/time.conf 파일이 있어야 한다. 공백은 무시되고 '\'(개행 이스케이프)로 행을 연장할 수 있다. '#' 다음 내용은 행이 끝날 때까지 무시된다.

행 문법은 다음과 같다.

services;ttys;users;times

요컨데 각 규칙이 한 줄씩을 차지하며 개행 또는 주석 시작 '#'으로 끝이 난다. 필드 네 개가 세미콜론 ';'으로 구분돼 있다.

첫 번째 필드인 services 필드는 규칙이 적용되는 PAM 서비스 이름의 논리식이다.

두 번째 필드인 tty 필드는 이 규칙이 적용되는 터미널 이름의 논리식이다.

세 번째 필드인 users 필드는 이 규칙이 적용되는 사용자의 논리식, 또는 사용자 netgroup이다.

논리식이란 선택적으로 개별 토큰 앞에 '!'(논리 not)를 붙이고 '&'(논리 and)나 '|'(논리 or)로 이어 붙인 것이다.

이 항목들에서 단순 와일드카드 '*'를 한 번만 쓸 수 있다. netgroup에는 와일드카드나 논리 연산자를 쓸 수 없다.

times 필드를 이용해 규칙이 적용되는 시간을 지정한다. 날은 두 글자짜리 항목을 연달아 써서 지정한다. 예를 들어 MoTuSa는 월요일, 화요일, 토요일이다. 참고로 요일을 반복하면 해제되므로 MoMo는 아무 날도 지정하지 않은 것이고, MoWk는 월요일을 뺀 평일이다. 쓸 수 있는 두 글자 조합은 Mo Tu We Th Fr Sa Su Wk Wd Al이며, 끝의 둘은 각각 주말과 7일 전체다. 마지막으로 예를 들자면 AlFr는 금요일을 제외한 모든 요일을 뜻한다.

날/시간 범위 각각의 앞에 '!'를 붙여서 "~를 뺀 전체"를 나타낼 수 있다. 시간 범위 부분은 24시간제 HHMM 시간 둘을 하이픈으로 연결한 것이며 각각 시작 시간과 끝 시간을 나타낸다. (끝 시간이 시작 시간보다 작으면 다음 날에 적용되는 것으로 본다.)

규칙이 적용되려면 요청 프로세스가 services+ttys+users 모두를 만족시켜야 한다.

참고로 현재는 세션을 강제로 끝내는 데몬이 없다. 고칠 필요가 있다.

잘못된 형식의 규칙이 있으면 syslog(3)로 오류로 남긴다.

6.31.3. 옵션

conffile=/path/to/time.conf

기본 파일 대신 사용할 time.conf 스타일 설정 파일을 나타낸다.

debug

syslog(3)로 약간의 디버그 정보를 찍는다.

noaudit

허가 안 된 시간의 로그인을 감사 서브시스템으로 알리지 않는다.

6.31.4. 제공하는 모듈 종류

account 타입만 제공한다.

6.31.5. 반환 값

PAM_SUCCESS

접근이 인가되었다.

PAM_ABORT

관련 데이터를 모두 얻지 못했다.

PAM_BUF_ERR

메모리 버퍼 오류.

PAM_PERM_DENIED

접근이 인가되지 않았다.

PAM_USER_UNKNOWN

시스템에게 알지 못하는 사용자다.

6.31.6. 파일

/etc/security/time.conf

기본 설정 파일

6.31.7. 예시

다음은 /etc/security/time.conf에 지정할 수 있는 예시 몇 가지다.

root를 제외한 모든 사용자에게 항상 콘솔 로그인 접근을 거부하기:

login ; tty* & !ttyp* ; !root ; !Al0000-2400
      

일과 시간 외에만 (PAM을 이용하게 설정된) 게임에 접근. 사용자 waster에는 규칙이 적용되지 않음:

games ; * ; !waster ; Wd0000-2400 | Wk1800-0800
      

6.31.8. 작성자

Andrew G. Morgan <morgan@kernel.org>이 pam_time을 작성했다.