Contents
see List작성일 2016. 03. 04.
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 재시작 필요
os
| No | 작성일 | Title |
|---|---|---|
| 2207 | 2026. 02. 11. | Linux 서버 보안 강화 체크리스트 2025 |
| 2161 | 2026. 02. 11. | Nginx vs Caddy: 최신 웹서버 비교와 설정 가이드 |
| 2160 | 2026. 02. 11. | 서버 모니터링 자동화: Netdata, Zabbix, Datadog 비교 |
| 2159 | 2026. 02. 11. | 컨테이너 보안: rootless Docker와 Podman |
| 2158 | 2026. 02. 11. | Linux 네트워크 성능 튜닝과 eBPF 활용 |
| 2157 | 2026. 02. 11. | Kubernetes 클러스터 운영 실전 가이드 |
| 2156 | 2026. 02. 11. | ZFS vs Btrfs: 차세대 파일시스템 비교 |
| 2155 | 2026. 02. 11. | SSH 보안 강화와 터널링 고급 기법 |
| 2154 | 2026. 02. 11. | systemd 고급 활용: 서비스 관리와 타이머 |
| 2153 | 2026. 02. 11. | macOS Sequoia 개발 환경 최적 설정 가이드 |