Apache2.4系を入れる必要があったので、CentOS6/Apache2.2からCentOS7/Apache2.4へ更新しました。
2.4系では、httpsd.conf内の書式やアクセス制御の書式も変更になり、修正を施し、Apache起動まで確認できたところで、ユーザーディレクトリの設定を有効にしたところ、Fobiddenのエラーでハマってしまいました。
この時の環境では、
- Firewall無効
- SELinux無効
- mod_userdir.soのモジュールが読み込まれているか確認
- /etc/httpsd/conf.d/userdir.con内を確認
UserDir public_html
<Directory “/home/*/public_html”>
AllowOverride ALL
Options ALL
Require all granted - userのパーミッションを711確認
- user下public_htmlディレクトリのパーミッションを755確認
- public_html下のindex.htmlに読み込み属性があるか確認
- user下に.htaccessがあるか確認
.htaccessが見つかった場合、アクセス制御書式が古くなっているのでorder deny allow形式からRequire形式に変更
おおよそ、これくらいの設定で普通なら閲覧できるはずなんです。
実は、今回運用したサイトの構成で、userのディレクトリは、グループ分けする必要があったので、下記のようになってます。
/home/group1/user1
/home/group1/user2
/home/group2/user3
/home/group2/user4
これらuser1からuser4までチルダ(~)を使ったURL(https://localhost/~user1)でアクセスすると、すべて、下記のエラー
Forbidden
You don’t have permission to access /~user1 on this server.
httpsdのエラーログを見ても、permission denied.と記載されている。
/home/group/userの位置が悪いのか?と思い、/home/user5のユーザーを作成してみると、~/user5でアクセス出来る。
と言うことは、/etc/httpsd/conf.d/userdir.conf内のディレクティブ/home/*/public_htmlが怪しい。
*の指定だと、homeとpublic_html間に何が入っても有効なはずじゃないのか?と思い、下記のディレクティブを追加してみた。
<Directory "/home/*/*/public_html"> AllowOverride ALL Options IncludesNoExec ExecCGI FollowSymLinks Require method GET POST OPTIONS </Directory>
これで、Apacheを再起動したところ、チルダ(~)による各ユーザーのホームページが閲覧できるようになった。
結果オーライだが、/home/*/*/public_htmlの書式は、何かスマートじゃないよね?
何かよい書き方もしくは方法があったら、教えてください。