Userdirを有効にする

apacheのUserDirの機能を使うとユーザーが自分のディレクトリをウェブで公開することができます。CentOS7でこの機能を有効にする手順を記します。

apacheの設定

1. UserDir disabled をコメントアウト

/etc/httpd/conf.d/userdir.conf 中にある UserDir disabled の行の先頭に#をいれて無効にする。

UserDir public_html を有効化

同じく /etc/httpd/conf.d/userdir.conf 中でコメントになっている UserDir public_html の先頭の#をとる。もし公開するディレクトリをpublic_htmlでないものにするのであれば、この値を変更すると同時に同じファイル内の<Directory “/home/*/public_html"> も合わせて変更する

Require all grantedを追加

同じく /etc/httpd/conf.d/userdir.conf 中の公開ディレクトリの設定にRequire all grantedを追加する。これは /etc/httpd/conf/httpd.conf 中でシステムのルートディレクトリに Require all denied が設定されていることに対応するためのものです。

/etc/httpd/conf.d/userdir.conf

修正後のuserdir.conf

<IfModule mod_userdir.c>
    UserDir public_html
</IfModule>
<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require all granted
</Directory>

apacheを再起動します(systemctl restart httpd)。

public_htmlの設定

ホームディレクトリにpublic_htmlを作成します。/home/user/public_htmlのパーミッションを確認します。

$ ls -ld /
dr-xr-xr-x. 19 root root 4096  8月 23  2021 /
$ ls -ld /home
drwxrwxrwx. 13 root root 214  4月  8  2020 /home
$ ls -ld /home/user
drwx-----x. 80 user user 8192  3月 29 17:40 /home/user
$ ls -ld /home/user/public_html
drwxrwxr-x. 11 user user 4096  3月 29 16:52 /home/user/public_html

/home/user のパーミッションは初期値が700なので701にする。public_htmlは作成したときに775なっているのでそのままでよい。

ブラウザーからアクセスする

http://example.com/~user/ にアクセスしてみる。
ディレクトリの中身が見えて困るときは、index.htmlを置く。