読者です 読者をやめる 読者になる 読者になる

「Tomcat」jsvc の "-outfile" に指定したファイルのパーミッションを変更する方法

jsvc のオプション "-outfile" に指定したファイルのパーミッションを変更する方法について
調べたので、その時のメモ。

環境は、以下のエントリーのもの使用しております。
http://a4dosanddos.hatenablog.com/entry/2013/07/04/002354

デフォルトの状態では、どうなるのかっていうと、"600" となっていた。

-rw------- 1 root root 1136  7月  4 00:24 2013 catalina-daemon.out

例えば、こいつを "644" とかにしたい場合、どうすればいいのか。
以下の jsvc のドキュメントを確認してみても、パーミッションを指定できるようなオプションが
見当たらない ( umask 的な )。
http://commons.apache.org/proper/commons-daemon/jsvc.html

ただ、リリースノートみてみると、Jsvc 1.0.08 で umask なるオプションが追加された旨の記載がある。
http://www.apache.org/dist/commons/daemon/RELEASE-NOTES.txt

* DAEMON-221: Add -umask to jsvc so that users don't have to
              recompile the jsvc if different umask is desired (1.0.8)

上記踏まえて、"-umask" 指定してやってみた。daemon.sh に以下を追記する。

    start   )
      "$JSVC" $JSVC_OPTS \
      -java-home "$JAVA_HOME" \
      -user $TOMCAT_USER \
      -umask 022 \  <- ここを追記

無事、パーミッションを "644" することができた。

-rw-r--r-- 1 root root 2259  7月  4 00:35 2013 catalina-daemon.out

以上です。


■■ 参考 ■■
1. jsvc 1.0.13 以前のバージョンには、"-umask 022" の場合、パーミッションの設定が
うまくいかないバグがあるみたいです。
https://issues.apache.org/jira/browse/DAEMON-280
はじめ、Tomcat 7.0.34 ( jsvc 1.0.10 が同梱 ) でやってて、うまくいかなくて結構はまった・・・

2. jsvc のコンパイル時にデフォルトのパーミッションの指定ができるみたい。
「commons-daemon-1.0.15-native-src/unix/native/arguments.c」に、以下のような箇所がある。

    175 #ifndef JSVC_UMASK
    176     args->umask   = 0077;

上記の "0077" を "0022" とかにしてやると、デフォルトのパーミッションが "644" となった。
理由とかは、C のソース読めない自分には、あまりに険しい道のりになりそうなので調べてません・・・