CentOS7でハマった落とし穴。実行権限とか所有者周りって面倒ですよねって話。
id=”目次”>目次
気づき
昨日、apache経由で生成されるファイルの権限がおかしい事に気がつく。
普段は以下のように”/usr/local/apache2/bin/envvars” にumaskの値を指定している。
# vim /usr/local/apache2/bin/envvars umask 002
デフォルトではumaskは022なので、002を指定してあげれば、664のファイルが生成されるはずだが、何故か644で生成されている。
何かおかしいので調査してみた。
調査
まずは過去に作ったサーバで確認してみる。CentOS6系の場合は、envvarsに設定すれば問題なく664のファイルが生成される。
次に、CentOS7のサーバをapachectlから起動してみた。
# /usr/local/apache2/bin/apachectl start
この場合はenvvarsにumaskを設定していると、664のファイルが生成された。
原因と解決策
envvarsの値が反映されないのはsystemd経由で起動した場合である事が判明。
# systemctl start httpd
この場合はenvvarsの値は反映されず、umaskは022が使用される。
systemd経由だと、以前もユーザー固有の環境変数を読み込まなかったので、たぶんそこら辺の関連と思われる(そのうちちゃんと調べる)。
systemd経由の起動の場合、以下を記載して起動すればumaskを指定出来ました。
# /etc/systemd/system/httpd.service [Service] UMask=002
備忘録。それなりにCentOS7使っているのに、未だにsystemdよく分かってないって恐ろしいですね。そのうちちゃんと調べます。