it-swarm.com.de

"Symbolischer Link nicht erlaubt oder Linkziel nicht zugänglich" / Apache unter CentOS 6

Ich habe eine brandneue CentOS 6-Installation, die im Dokumentstamm einen Symlink 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 verfügt über Berechtigungen, mit denen Apache alles lesen kann, was es möchte:

 [[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 durch Ändern von /etc/selinux/conf Zu deaktivieren:

SELINUX=disabled

Egal was ich mache, wenn jemand versucht, zu diesem Link http://localhost/refresh-app/ Zu gelangen, erhalte ich eine 403 FORBIDDEN-Fehlerseite, die im /var/log/httpd/error_log Geschrieben ist:

Symbolic link not allowed or link target not accessible

Warum kann Apache nicht auf das Ziel des Symlinks zugreifen?

32
Billy ONeal

Fand das Problem. Es stellt sich heraus, dass Apache nicht nur auf das Verzeichnis zugreifen möchte, das ich bediene, /home/billy/refresh-app/, aber auch jedes darüber liegende Verzeichnis, nämlich /home/billy/, /home, und /. (Ich habe keine Ahnung, warum ... um jemandem Zugriff auf ein Unterverzeichnis zu gewähren, sollte es nicht erforderlich sein, Berechtigungen für alles über diesem Unterverzeichnis zu vergeben ...)

Ich würde vermuten, es sucht .htaccess oder so, oder vielleicht * nix ist seltsam, wie es Berechtigungen für die Verzeichnisübertragung behandelt.

45
Billy ONeal

Ich hatte ein ähnliches Problem, bei dem ich die folgende Konfiguration hatte, die früher mit Ubuntu 10 funktionierte, aber nicht mehr mit Ubuntu 14 (Apache 2.4) funktionierte:

<Directory /var/www/vhosts/example.com/httpdocs>
    Options +FollowSymLinks
</Directory>

Durch das Umschalten wurde das Problem behoben (obwohl der Webserverbenutzer nicht direkt auf den Symlink zugreifen konnte).

<Directory /var/www/vhosts/example.com/httpdocs>
    Options +ExecCGI +FollowSymlinks -SymLinksIfOwnerMatch
</Directory>

Soweit ich weiß, ist es nur die Einstellung -SymLinksIfOwnerMatch Und hat etwas mit Änderungen in Apache 2.4 zu tun, aber ich habe nicht versucht, die genaue Ursache zu untersuchen.

Ich dachte auch, dass es an openbase_dir Einschränkungen in PHP liegen könnte, aber das war es nicht.

12
icc97

Dieser Fehler kann auch verursacht werden, wenn Sie eine Verknüpfung zu einem verschlüsselten Ordner herstellen.

7
cherrysoft

Es scheint, dass "FollowSymLinks" die Option ist, die Sie in httpd.conf benötigen. Es ist detailliert hier . Sieht so aus, als ob Sie möglicherweise auch eine Regel in htdocs benötigen ... aber es ist die Option, die Sie benötigen.

4
RobotHumans
Options +FollowSymLinks

Das Erstellen einer .htaccess-Datei mit diesem hat den Trick für mich erledigt (in ein Verzeichnis vor dem Symlink einfügen).

2
Codebeat

Möglicherweise möchten Sie auch überprüfen, ob Selinux erzwungen wird oder nicht. Führen Sie auf RedHat/Fedora Folgendes aus:

getenforce

Wenn die Antwort "Durchsetzen" lautet, möchten Sie möglicherweise ausführen

setenforce 0

und versuchen Sie die URL erneut in Ihrem Browser.

Beachten Sie, dass ich nicht sage, dass das Deaktivieren von Selinux der beste Weg ist, um dieses Problem zu lösen, aber es kann helfen, die Ursache zu identifizieren.

2
botkop

@Billey ONeil @Flion Ich konnte nicht in der Schlange antworten (niedrige Wiederholungszahl)
Hier musste ich tun:
(Anmerkung : alias ll = 'ls $ LS_OPTIONS -lh')

[email protected]:/var/www/html# ll lego
lrwxrwxrwx 1 root root 43 Sep 10 21:21 lego -> /home/DATA/Documents/Chris/Synced/web/lego/

Schauen Sie sich nun jedes Verzeichnis im Quelllink an

[email protected]:/var/www/html# ll -d /home/DATA/Documents/Chris/Synced/web/
drwxr-xr-x 9 chris chris 4.0K Sep 12  2017 /home/DATA/Documents/Chris/Synced/web/
[email protected]:/var/www/html# ll -d /home/DATA/Documents/Chris/Synced/
drwxr-xr-x 20 chris chris 4.0K Mar 27 18:52 /home/DATA/Documents/Chris/Synced/
[email protected]:/var/www/html# ll -d /home/DATA/Documents/Chris/
drwxr-xr-x 36 chris chris 4.0K Jun 17 23:31 /home/DATA/Documents/Chris/
[email protected]:/var/www/html# ll -d /home/DATA/Documents/
drwxr-xr-x 21 chris chris 4.0K Aug  7 18:22 /home/DATA/Documents/
[email protected]:/var/www/html# ll -d /home/DATA/
drwxrwxr-- 10 root users 4.0K Sep 10 11:17 /home/DATA/
[email protected]:/var/www/html# ll -d /home/
drwxr-xr-x 5 root root 4.0K Sep 10 10:37 /home/

/ home/DATA Verzeichnis ist der Schuldige.
Beheben Sie dies mit:

[email protected]:/var/www/html# chmod +x /home/DATA/
[email protected]:/var/www/html# ll -d /home/DATA/
drwxrwxr-x 10 root users 4.0K Sep 10 11:17 /home/DATA/

Das Update ist sofort verfügbar - Apache muss nicht neu gestartet werden.

1
ausinch

Meine Lösung bestand darin, einen freigegebenen Ordner für alle Repositorys mit dem Namen /home/repo Zu erstellen.

Dann Symlink von zu Hause aus wie: ln -s /home/repo ~/Code Also ~/Code/www.xxxx.com/public Zeigt auf /home/repo/www.xxxx.com/public

und auch ein Link in das Apache-Webstammverzeichnis /var/www/html verweist auf /home/repo/www.xxxx.com/public

Fand es hier: https://github.com/alghanmi/ubuntu-desktop_setup/wiki/Git-Local-Repository-Setup-Guide

Bei einigen Symlink + Benutzergruppen-Akrobaten können mehrere Benutzer/Versionen bereitgestellt werden.

0
alo Malbarez

das, was mein Problem löst, nachdem alle Berechtigungen und Followsymlink zugelassen wurden. "Im Fall von FollowSymLinks MUSS es sich innerhalb einer .conf-Datei innerhalb einer Verzeichnisstruktur befinden. Aus dem aktuellen Apache-Handbuch

Die Optionen FollowSymLinks und SymLinksIfOwnerMatch funktionieren nur in Abschnitten oder .htaccess-Dateien.

Antwort von hier

0
yoni333