WordPressでumaskとかsetgidを有効にする方法

wrench-in-hands_sizeXS.jpg

自分用メモ。

テスト環境の 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 日本語版

参考資料

今回の調査では、以下の情報を参考にさせていただきました。

なお、Apache の umask 設定については以下の方法でできます。

検索用キーワード:d-wxr-s--T

Hatena Pocket Line
last update 2013年5月16日

コメントを記入