本記事では、ECCUBEのキャッシュファイルを作成する際に、www-dataユーザーの権限設定に関して調整を実施した経緯と最終的な修正内容についてご紹介します。
背景
ECCUBEをUbuntu環境上で運用している中で、キャッシュファイルやログファイルのパーミッションに関るトラブルが発生しました。
デフォルトの設定では、www-dataが作成するファイルのパーミッションが期待したもの(たとえばグループに書き込み権限が付与されたもの)にならず、デプロイ時にwww-data以外のユーザーがキャッシュを削除できない問題が発生しました。
調査と検証
1. ユーザーごとのumaskの確認
-
rootユーザーと一般ユーザーの違い:
まず、ログインシェルでumask
コマンドを実行した結果、rootは0022、一般ユーザーは0002になっていることが確認されました。
これにより、一般ユーザーの場合はファイル作成時にグループ書き込み権限(例: 664、またはディレクトリの場合775)が設定される仕組みとなっています。
2. ApacheやPHPの実行環境の調査
-
Apacheの起動環境:
Ubuntuでは、Apacheは通常/etc/apache2/envvars
ファイルを読み込んで環境変数やumaskの設定を行っています。
実際、環境内でumask
の設定が影響しており、www-dataユーザーが利用されるプロセスのファイル作成パーミッションにも反映される仕組みになっていました。
最終対策
最終的に、ECCUBEのキャッシュファイルがwww-dataユーザーにより作成される際のパーミッションを調整するために、Apacheの起動環境を変更することにしました。
修正内容
-
対象ファイル:
/etc/apache2/envvars
-
追加・修正: ファイル内の適切な位置(できれば先頭付近)に以下の行を追加しました。
umask 0002
この変更により、Apacheがwww-dataユーザーで起動する際に、作成されるファイルのデフォルトパーミッションが
- ファイルの場合: 664 (rw-rw-r--)
- ディレクトリの場合: 775 (rwxrwxr-x)
となるようになりました。これにより、ECCUBEのキャッシュやログファイルに対して、グループメンバーによる書き込みが可能となり、運用上の問題が解消されました。
再起動について
修正後は、設定内容を反映させるためにApacheの再起動しましょう!
実行したコマンドは以下の通りです。
sudo systemctl daemon-reload
sudo service apache2 restart
これにより、設定が反映されるかと思います。
まとめ
今回の調整により、ECCUBEのキャッシュファイルのパーミッションが適切に設定されるようになり、運用上のトラブルを未然に防ぐことができました!
手探り状態で他にもいい方法があると思いますので参考ぐらいでお願いします!