mod_userdir モジュールを使用すると、一般ユーザーが自分のホームディレクトリに格納した Web ページを個人のホームページとして公開することができます。/etc/httpd/conf/modules には以下の記述があり、mod_userdir はデフォルトで読み込まれています。
LoadModule userdir_module /usr/lib/httpd/modules/mod_userdir.so |
mod_userdir モジュールの関連ディレクティブは以下の通りです。
公開対象となるディレクトリは、ユーザーディレクトリと呼ばれます。以下の表は、directory-filename の値と、ユーザーディレクトリの基点がどのように変化するかを示したものです。
表 9-11. UserDir ディレクティブ
| 設定値 | ディレクトリのパス | 説明 |
|---|---|---|
| public_html | /home/*/public_html/index.html | 各ユーザーのホームディレクトリに public_html というディレクトリを作成し、この public_html ディレクトリ以下を参照します。最も一般的な設定方法です。 |
| /usr/home | /usr/home/*/index.html | 絶対パスを指定した場合、そのディレクトリ以下にあるユーザー名と同じ名前のディレクトリ以下を参照します。 |
| /usr/*/home | /usr/*/home/index.html | ワイルドカードを使った絶対パスを指定した場合、* がユーザー名に置き換わります。 |
| disabled | 無し | このディレクティブを無効にします。 |
/etc/httpd/conf/httpd.conf には、以下の記述があります。<IfModule mod_userdir.c> から </IfModule> の間は、mod_userdir モジュールが読み込まれている場合にのみ有効なディレクティブの指定です。
<IfModule mod_userdir.c>
#
UserDir disable
#UserDir public_html
#
</IfModule> |
初期状態では、UserDir ディレクティブの値が disable に設定されているため、ユーザーディレクトリは公開されていません。有効にするには、UserDir disable の前に # を記述し、 #UserDir public_html の # を削除します。
このように、UserDir public_html を指定した場合は、各ユーザーのホームディレクトリに public_html ディレクトリを作成します。
$ mkdir ~/public_html |
次に、各ユーザーのホームディレクトリに設定されているパーミッションを変更します。初期状態では、700(drwx------)が設定されるため、自分以外のユーザーからのアクセスは拒否されています。~/public_html を公開するには、Apache の実行ユーザーである apache が読み込めるように、755(drwxr-xr-x)などにパーミッションを変更する必要があります。
$ chmod 755 $HOME |
また、/etc/httpd/conf/httpd.conf には、デフォルトで以下の記述もあります。これらの行のコメント記号を削除して ~/public_html ディレクトリへのアクセスを制御することができます。アクセス制御については 項9.9 を参照してください。
#<Directory /home/*/public_html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec # <Limit GET POST OPTIONS> # Order allow,deny # Allow from all # </Limit> # <LimitExcept GET POST OPTIONS> # Order deny,allow # Deny from all # </LimitExcept> #</Directory> |
/etc/httpd/conf/httpd.conf の編集後は変更を反映させるために Apache の再起動が必要です。