Ich werde die Antworten von Rahmu und MV mit einer technischen Lösung vervollständigen. Alles, was folgt, gilt nur für UNIX-ähnliche Systeme.
Scrollen Sie über den Abschnitt chmod / chown, um ein Beispiel mit ACLs zu erhalten - ein leistungsfähigeres Tool als die UNIX-Dateimodi.
Suchen des Benutzernamens Ihres Webservers
Zunächst müssen Sie den Benutzernamen kennen, unter dem Ihr Webserver ausgeführt wird. Wenn Sie Apache verwenden, kann es sein , apache
oder httpd
, www-data
usw. Auf den meisten Debian-ähnlichen Systemen, Apache ist www-data
. Für Nginx ist dies im Allgemeinen auch der Fall www-data
.
Versuchen Sie Folgendes:
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
Stellen Sie sicher, dass der Benutzername, den dieser Befehl zurückgibt, kohärent ist (z. B. verwende ich 99% der Zeit nginx, aber dieser Befehl gibt tomcat7
einen Java-Webserver zurück, den ich einmal installiert habe) .
Erteilen von Berechtigungen an den Webserver: Verwenden von chmod
undchown
Das Ausführen chmod
von 666 oder 777 (die Lösung für diese Art von Problemen in schlechten Dokumentationen / Tutorials) kann auf magische Weise zum Funktionieren führen, ist jedoch unsicher. Wenn Sie 666 oder 777 Berechtigungen erteilen, erhalten Sie Zugriff auf "andere". Also nicht nur Apache, sondern auch grandmother
und nsa
(vorausgesetzt, diese Benutzerkonten sind auf Ihrem Computer vorhanden - aber nein, bitte vermeiden Sie dies, es sei denn, es dient nur zum Testen / zur Fehlerbehebung).
Es ist besser, genauer zu sein und nur Ihnen und Apache Berechtigungen zu erteilen. Ändern Sie die Gruppe Ihrer Dateien, um dem Webserver die vollständige Kontrolle über Ihre Dateien zu geben. Ändern Sie dazu den Eigentümer rekursiv:
chown -R www-data:www-data your/folder/
Höchstwahrscheinlich möchten Sie jedoch den vollständigen Zugriff auf Ihre Dateien behalten, indem Sie nur die Gruppe ändern:
chown -R yourusername:www-data your/folder/
Führen Sie dann die entsprechenden Schritte aus chmod
, um der Gruppe www-data
dieselben Berechtigungen wie Ihnen zu erteilen . Wenn der aktuelle Modus beispielsweise 640 ist (6 für Sie, 4 für www-Daten, 0 für andere, übersetzt in -rw-r -----) , setzen Sie ihn auf 660 (6 für Sie, 6 für www- Daten, 0 für andere, übersetzt in -rw-rw ----) . In der Antwort von rahmu erfahren Sie mehr über Dateimodi. Es handelt sich um einen alten, jedoch eleganten Mechanismus.
Um zu vermeiden, dass arkane Zahlen mit manipuliert werden chmod
, können Sie auch die folgende Syntax verwenden:
chmod -R g+rw your/folder/
Es bedeutet "zu der Gruppe ( g
), +
Lese- und Schreibberechtigung ( rw
) für Ordner hinzufügen your/folder/
, rekursiv ( -R
)".
In 90% der Fälle sollte dies ausreichen.
Meine bevorzugte Methode: Verwenden von ACLs (Access Control List)
Manchmal reicht die erste Lösung nicht aus. Ich nehme das Beispiel von Symfony Framework , das viele Daten protokolliert und zwischenspeichert. Es benötigt also Schreibzugriff auf den entsprechenden Ordner.
Und die chmod
/ chown
-Methode ist möglicherweise nicht ausreichend, wenn Sie die Symfony-Konsole in der CLI (unter meinem Benutzerkonto) und im Web (Webserver-Benutzer) parallel verwenden. Dies verursacht viele Probleme, da Symfony die Berechtigungen ständig ändert.
In diesem Fall verwenden wir die ACL (Access Control List), eine erweiterte Methode zum Verwalten von Berechtigungen auf vielen UNIX-Systemen.
Hier die Befehle der offiziellen Symfony-Dokumentation ( bitte ändern app/cache
und app/logs
an Ihre Bedürfnisse anpassen ):
Auf einem System, das unterstützt chmod +a
(dh nicht Debian / Ubuntu)
sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
Auf einem System, das nicht unterstützt chmod +a
(am häufigsten)
Sie benötigen das setfacl
Werkzeug; Möglicherweise ist es standardmäßig auf Ihrem System installiert. Versuchen Sie daher, festzustellen setfacl -v
, ob der Befehl verfügbar ist.
Wenn der Befehl nicht verfügbar ist und Sie Ubuntu 14.04+ verwenden, müssen Sie nur das Tool installieren:
sudo apt install acl
Befolgen Sie andernfalls die Dokumentation Ihres Betriebssystems, da Sie möglicherweise ändern müssen, wie Ihre Partition bereitgestellt wird ( Ubuntu-Dokumentation hier ).
Und da sind wir:
sudo setfacl -R -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
Ich hatte nie Probleme mit dieser Methode, zufrieden oder Ihr Geld zurück.