CentOS7 apacheのumask設定(systemd)

お絵かき 技術 Linux

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

【プロフィール】

【無音鈴鹿】
お絵かきが好きなエンジニアの成れの果て

Twitter


【広告】