
SOFTMOA TECHNOLOGY
[ linux ] tomcat permission change umask
소프트모아가 정리한 기술 기록입니다.
Contents
작성일 2016. 03. 03.
Linux 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 재시작 필요
Share this
OS
Showing 1 to 10 of 90 entries
