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 |
|---|---|---|
| 2901 | 2026. 05. 28. | systemd 서비스 하드닝 실전 가이드: 권한·파일시스템·네트워크 접근 줄이기 |
| 2843 | 2026. 05. 20. | Linux 서버 로그 운영 실전 가이드: journald 영구 저장, 용량 제한, logrotate 점검법 |
| 2643 | 2026. 04. 29. | Kubernetes v1.36 Haru 완전 가이드: AI 워크로드 DRA, User Namespaces GA, PSI Metrics 실전 적용 |
| 2566 | 2026. 04. 21. | systemd 260 + Linux 6.19 핵심 신기능 완전 가이드: mstack, sched_ext, Varlink Metrics 실전 적용 |
| 2496 | 2026. 04. 14. | Linux 시스템 관리 완벽 가이드: systemd 258, Kernel 6.x, 현대적 CLI 명령어 |
| 2475 | 2026. 04. 13. | Linux 시스템 관리 2026 완벽 가이드: systemd, journalctl, 성능 튜닝, 보안 설정 |
| 2455 | 2026. 04. 12. | Linux 커널 6.12/6.13 신기능 완전 분석: PREEMPT_RT, sched_ext, Rust 통합 |
| 2431 | 2026. 04. 11. | macOS defaults 명령어로 숨겨진 설정 마스터하기 |
| 2395 | 2026. 04. 09. | macOS/Linux 터미널 고급 명령어 가이드 - 프로세스 관리, 네트워크 진단, 시스템 모니터링 |
| 2374 | 2026. 04. 08. | Linux 시스템 관리 실전 가이드 2025: 커널 최적화, 보안 강화, 자동화 명령어 총정리 |