Ich habe lighttpd auf Debian Jessie installiert, um statische Dateien bereitzustellen. Ich habe ein USB-Laufwerk unter /media/storage eingebunden, mit /media/storage/www als meinem Dokumentenstammverzeichnis und meine lighttpd.conf sieht folgendermaßen aus:
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
# "mod_rewrite",
)
server.document-root = "/media/storage/www/"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
server.port = 80
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
Ich möchte die Website mit meinem normalen Benutzer "jurre" bearbeiten können. Also habe ich "sudo chown jurre:www-data /media/storage/www" und "sudo chmod 740 /media/storage/www" ausgeführt (damit ich Dateien lesen, schreiben und ausführen kann, der Webserver aber nur lesen kann). Natürlich habe ich mich abgemeldet und wieder angemeldet und danach lighttpd neu gestartet. Ich habe eine einfache index.html mit "Hello World!" hinzugefügt, um das Setup zu testen, aber ich erhalte immer einen 403 Forbidden-Fehler, wenn ich zu
ls -l in /media/storage/www:
total 8
-rw-r--r-- 1 jurre www-data 58 May 16 16:43 index.html
Ich habe auch das Lighttpd-Fehlerprotokoll geprüft, aber es zeigt nur, wann der Webserver heruntergefahren und neu gestartet wurde, keinerlei Fehler im Protokoll.
Antwort1
Sie können nicht auf Ihren www
Ordner zugreifen, da www-data
der Benutzer nur 4 Rechte hat (Benutzer:Gruppe jurre:www-data
und Rechte 740), was bedeutet, dass er für den Ordner kein Ausführungsrecht hat www
, sondern nur Leserechte (Ordnernamen und -attribute lesen).
Sie benötigen das Ausführungsrecht für den Ordner, da das Ausführen eines Ordners bedeutet, dass dieser geöffnet wird (um Dateien aufzulisten oder ihn zu öffnen). Sie können dies mit Ihrem eigenen Benutzer jurre
(Recht 7) tun www-data
, müssen dafür aber das Ausführungsbit nicht setzen.
Ändern Sie Ihr Recht auf diesen Ordner auf 750 und versuchen Sie es erneut.
Antwort2
Ein weiteres häufiges Problem ist ein aktives SELinux auf der Maschine.
Selbst mit den richtigen Berechtigungen für den Verzeichnisbaum erhalten Sie immer noch eine 403-Fehlermeldung, wenn das Verzeichnis nicht in SELinux registriert wurde.
chcon -R -h -t httpd_sys_content_t /absolute/path
wird das Problem beheben.
Antwort3
Superpelikan,
Weiter zum Kommentar oben. Vielleicht möchten Sie versuchen „sudo chown -R www-data:www-data * “ oder„sudo chown -R www-data:www-data /media/storage/www/*“ Auf diesem Ordner oder Unterordnern innerhalb/Medien/Speicher/www Auf diese Weise besitzt der Webserver die darin enthaltenen Ordner und Dateien, nicht Sie als Benutzer.
Was chmod betrifft.. Versuchen Sie es auch mit etwas wie„sudo chmod -R 755 /media/storage/www/*“ Schlimmer Fall"chmod -R 775„Es gibt unterschiedliche Ebenen der Dateisicherheit zwischen dem Webserver und dem physischen Betriebssystem selbst. chown/chmod wirkt sich eher auf Betriebssystemebene aus. Beeinflusst auch das Abrufen von Dateien und Webseiten auf dem Server.
Hoffe, das hilft ein bisschen. Prost.