WordPressでumaskとかsetgidを有効にする方法
2024年8月8日
自分用メモ。
テスト環境の WordPress が、ファイル/ディレクトリ生成時に、Apache プロセスの umask を無視して困ったので対処。
具体的な症状は以下のとおり。
- Apache の umask を 002 に設定しても、Wordpress が生成するファイル・ディレクトリのパーミッションが 755 や 644 になる。
- パーミッション=2775(setgid)、グループ=somegroup なディレクトリ配下なのに、Wordpress がグループ=apacheでファイル・ディレクトリを生成する。
wp-config.phpでファイルシステム関連の権限設定が必要
調べた所、wp-config.php 内の設定で、Wordpress が生成するファイル・ディレクトリのパーミッションを変更できる事が分かりました。
具体的な設定方法はこんな感じ。
■グループに書き込み権限を付与
define('FS_CHMOD_DIR', (0775 & ~ umask())); define('FS_CHMOD_FILE', (0664 & ~ umask()));
■グループに書き込み権限を付与&ディレクトリの setgid 有効化
define('FS_CHMOD_DIR', (02775 & ~ umask())); define('FS_CHMOD_FILE', (0664 & ~ umask()));
なんでこんな仕様になってるんだ…とも思いましたが、Wordpress は様々な環境に載せられる可能性があるため、この辺の設定はアプリ側で持った方が都合が良い。という事なのかも…と思って調べたら、suEXEC で動作するホストでうんぬん。という事らしいです。(→情報:wp-config.php の編集 - WordPress Codex 日本語版)
参考資料
今回の調査では、以下の情報を参考にさせていただきました。
- #18313 (FS_CHMOD_DIR not functioning correctly with setgid) – WordPress Trac(英語)
- permissions - Can't install new plugins because of the error "Could not create directory" - WordPress Answers(英語)
- Advanced WordPress wp-config.php Tweaks(英語)
なお、Apache の umask 設定については以下の方法でできます。
検索用キーワード:d-wxr-s--T