読者です 読者をやめる 読者になる 読者になる

kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

apacheでシンボリックリンクが見えないよーというメモ

順番にはまった...環境はCentOS 6.4。

確認ポイントは次の3つ。

  • 「/etc/httpd/conf/httpd.conf」の設定
  • リンク先のアクセス権(主に/home以下)
  • SELinux

あと、まあ、何気に忘れそうなので一応メモ。

  • Firewallでhttpを許可

無駄にはまったのは、同じと思っていた環境でSELinuxを気にしなくても問題なかったこと。あとはSELinuxGUIがみあたんなくて(無くなった?)、Firewallのhttpを許可したところで安心した点ですか。

「/etc/httpd/conf/httpd.conf」の設定

Apacheの設定はFollowSymLinksを気にすればよいのですが、普通はデフォルトで設定されているので、あんまり気にしなくてよい。

$ sudo vi /etc/httpd/conf/httpd.conf

...

<Directory "/var/www/html">
  Options Indexes FollowSymLinks

...

仮に変更した場合はhttpdを再起動。

$ sudo service httpd restart

リンク先のアクセス権

たとえば、以下の場合、ユーザー名のディレクトリがデフォルトでは自分以外にアクセス権が無いので、アクセスできない。

$ cd /var/www/html
$ sudo ln -s /home/ayataka/html ayataka

なので、ユーザー名のディレクトリのアクセス権を変更する。

$ cd /home
$ chmod 755 ayataka

SELinux

厳密にはシンボリックリンク云々ではなく、デフォルトでhome以下へのアクセスが許可されていないことにある。

現在の状態を確認。

$ getsebool httpd_enable_homedirs
httpd_enable_homedirs --> off

SELinuxは詳しくないけど、apacheだけでもいろいろと設定があるらしい

とかく、home以下がアクセス拒否になっているので、許可するように変更する。

$ sudo setsebool -P httpd_enable_homedirs on

これで完了。

おまけ

SELinuxはめんどくさかったら無効化する。VMなどローカルで動かしているなら気軽に無効化してしまうのもありかと。

とりあえず一時的に無効化して試す。

$ sudo setenforce 0

永続化は「/etc/selinux/config」を編集する。

$ sudo vi /etc/selinux/config
SELINUX=disabled