본문 바로가기

TroubleShooting

[Linux] CentOS sudo로 톰캣 실행시 JAVA 환경변수 리셋 문제


Q : 상황


sudoers에서 wheel 그룹의 계정에게 root권한을 주도록 옵션 설정 후 wheel 그룹 계정을 생성

톰캣 실행 스크립트의 기본 소유권은 root root 이기에 sudo 명령어를 이용하여 startup.sh 를 실행


Using CATALINA_BASE:   /usr/java/apache-tomcat-7.0.42
Using CATALINA_HOME:   /usr/java/apache-tomcat-7.0.42
Using CATALINA_TMPDIR: /usr/java/apache-tomcat-7.0.42/temp
Using JRE_HOME:        /usr/
Using CLASSPATH:       /usr/java/apache-tomcat-7.0.42/bin/bootstrap.jar:/usr/java/apache-tomcat-7.0.42/bin/tomcat-juli.jar

환경변수로 JAVA_HOME을 잡아 주었음에도 JRE_HOME이 제대로 설정되지 않음.


A : 해법

sudo 사용시 HOME, LOGNAME, PATH, SHELL, TERM, USER 를 제외한 모든 환경변수가 리셋 된다는 사실을 파악.
해당 부분은 sudoers 옵션중 Defaults env_reset 으로 인해 발생 하는 부분
해당 부분을 주석처리 하는 방법도 있으나, 기본설정은 그대로 두변서 특정 변수를 예외적으로 리셋하지 않도록 Defaults env_keep 옵션을 사용할 수 있다.

sudoers 를 다음과 같이 편집 하였다.

기존에 설정되어있는 Defaults env_keep 문구들 맨 아래에 다음과 같이 추가.
Defaults    env_keep += "JAVA_HOME CATALINA_HOME"


계정을 변경하여 sudo startup.sh 를 하였을 때 JRE_HOME이 정상적으로 들어가는 것을 확인.