Problem
Ich verwende Apache Webserver mit dem Ordnerbesitzer auf _www: _www fest. Ich vergesse immer wieder die beste Praxis, wenn es um Dateiberechtigungen geht, zum Beispiel, wenn ich ein neues Laravel 5 -Projekt erstelle.
Bedeutet dies, dass Apache auch Zugriff auf die Ordner Speicher und Lieferanten benötigt oder nur auf ihren aktuellen Inhalt?
Laravel 5 benötigt /Speicherordner, um beschreibbar zu sein. Obwohl ich nicht die beste Idee war, habe ich die 777 -Erlaubnis für den Ordner festgelegt
In der offiziellen Dokumentation heißt es:
LaRavel verlangt möglicherweise einige Berechtigungen, die konfiguriert werden müssen: Ordner in Speicher und Anbieter erfordern Schreibzugriff auf dem Webserver.
Ich verstehe, dass es viel besser sein könnte, wenn ich nur den Eigentümer anstelle der Berechtigungen ändern würde.
Aber jetzt habe ich Probleme mit meinem Redakteur und frage mich immer nach Passwörtern, wann immer ich eine Datei speichern möchte.
Was wäre der beste Weg, um diese Probleme zu lösen? ?
Lösung
Bevor ich die endgültige Antwort gebe, möchte ich nur das Offensichtliche angeben. Wenn Sie einem Ordner eine 777-Erlaubnis geben möchten, können Sie alle in diesem Verzeichnis lesen, schreiben und ausführen.
Grundsätzlich gibt es zwei Möglichkeiten, Ihr Eigentum und Ihre Berechtigungen einzurichten:
Das zweite ist, wie die meisten Menschen es tun und das ist, was Laravel vorschlägt.
Unter der Annahme, dass www-data Ihr Webserverbenutzer ist, können Sie ausführen:
sudo chown -r www-data: www-data/path/to/your/laravel-directory
Und das ist gut, weil Ihr Webserver Dateien besitzt und ausführen kann. Der schlechte Teil ist, dass Ihr angemeldeter Benutzer (entweder über FTP oder SSH) wahrscheinlich ein anderer Benutzer ist. Sie möchten diesen Benutzer der Webserver -Gruppe hinzufügen:
sudo usermod -a -g www -data ubuntu
Dies setzt natürlich davon aus, dass Ihr Webserver als www-data (das Homestead-Standard) ausgeführt wird, und Ihr Benutzer ist Ubuntu (es ist Vagrant, wenn Sie Homestead verwenden).
Eine gute Praxis besteht dann darin, alle Ihre Verzeichnisse auf 755 und alle Ihre Dateien auf 644 zu setzen. Stellen Sie die Dateiberechtigungen mit dem folgenden Befehl fest:
sudo find/path/to/your/laravel -directory -Typ f -exec chmod 644 \;
Setzen Sie Verzeichnisberechtigungen:
sudo find/path/to/your/laravel -directory -Typ d -exec chmod 755 \;
Ihr Benutzer als Eigentümer
Was ich bevorzuge ist, alle Verzeichnisse und Dateien zu besitzen, mit denen ich arbeite (es erleichtert die Arbeit mit allem viel einfacher), also tue ich:
sudo chown -r my-user: www-data/path/to/your/laravel-directory
Dann kann ich mir und dem Webserver -Benutzer diese Berechtigungen einfach geben:
sudo find/path/to/your/laravel -directory -typ f -exec chmod 664 \;
sudo find/path/to/your/laravel -directory -Typ d -exec chmod 775 \;
Eine Sache, die Sie nicht vergessen möchten, besteht
Ihr Webserver muss auch Daten hochladen und speichern. Stellen Sie daher auch die Berechtigungen für den Speicherordner ein:
sudo chgrp -r www -data speicher stationstrap/cache
sudo chmod -r ug+rwx speichern stafstrap/cache
Das war nicht so schwierig, nicht wahr??