apache2の設定
- サイト定義ファイルを作成、設定する
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite
で定義ファイルをコピーし、
mysiteの"/var/www"部分をルートディレクトリにしたいディレクトリに変更
# a2ensite mysite
# a2dissite default
# /etc/init.d/apache2 reload または /etc/init.d/apache restart
で変更完了
- ユーザーディレクトリを使えるようにする
# a2enmod userdir
# /etc/init.d/apache2 restart
でOK。
apache2.confを書き換える(デフォルト設定のバックアップを取っておくこと)
AddHandler Script-cgi .cgi
(下から1/4ぐらいのところにある)のコメントをはずす。
特定のユーザーだけ使えるようにするには
/etc/apache2/mods-available/userdir.conf
を書き換える(デフォルト設定のバックアップを取っておくこと)
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
AllowOverride FileInfo AuthConfig Limit
Options ExecCGI MultiViews SymLinksIfOwnerMatch IncludesNoExec
AllowOverride FileInfo AuthConfig Limit
Options ExecCGI MultiViews SymLinksIfOwnerMatch IncludesNoExec
すべてのユーザーについてしたければ
# a2enmod php5
# /etc/init.d/apache2 restart
PHPの実行範囲の設定はよくわかってません。
- ディレクトリにアクセスしたときにリスト表示しないようにする
/etc/apache2/mods-available/userdir.conf
を書き換える(デフォルト設定のバックアップを取っておくこと)
- すべてのユーザーのリスト表示を許可しない
- ある特定のユーザーだけリスト表示を許可しない
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
というようにする(他のオプションは適宜変更)。
*注意*
禁止するユーザーを先に書いてはいけない。
理由:後に書いてあるほうが優先されるから。
最後にマッチしたものが適用される。
ルーティングと同じように上から検索してマッチしたらそれ以降は見ないという仕様にしたらいいのにと思いました。
/etc/apache2/mods-available/dir.conf
のDirectoryIndexの行に
index.cgiやindex.phpを追加またはその行から削除する
左にあるものの方が優先されるので優先させたいものを左に移動させる。