よくわからないエンジニア

よく分からないエンジニアの日々の記録

よくわからないエンジニア

CentOS7 apacheのumask設定(systemd)

CentOS7でハマった落とし穴。実行権限とか所有者周りって面倒ですよねって話。

目次

気づき

昨日、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よく分かってないって恐ろしいですね。そのうちちゃんと調べます。