Apelog

Web開発では複数ユーザーでディレクトリを共有管理したいケースが良くある、そういった場合の設定方法。

/var/www/htmlfoo, bar, apacheの3ユーザーで管理するとする、設定環境はCentOS5。

設定方法

管理用グループ(webadmin)を作成

# /usr/sbin/groupadd webadmin

管理用グループ(webadmin)に3ユーザー追加。追加時に他のグループにも所属させる場合は同時に指定する事。特にwheelユーザーからしかrootになれない状態で間違ってwheelから外してしまうと悲惨な事に。

# /usr/sbin/usermod -G webadmin foo
# /usr/sbin/usermod -G webadmin bar
# /usr/sbin/usermod -G webadmin,apache apache

対象ディレクトリをwebadminが操作できるようにグループを指定し書き込み権限を与える。

# chgrp webadmin /var/www/html
# chmod g+w /var/www/html

このままだとファイルを生成した際に所有権がそれぞれのユーザーになってしまうので、グループ権限でファイルを作成するようにする。

# chmod g+s /var/www/html

以上でグループで管理出来る環境になる。

複数設定する場合はfindでディレクトリだけ検索した結果に対して変更すると楽。

find . -type d -print | xargs chmod g+w

PHPの設定はphp.ini、 httpd.conf、 .htaccessの順に読み込まれ変更可能なら新しい値で上書きされる。

どのレベルで上書き出来ないかはマニュアルのphp.iniディレクティブ参照。

php.iniディレクティブで書かれているものはPHPで決められているもので、別途httpd.confレベルで変更の可否が指定出来る(.htaccessで変更出来ない)。

httpd.confのphp.ini設定で使用出来る値は以下の4つ。

  • php_value
  • php_flag
  • php_admin_value
  • php_admin_flag

php_adminが付いた方で指定する事で.htaccessでの変更を制限する。

php_admin_value name value
指定した設定オプションに値を設定します。このディレクティブは、.htaccess ファイルでは利用できません。また、 php_admin_value で設定された設定オプションの値は、.htaccess では上書きできません。 セット済みの値をクリアしたい場合は、none を 値として使用してください。
php_admin_flag name on|off
設定オプションに論理値を設定するために使用します。 このディレクティブは、.htaccess ファイルでは利用できません。 php_admin_value で設定された設定オプションの値は、.htaccess では上書きできません。

PHP: 設定を変更するには - Manual

専用サーバーだと設定する事は少なそうなもののインフラとシステムの構築が分かれたりする場合、この方法で制限を掛けれるので(もちろんApache経由での実行に限る)覚えておくと良いかも

SVNから直接サイト公開や更新する場合、ステージング環境が整ってたりすればエクスポートで済むけど、チェックアウトして見ながら修正しなければならない場合もあったりする。

たまにApacheの設定(.htaccessでも可)で.svnのディレクトリの拒否を忘れるのでメモがてら。

以下の設定で/path/to/.svn/以下にアクセス拒否。

<DirectoryMatch "/*/.svn">
deny from all
</DirectoryMatch>