Contents
see ListLinux Tomcat Permission 변경 (umask)
Tomcat에서 생성되는 파일의 기본 권한을 설정하는 방법입니다. umask를 조정하여 보안을 강화하거나 다른 사용자/그룹의 접근을 제어할 수 있습니다.
언제 사용하나요?
- Tomcat 로그 파일 권한 제어
- 업로드 파일 권한 설정
- 보안 강화를 위한 제한적 권한
- 그룹 사용자 접근 허용
umask 이해
# umask는 파일 생성 시 제거할 권한 지정
# 기본 권한 - umask = 실제 권한
# 파일 기본: 666 (rw-rw-rw-)
# 디렉토리 기본: 777 (rwxrwxrwx)
umask 022 # 파일: 644, 디렉토리: 755
umask 027 # 파일: 640, 디렉토리: 750
umask 077 # 파일: 600, 디렉토리: 700
# 권한 계산
# 666 - 022 = 644 (rw-r--r--)
# 777 - 022 = 755 (rwxr-xr-x)
catalina.sh에서 설정
# $CATALINA_HOME/bin/catalina.sh 편집
vi $CATALINA_HOME/bin/catalina.sh
# 파일 상단에 umask 추가
#!/bin/sh
umask 0027
# 또는 setenv.sh 사용 (권장)
# $CATALINA_HOME/bin/setenv.sh 생성
vi $CATALINA_HOME/bin/setenv.sh
#!/bin/sh
umask 0027
# 실행 권한 부여
chmod +x $CATALINA_HOME/bin/setenv.sh
시스템 서비스로 설정
# systemd 서비스 파일
# /etc/systemd/system/tomcat.service
[Service]
UMask=0027
...
# 또는 환경 파일
# /etc/sysconfig/tomcat
UMASK="0027"
# 서비스 재시작
sudo systemctl daemon-reload
sudo systemctl restart tomcat
Tomcat 디렉토리 권한 설정
# 기본 디렉토리 구조
$CATALINA_HOME/
├── bin/ (755) 실행 파일
├── conf/ (700) 설정 파일 (보안 중요)
├── lib/ (755) 라이브러리
├── logs/ (750) 로그 파일
├── temp/ (750) 임시 파일
├── webapps/ (755) 웹 애플리케이션
└── work/ (750) 컴파일된 JSP
# 권한 일괄 설정
cd $CATALINA_HOME
chmod 700 conf
chmod 750 logs temp work
chmod 755 bin lib webapps
# 소유자 설정
chown -R tomcat:tomcat $CATALINA_HOME
conf 디렉토리 보안
# server.xml, tomcat-users.xml 등 민감 파일
chmod 600 $CATALINA_HOME/conf/server.xml
chmod 600 $CATALINA_HOME/conf/tomcat-users.xml
chmod 600 $CATALINA_HOME/conf/context.xml
# 또는 디렉토리 전체
chmod 700 $CATALINA_HOME/conf
chmod 600 $CATALINA_HOME/conf/*
로그 파일 권한
# 로그 파일 기본 권한 변경
# logging.properties에서 직접 지정 불가
# umask로 제어
# 기존 로그 파일 권한 변경
chmod 640 $CATALINA_HOME/logs/*.log
chmod 640 $CATALINA_HOME/logs/*.txt
# logrotate 설정에서도 권한 지정
# /etc/logrotate.d/tomcat
/var/log/tomcat/*.log {
create 0640 tomcat tomcat
...
}
업로드 파일 권한
// Java 코드에서 파일 권한 설정
import java.nio.file.*;
import java.nio.file.attribute.*;
// 파일 생성 후 권한 설정
Path path = Paths.get("/upload/file.txt");
Files.createFile(path);
// POSIX 권한 설정 (Linux)
Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rw-r-----");
Files.setPosixFilePermissions(path, perms);
// 또는 생성 시 권한 지정
FileAttribute<Set<PosixFilePermission>> attr =
PosixFilePermissions.asFileAttribute(perms);
Files.createFile(path, attr);
확인 방법
# 현재 umask 확인
umask
# Tomcat 프로세스의 umask 확인
cat /proc/$(pgrep -f catalina)/status | grep Umask
# 파일 권한 확인
ls -la $CATALINA_HOME/logs/
권장 설정
| 환경 | umask | 용도 |
|---|---|---|
| 개발 | 0022 | 일반적인 접근 |
| 운영 | 0027 | 그룹만 읽기 |
| 보안 강화 | 0077 | 소유자만 접근 |
주의사항
- 너무 제한적인 권한은 애플리케이션 오류 유발
- 웹서버(Apache/Nginx)와 연동 시 권한 확인
- 설정 변경 후 Tomcat 재시작 필요