pam_env.so
[
debug
] [
conffile=conf-file
] [
envfile=env-file
] [
readenv=0|1
] [
user_envfile=env-file
] [
user_readenv=0|1
]
PAM 모듈 pam_env를 이용해 환경 변수를 설정 및 해제할 수 있다. 앞서 설정된 환경 변수들뿐 아니라 PAM_RHOST 같은 PAM_ITEM 사용도 지원한다.
기본적으로 /etc/security/pam_env.conf
파일에서 변수 설정(해제) 규칙을 가져온다. conffile
옵션으로 다른 파일을 지정할 수 있다.
두 번째로 각 행에 단순 KEY=VAL
짝이 있는 파일(기본은 /etc/environment
)을
읽어 들이게 된다. envfile 옵션으로
다른 파일을 지정할 수 있다. 그리고 readenv
옵션으로 이 동작을 아예 끌 수 있다.
세 번째로 사용자별 설정 파일(기본적으로
$HOME/.pam_environment
)을 읽어 들이게
된다. user_envfile 옵션으로
기본 파일을 바꿀 수 있고 user_readenv
옵션으로 켜고 끌 수 있다.
PAM 환경 변수 설정이 다른 모듈에 부작용을 일으킬 수 있으므로 이 모듈을 스택에서 마지막 모듈로 하는 게 좋다.
pam_env(8)에서
설정, 해제, 변경할 환경 변수를 /etc/security/pam_env.conf
파일에서 지정한다. 누군가 로그인 할 때 이 파일을 읽어서
그 내용에 따라 환경 변수를 설정한다.
각 행은 변수 이름으로 시작하고, 그 다음으로 두 가지 옵션 DEFAULT와 OVERRIDE가 올 수 있다. DEFAULT를 이용해 관리자가 변수의 값을 어떤 기본값으로 설정할 수 있으며 값을 주지 않으면 빈 문자열로 상정한다. OVERRIDE 옵션은 그 변수가 있으면 (기본값을 오버라이드하고) 그 값을 집어넣게 한다. OVERRIDE를 쓰지 않으면 ""를 상정하며 아무것도 오버라이드하지 않는다.
VARIABLE
[DEFAULT=[value]
]
[OVERRIDE=[value]
]
value에 ${string} 문법을 써서 (존재하지 않을 수도 있는) 환경 변수를 쓸 수 있으며 @{string} 문법을 써서 (존재하지 않을 수도 있는) PAM_ITEM 및 HOME과 SHELL을 쓸 수도 있다. $ 및 @ 문자를 리터럴 값으로 쓰려면 백슬래시로 이스케이프하면 된다. ""로 값의 범위를 정할 수 있으며 "를 이스케이프하는 건 지원하지 않는다. 참고로 이용하고 싶을 여러 환경 변수가 모듈 호출 시에는 설정돼 있지 않을 수 있다. 예를 들어 아래에서 ${HOME}을 여러 번 쓰고 있지만 많은 PAM 응용에선 적시에 그 값을 제공해 주지 않는다. 특수 변수 @{HOME}과 @{SHELL}은 passwd 항목에서 가져온 그 사용자의 값으로 확장된다.
행 시작에 (앞에 공백 없이) "#" 문자를 써서 주석 행이라고 표시할 수 있다.
/etc/environment
파일에는 설정할
환경 변수들을 지정한다. 파일의 각 행이 단순
NAME=VALUE 짝으로 돼 있어야 한다.
pam_env(8)
모듈에서 pam_env.conf
다음에
그 파일을 읽는다.
conffile=/path/to/pam_env.conf
기본 파일 대신 사용할 pam_env.conf
스타일 설정 파일을 나타낸다. 서비스별로 다른 환경이 필요할 때
유용할 수 있다.
debug
syslog(3)로 많은 디버그 정보를 찍는다.
envfile=/path/to/environment
기본 파일 대신 사용할 environment
파일을 나타낸다. 문법은 각 행에 단순
KEY=VAL 짝이 있는 것이다.
bash 호환성을 위해 export 명령을
쓸 수 있으며 그냥 무시된다.
서비스별로 다른 환경이 필요할 때 유용할 수 있다.
readenv=0|1
envfile로 지정한 파일 읽기를 켜거나 끈다. 0은 끄고 1은 켠다. 기본적으로 이 옵션이 꺼져 있다. PAM 환경의 사용자 제공 환경 변수들이 시스템 관리자의 의도와 달리 스택에 있는 후속 모듈의 동작에 영향을 줄 수도 있기 때문이다.
보안상 문제 때문에 1.5.0부터 이 기능이 폐기 예정 상태이며 향후 어느 시점에 완전히 제거될 예정이다.
user_envfile=filename
기본 파일 대신 사용할 .pam_environment
파일을 나타낸다. 문법은 /etc/security/pam_env.conf와
같다. 사용자 홈 디렉터리를 기준으로 한 파일명이다.
서비스별로 다른 환경이 필요할 때 유용할 수 있다.
user_readenv=0|1
사용자별 environment 파일 읽기를 켜거나 끈다. 0은 끄고 1은 켠다. 기본적으로 이 옵션이 켜져 있다.
관련 데이터나 옵션을 모두 얻지 못했다.
메모리 버퍼 오류.
pam_env.conf 및 환경 파일을 찾을 수 없다.
환경 변수를 설정했다.
/etc/security/pam_env.conf
파일에 지정할 수 있는 몇 가지 예시들이다.
REMOTEHOST 변수를 원격의 호스트로 설정. 없으면 설정하지 않는 게 아니라 "localhost"로 설정.
REMOTEHOST DEFAULT=localhost OVERRIDE=@{PAM_RHOST}
적당해 보이면 DISPLAY 변수 설정.
DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
몇 가지 간단한 변수들.
PAGER DEFAULT=less MANPAGER DEFAULT=less LESS DEFAULT="M q e h15 z23 b80" NNTPSERVER DEFAULT=localhost PATH DEFAULT=${HOME}/bin:/usr/local/bin:/bin\ :/usr/bin:/usr/local/bin/X11:/usr/bin/X11 XDG_DATA_HOME DEFAULT=@{HOME}/share/
실용성과는 거리가 있는 변수 문법 이스케이프 예시들.
DOLLAR DEFAULT=\$ DOLLARDOLLAR DEFAULT= OVERRIDE=\$${DOLLAR} DOLLARPLUS DEFAULT=\${REMOTEHOST}${REMOTEHOST} ATSIGN DEFAULT="" OVERRIDE=\@