JSP 혹은 서블릿을 이용해 웹 서버를 개발할 때 파일 입출력 관련 프로그래밍을 해야하는 경우가 있다. 이 때, 출력 파일의 권한을 수정할 때, 수정되지 않는 경우가 있다.
이번 게시글에 작성할 문제의 경우, 파일을 생성할 때는 정상적으로 권한이 변경됐으나, 폴더를 생성할 때는 권한이 정상적으로 변경되지 않았다.
아무리 생각해봐도 톰캣의 권한 문제라면 생성되는 파일또한 권한이 정상적으로 변경되지 않아야 했으나, 정상적으로 출력되는 바람에 꽤 많이 헤매었다.


2021.11.23 추가

만약에, 아래 문단의 방법으로 안될 경우 아래 명령어를 통해 ReadWritePaths가 정상적으로 수정되었는지 확인해보자. 아직까지 왜 파일이 설정한대로 안바뀌는지 이유는 찾지 못했다.
이유를 찾으면 게시글을 업데이트 하겠당.

$ systemctl edit --full tomcat#.service

...
ReadWritePaths=대상폴더
...

이 명령어를 통해 어떤 폴더에 권한을 줄 경우, 해당 폴더는 미리 생성되어 있어야 한다. 뿐만 아니라, 아래 방식의 tomcat9.service에도 똑같은 내용을 적어놓는 것을 추천한다.


Tomcat 버전 9 이상의 경우, 톰캣이 실행할 웹앱 디렉토리의 소유자에 대하여 tomcat 계정, 혹은 tomcat이 추가된 그룹으로 바꾸고, 아래 루트로 이동하여 ReadWritePaths에 해당 웹앱의 ROOT 디렉토리를 추가한다.

/etc/systemd/system/multi-user.target.wants/tomcat#.service
User=root

또한 Tomcat의 쓰기 권한을 바꿔줘야 하는데, 다음처럼 하면 된다.

/usr/share/tomcat#/bin/catalina.sh

텍스트 편집기로 catalina.sh를 연 다음에, umask를 찾아서 0022로 변경해주면 된다.

UMASK="0022"

+ Recent posts