Ich habe eine brandneue CentOS 6-Installation, die einen symbolischen Link im Dokumentenstammverzeichnis zu meinen Entwicklungsdateien enthält:
[[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/
Meine httpd.conf hat folgendes:
<Directory "/">
Options All
AllowOverride None
Order allow,deny
Allow from all
</directory>
Das Ziel des symbolischen Links hat Berechtigungen, die Apache erlauben sollten, alles zu lesen, was er will:
[[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
Ich habe auch versucht, SELinux zu deaktivieren, indem ich /etc/selinux/conf
geändert habe :
SELINUX=disabled
Doch egal, was ich tue, wenn jemand versucht, zu diesem Link zu gehen, http://localhost/refresh-app/
, erhalte ich eine 403 FORBIDDEN-Fehlerseite und dies wird in /var/log/httpd/error_log
geschrieben :
Symbolic link not allowed or link target not accessible
Warum kann Apache nicht auf das Ziel des Symlinks zugreifen?
Akzeptierte Antwort:
Habe das Problem gefunden. Es stellt sich heraus, dass Apache nicht nur auf das Verzeichnis zugreifen möchte, das ich bereitstelle, /home/billy/refresh-app/
, sondern auch jedes Verzeichnis darüber, nämlich /home/billy/
, /home
, und /
. (Ich habe keine Ahnung, warum … jemandem Zugriff auf ein Unterverzeichnis zu gewähren, sollte nicht erfordern, Berechtigungen für alles oberhalb dieses Unterverzeichnisses zu vergeben ….)
Ich würde vermuten, dass es nach .htaccess
sucht oder so, oder vielleicht *nix ist seltsam daran, wie es Berechtigungen für Verzeichnistransversal behandelt.