Saya memiliki instalasi CentOS 6 baru, yang memiliki symlink di root dokumen ke file pengembangan saya:
[[email protected] html]# ls -l
total 4
-rwxrwxrwx. 1 root root 0 Sep 18 20:16 index.html
-rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php
lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/
httpd.conf saya memiliki ini:
<Directory "/">
Options All
AllowOverride None
Order allow,deny
Allow from all
</directory>
Target tautan simbolik memiliki izin yang memungkinkan Apache membaca apa pun yang diinginkannya:
[[email protected] billy]# ls -l
total 40 (Some entries were omitted because the list was too long
drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app
Saya juga mencoba menonaktifkan SELinux dengan mengubah /etc/selinux/conf
:
SELINUX=disabled
Namun apa pun yang saya lakukan, ketika seseorang mencoba membuka tautan itu, http://localhost/refresh-app/
, saya mendapatkan halaman kesalahan 403 FORBIDDEN dan ini ditulis dalam /var/log/httpd/error_log
:
Symbolic link not allowed or link target not accessible
Mengapa Apache tidak dapat mengakses target symlink?
Jawaban yang Diterima:
Menemukan masalah. Ternyata, Apache menginginkan akses tidak hanya ke direktori yang saya layani, /home/billy/refresh-app/
, tetapi juga setiap direktori di atasnya, yaitu /home/billy/
, /home
, dan /
. (Saya tidak tahu mengapa… memberi seseorang akses ke subdirektori tidak perlu memberikan izin untuk semua yang ada di atas subdirektori itu…)
Saya kira itu mencari .htaccess
atau sesuatu, atau mungkin *nix menjadi aneh tentang bagaimana ia memperlakukan izin untuk transversal direktori.