sudo 권한으로 실행 시 기존 유저의 환경 변수를 읽지 못하는 경우가 발생하죠?
무엇 때문 일까요?
CentOS 5.x에서 sudo 설정 파일인 /etc/sudoers에는 다음 설정이 있다.
(배포판별로 차이가 있으며, 또한 CentOS 4.x과도 다르다.)
1. Defaults spec중 env_reset, env_keep
Defaults env_reset Defaults env_keep = "...환경변수명..." |
env_reset는 HOME, LOGNAME, PATH, SHELL, TERM, USER을 제외한 모든 환경 변수를 reset시킨다.
현재 실행중인 환경 변수를 그대로 사용하고자 한다면, env_reset 을 주석처리한다. 그러나 이보다 더 안전한 env_keep을 권장한다. env_keep = ""에 정의된 변수명은 사용자의 환경변수값을 유지시켜준다.
2. Defaults spec중 requiretty
Defaults requiretty |
사용자가 실제 tty로 로긴한 경우에만 실행을 허용한다. 따라서, crontab이나 웹프로그램을 통해서 sudo를 실행한 경우는 실행되지 않는다. crontab 등에서 실행하기 위해서는 주석처리한다.
다음과 같이 그룹 사용자 혹은 유저를 추가하여 환경변수를 유지 할 수 있다.
Defaults:%wheel !env_reset Defaults:%users env_keep=PATH
메모리 관련 커널튜닝 (0) | 2014.02.28 |
---|---|
apache+tomcat 로드밸런싱 (0) | 2014.02.26 |
rabbitmq plugins enable (0) | 2014.02.13 |
리눅스 명령어 grep, egrep, fgrep (0) | 2014.02.13 |
/var/log/message에 찍히는 rsync 로그 제외하기 (3) | 2014.01.28 |