#確認条件
・Tomcat8.5系ではデフォルトのログ出力時のパーミッションが640となる。
・8.5より前はデフォルトで644。
・640:所有者以外は参照不可。
・644:所有者以外は参照可能。
・起動時シェルでUMASKの値を設定することで、デフォルト値を戻す。
##確認条件
・apache-tomcat-8.5.78で確認。
・Tomcatのシステムログ(Catalina.out)以外のアプリで出力するログもどうなるかも一緒に確認する。
・アプリログはlog4j2で確認。
・TomcatはCentOS7(Virtual Box)上に構築。
##詳細
何も設定してない場合
・出力されるログのパーミッションはすべて640。
testlog.logはlog4j2のログです。
情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
・catalina.out上もUMASK=0027と出ている。
UMASK設定追加
${CATALINA_HOME}/bin/startup.sh にUMASK追加。
export UMASK="0022"
systemctl start tomcat で起動
/etc/systemd/system/tomcat.serviceは特に変更なし。
※Umask=0022をここに追加するのも試したけど特に意味なしでした。
また、/etc/init.d/の下の起動スクリプトで起動している場合などは、そちらにUMASK設定を追記する必要がありそうです。
[Unit]
Description=Apache Tomcat 8
After=syslog.target network.target
[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/usr/local/tomcat/tomcat.pid
RemainAfterExit=yes
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReStart=/usr/local/tomcat/bin/shutdown.sh;/usr/local/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
※参考
https://itsakura.com/java-log4j2-sample#s4
https://qiita.com/kitahara_/items/d8013693fd6479ae2d9c
結果
・catalina.out上もUMASK=0022と出るようになってました。
情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数: -Dorg.apache.catalina.security.SecurityListener.UMASK=0022
##感想
仕事でtomcatバージョンアップ時にログの権限が変わってるということがあったので、調べたことを備忘として書きました。
バージョンアップは小さな変更がよくあるので、振り回されがちです。