Ich habe Probleme beim Einrichten von Apache unter Ubuntu. Ich habe diesen Leitfaden befolgt .
# /usr/sbin/apache2 -v
Server version: Apache/2.2.17 (Ubuntu)
Server built: Feb 22 2011 18:33:02
Mein öffentliches Verzeichnis / var / www kann darin platzierte PHP-Seiten erfolgreich bereitstellen und ausführen. Ich möchte jedoch in / var / www einen Symlink erstellen, der auf ein Verzeichnis in meinem Home-Ordner verweist und dort Seiten bereitstellt.
[root /var/www]# ll
total 36
drwxr-xr-x 3 root root 4096 2011-09-11 14:22 .
drwxr-xr-x 14 root root 4096 2011-06-04 22:49 ..
lrwxrwxrwx 1 root root 16 2011-09-11 13:21 about -> /root/site/about
Wenn ich versuche, über den Browser auf / about zuzugreifen, bekomme ich
Forbidden
You don't have permission to access /about on this server.
Soweit ich weiß, habe ich den Dateien, die ich bereitstellen möchte, ausreichende Berechtigungen erteilt:
[root ~/site/about]# ll
total 24
drwxr-xr-x 5 root root 4096 2011-09-11 13:20 .
drwxr--r-- 3 root root 4096 2011-09-11 13:19 ..
drwxr-xr-x 2 root root 4096 2011-09-11 13:21 contact
-rwxr-xr-x 1 root root 1090 2011-09-11 13:19 index.php
drwxr-xr-x 2 root root 4096 2011-09-11 13:20 me
drwxr-xr-x 2 root root 4096 2011-09-11 13:21 resume
Mir ist die Option FollowSymLinks bekannt, und ich glaube, sie ist in meiner Datei / etc / apache2 / sites-enabled / 000-default festgelegt:
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options FollowSymLinks Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Irgendeine Idee, was mir fehlen könnte?
chmod -R +a "_www allow list,search,readattr" /root /root/site /root/site/about
, die diese Berechtigungen nur für die Apache-App (_www) erteilen, die etwas sicherer als "andere" ist.Der 403-Fehler kann auch durch ein verschlüsseltes Dateisystem verursacht werden, z. B. einen Symlink zu einem verschlüsselten Basisordner .
Wenn Ihr Symlink auf den verschlüsselten Ordner verweist, kann der Apache-Benutzer (z. B. www-data) nicht auf den Inhalt zugreifen, selbst wenn die Berechtigungen für Apache und Datei / Ordner korrekt festgelegt sind. Der Zugriff des WWW- Datenbenutzers kann mit einem solchen Aufruf getestet werden:
Es gibt Abhilfen / Lösungen für diese, zum Beispiel Hinzufügen der www-data Benutzer zu Ihrem privaten Gruppe (macht die verschlüsselten Daten an den Web - Benutzer) oder durch eine unverschlüsselte rsynced Ordner einrichten (wahrscheinlich eher sichern). Ich selbst werde mich wahrscheinlich während der Entwicklung für eine Rsync-Lösung entscheiden.
/ubuntu/633625/public-folder-in-an-encrypted-home-directory
Ein praktisches Werkzeug für meine Zwecke ist lsyncd . Auf diese Weise kann ich direkt in meinem verschlüsselten Home-Ordner arbeiten und Änderungen fast sofort auf der Apache-Webseite sehen. Die Synchronisation wird durch Änderungen im Dateisystem ausgelöst, die einen rsync aufrufen. Da ich nur an eher kleinen Webseiten und Skripten arbeite, ist die Synchronisierung sehr schnell. Ich habe mich für eine kurze Verzögerung von 1 Sekunde entschieden, bevor der rsync gestartet wird, obwohl es möglich ist, eine Verzögerung von 0 Sekunden einzustellen .
Installation von lsyncd (in Ubuntu):
Starten des Hintergrunddienstes:
quelle
sudo -u www-data ...
ist eine großartige Möglichkeit, um zu überprüfen, ob ein Berechtigungsproblem vorliegt! Beachten Sie, dass der Benutzer je nach Distribution WWW-Daten, Apache oder etwas anderes sein kann.Ich hatte ein ähnliches Problem, das ich auf meinem neuen Server lange Zeit nicht lösen konnte. Neben der Antwort von palacsint lautet eine gute Frage: Verwenden Sie Apache 2.4? In Apache 2.4 gibt es einen anderen Mechanismus zum Festlegen der Berechtigungen, die bei Verwendung der obigen Konfiguration nicht funktionieren. Daher habe ich die in diesem Blogbeitrag erläuterte Lösung verwendet .
Grundsätzlich musste ich meine Konfigurationsdatei konvertieren von:
zu:
Beachten Sie, wie die Zeilen " Bestellen" und " Zulassen" durch "Alle gewährt" ersetzt wurden
quelle
access_compat
Modul implementiert . Wenn dieses Modul aktiviert ist, funktioniert der erste Teil wahrscheinlich nicht wie erwartet. Wenn es nicht vorhanden ist, sollte der Versuch, Apache2 zu starten, mit Fehlern fehlschlagen./etc/httpd/conf/httpd.conf
existiert auf meinem System nicht und das Verzeichnis/etc/httpd/
existiert auch nicht./etc/apache2/apache2.conf
existiert für mich.Im Zusammenhang mit dieser Frage habe ich gerade herausgefunden, warum mein vhost mir diese 403 gab.
Ich hatte ALLE Möglichkeiten zu dieser und anderen Fragen ohne Glück getestet. Es macht mich fast verrückt.
Ich richte einen Server mit einer Release-Bereitstellung ein, die Capistrano ähnelt, und zwar über Symlinks. Als ich versuchte, auf den DocRoot-Ordner zuzugreifen (der jetzt ein Symlink zum aktuellen Release-Ordner ist), erhielt ich den 403.
Mein vhost ist:
und meine Hauptdatei httpd.conf war (Standardinstallation von Apache 2.4):
Es stellt sich heraus, dass die Hauptdefinition der Optionen Vorrang vor meinem vhosts-Feld hatte (für mich ist das nicht intuitiv). Also habe ich es geändert in:
und Eureka! (Beachten Sie das Pluszeichen vor FollowSymLinks in der Datei MAIN httpd.conf. Ich hoffe, dies hilft einer anderen verlorenen Seele.
quelle
Es gibt eine andere Möglichkeit, dass symbolische Links versagen, wie ich in meiner Situation festgestellt habe. Wenn Sie ein SELinux-System als Server haben und die symbolischen Links auf einen NFS-gemounteten Ordner verweisen (andere Dateisysteme können ähnliche Symptome hervorrufen),
httpd
möglicherweise die falschen Kontexte und lehnen es ab, den Inhalt der Zielordner bereitzustellen.In meinem Fall ist der SELinux-Kontext von
/var/www/html
(den Sie erhalten könnenls -Z
)unconfined_u:object_r:httpd_sys_content_t:s0
. Die symbolischen Links in/var/www/html
haben denselben Kontext, aber der Kontext ihres Ziels, der ein NFS-gemounteter Ordner ist, istsystem_u:object_r:nfs_t:s0
.Die Lösung besteht darin
fscontext=unconfined_u:object_r:httpd_sys_content_t:s0
, diemount
Optionen zu erweitern (z# mount -t nfs -o v3,fscontext=unconfined_u:object_r:httpd_sys_content_t:s0 <IP address>:/<server path> /<mount point>
. B. ).rootcontext
ist irrelevant unddefcontext
wird von NFS abgelehnt. Ich habe es nichtcontext
alleine versucht .quelle
Deaktivieren Sie zuerst Selinux (vim / etc / selinux / config)
vim /etc/httpd/conf/httpd.conf Bearbeiten Sie die folgenden Zeilen für Symlinks und Verzeichnisindizierung:
Wenn .htaccess-Datei, dann AllowOverride all
quelle
/etc/httpd/
Ordner nicht auf meinem System habe?Für alle, die nach dem Upgrade auf 14.04 Probleme haben: /ubuntu/452042/why-is-my-apache-not-working-after-upgrade-to-ubuntu-14-04 als Root vor dem Upgrade geändert = / var / www nach dem Upgrade = / var / www / html
quelle
Zusätzlich zum Ändern der Berechtigungen, wie in den anderen Antworten angegeben, musste ich Apache neu starten, damit es wirksam wird:
quelle
Noch eine subtile Falle, falls Sie brauchen
AllowOverride All
:Irgendwo tief im fs-Baum ein alter
.htaccess
WesenOptions Indexes
anstatt
Options +Indexes
war alles, was nötig war, um das
FollowSymLinks
Set in der Serverkonfiguration lässig zu deaktivieren und hier eine mysteriöse 403 zu verursachen.quelle