nginx 403 Verbotener Fehler beim Hosting im Benutzer-Home-Verzeichnis

8

Ich habe nginx 1.1.19 unter Ubuntu 12.04 auf meinem lokalen Computer installiert und die Standardeinstellung beibehalten, /etc/nginx/nginx.confaußer die Benutzeranweisung zu ändern.

/etc/nginx/nginx.conf

user nginx www-data;
worker_processes 4;
pid /var/run/nginx.pid;
...

Ich möchte, dass eine einfache statische Site mit dem Webstamm in meinem Benutzerverzeichnis funktioniert (Nehmen wir an, mein Benutzername ist 'ubuntu'). Hier ist die Konfiguration für meine Testseite.

/ etc / nginx / sites-available / test-site

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /home;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to index.html
    try_files $uri $uri/ /index.html;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
    }

}

Jetzt werden natürlich alle meine Dateien im Webstamm abgelegt, sodass ich dies NICHT auf einem echten Server ablegen würde, aber dies verdeutlicht meinen Standpunkt. Wenn ich eine einfache Webseite unter /home/index.html erstelle (nicht in meinem Ubuntu-Benutzerordner), kann ich auf die Seite unter zugreifenhttp://localhost/

Das funktioniert gut. Jetzt möchte ich einfach das Webstammverzeichnis INSIDE nach Benutzerordner ablegen. Also ändere ich in / etc / nginx / sites-available / test-site die Root-Direktive in `root / home / ubuntu;. Ich erstelle den Symlink zur Testseite neu, verschiebe /home/index.html nach /home/ubuntu/index.html und stoppe und starte den Nginx-Server. Jetzt bekomme ich den 403 Forbidden Fehler.

Mein erster Verdacht war, dass dies ein Zulassungsproblem war. Wenn ich jedoch renne, ls -al index.htmlsehe ich

-rw-r--r--  1 nginx   www-data   183 Aug 12 13:13 index.html

was sieht für mich richtig aus? Sogar das Ausführen von chmod 777 /home/ubuntu/index.html, damit die Berechtigungen erhalten bleiben

-rwxrwxrwx 1 nginx www-data 183 Aug 12 13:13 index.html

hilft nicht. /etc/init.d/nginx configtesterzeugt auch keine Fehler und ich bin mir sicher, dass der Symlink in/etc/

Ich bin also seit ein paar Stunden dabei und frage mich jetzt, was an meinem Benutzerverzeichnis so besonders ist, dass ich nichts darin bereitstellen kann. Ubuntu verschlüsselt heutzutage Home-Verzeichnisse? Könnte das das Problem sein? Ich habe dieses Problem auch auf einer EC2 Ubuntu 12.04-Instanz (weiß nicht, ob Benutzerverzeichnisse dort verschlüsselt sind)

dgh
quelle

Antworten:

13

Standardberechtigungen für das Benutzer-Home-Verzeichnis

Es scheint also, dass die Standardberechtigungen für Benutzer-Home-Verzeichnisse in Ubuntu 12.04 700 sind. Nginx muss über Leseberechtigung für die Dateien verfügen, die bereitgestellt werden sollen, UND über Ausführungsberechtigungen in jedem der übergeordneten Verzeichnisse auf dem Pfad vom Stammverzeichnis zu den bereitgestellten Dateien verfügen.

Sie können Ihrem Benutzerverzeichnis diese Berechtigungen erteilen, indem Sie ausführen

chmod 701 user_home

Sie können auch 755 verwenden. Dies ist die Standardberechtigungseinstellung für das Basisverzeichnis auf vielen Systemen.

Die Verzeichnisse / Dateien in Ihrem Webstamm können dem Benutzer www-data oder Ihrem regulären persönlichen Benutzer gehören, solange der Benutzer / die Gruppe, unter der / der nginx ausgeführt wird (wie in nginx.conf definiert), die READ-Berechtigung für alle zu bedienenden Dateien hat Berechtigung für alle Webstammverzeichnisse ausführen.

Ich habe gerade alle Verzeichnisse in meinem Webstamm so eingestellt, dass sie meinem Benutzerkonto gehören und über die Berechtigungen 755 verfügen, und ich habe festgelegt, dass alle Dateien, die vom Webstamm bereitgestellt werden sollen, über die Berechtigungen 664 verfügen, da dies die Standardeinstellungen auf meinem Computer waren.

Hinweis zum Konvertieren von Berechtigungsnummern in String Rep.

Ex. drwxr-x--x becomes 751.

Ignorieren Sie das erste Zeichen (d für Verzeichnis, - für Datei usw.). Die verbleibenden 9 Zeichen bilden ein binäres Triplett, bei dem jedes Nicht-Bindestrich-Zeichen eine 1 und ein Bindestrich eine 0 ist.

So drwxr-x--x becomes rwxr-x--x 
becomes 111 101 001 
which is converted to a decimal 751

Ich brauchte eine Auffrischung, wenn ich mich mit Berechtigungen befasste.

dgh
quelle
4
Ich denke nicht, dass das Hinzufügen der Ausführungsberechtigung für das Home-Verzeichnis für alle die beste Lösung ist. Mit acl sind Sie besser dran. Wenn Sie acl in / etc / fstab für eine bestimmte Partition festgelegt haben, führen Sie Folgendes aus:setfacl -m 'u:nginx:--x' /home/given_user
Gee-Bee