Was sind die richtigen Besitzrechte und Berechtigungen für den CakePHP app / tmp Ordner für die Produktion?

8

Ich würde gerne die Antworten und Erklärungen zu den folgenden Fragen kennen:

  1. Welcher Benutzer / welche Gruppe sollte die Cake-Dateien besitzen?

  2. Falls unterschiedlich, welcher Benutzer / welche Gruppe sollte den Ordner app/tmp besitzen? (und Unterordner)

  3. Welche Berechtigung haben die richtigen Benutzer / Gruppen für die Produktion von Ordnern und Dateien? (was auch bei korrekter Einstellung an der Entwicklung arbeiten sollte)

  4. Wo wird hochgeladene Dateien gespeichert und welche Berechtigungen müssen für diesen Ordner festgelegt werden? Wo sollte es relativ zu app/ sein?

Ich weiß 777 behebt Fehler, aber ich möchte es richtig einrichten.

Ich habe 660 gehört, sollte mehr als genug für die Produktion sein, wenn alles richtig eingerichtet ist.

Wer muss read access haben, wer muss write access haben und braucht jemand execute ?

    
mgPePe 19.09.2013, 15:33
quelle

2 Antworten

17

HINWEIS: Ich denke, ich habe die Antworten gefunden und da niemand eine gute Antwort geschrieben hat, werde ich es schreiben. Wenn Sie mehr über das Thema wissen und Fehler oder Sicherheitsprobleme sehen, lassen Sie es mich wissen, ich wird sie korrigieren.

1) CakePHP-Besitz

Die CakePHP-Dateien sollten Ihnen, dem Benutzer des Rechners (egal, mit welchem ​​Sie sich anmelden) gehören. Haben Sie root nicht als Eigentümer!

OSX: Der johnsmith -Teil von /Users/johnsmith

Linux: Der johnsmith -Teil von /home/johnsmith

2) app / tmp-Besitz.

Wie in der CakePHP Dokumentation :

  

... stelle sicher, dass das Verzeichnis app / tmp und all seine Unterverzeichnisse in deinem Verzeichnis enthalten sind   Kuchen-Installation kann vom Webserver-Benutzer beschrieben werden.

Option 1:

Der Benutzer muss der Benutzer des Apache sein. Der Gruppenbesitzer kann die Gruppe sein, der Sie angehören, sodass Sie über Finder / CLI auch auf diesen Ordner zugreifen können. Haben Sie root nicht als Eigentümer!

OSX: Apache ist in letzter Zeit auf OSX vorinstalliert und der Standardbenutzer von Apache ist _www . Wenn Sie jedoch nicht sicher sind, können Sie es herausfinden, indem Sie terminal ps aux | grep httpd eingeben, während Apache ausgeführt wird. Die letzte Zeile ist der Befehl, den Sie gerade eingegeben haben, schauen Sie also darüber.

Nachdem Sie Ihren Apache-Benutzer kennen, müssen Sie ihn nun app/tmp/ zuweisen. Sie tun dies mit dem folgenden Befehl: sudo chown -R _www app/tmp/

Linux: Der Standardbenutzer unter Linux ist normalerweise www-data mit der Gruppe www-data . Wenn Sie sich nicht sicher sind, verwenden Sie ps aux | grep httpd , um den Benutzer herauszufinden, und sudo chown -R _www app/tmp/ , um dem Apache dieses Ordners den Besitz zuzuweisen.

Option 2:

Sie können sich als Benutzereigentümer behalten, aber Sie haben den Gruppenbesitzer als eine Gruppe eingerichtet, zu der der Apache gehört. Standardmäßig hat Apache eine eigene Gruppe, aber Sie könnten eine neue Gruppe erstellen und Apache hinzufügen.

OSX: Die Gruppe von Apache auf OSX ist standardmäßig die gleiche wie der Benutzer: _www . Sie müssen dann den folgenden Befehl ausführen, um die Eigentumsrechte zu übernehmen: sudo chown -R :_www app/tmp/ . Wenn Sie jetzt die Berechtigungen mit ls -l überprüfen, sollten Sie sowohl Ihren Benutzernamen ( johnsmith ) als auch den neuen Gruppenbesitzer sehen - _www .

Linux: * Standardmäßig ist die Gruppe von Apachen www-data , also benutze dieselben Befehle um den Besitz zu ändern: sudo chown -R :www-data app/tmp/ .

HINWEIS: Debian / Ubuntu verwenden www-data , während CentOS apache verwendet.

3) Berechtigungen

Damit die Site ausgeführt werden kann, benötigt Apache read und write ohne execute . Damit Sie darauf zugreifen können (vorausgesetzt, Sie sind in der Gruppe, der app/tmp gehört), benötigen Sie auch read und write , wenn Sie manuell Dinge mit Terminal / Finder bearbeiten. Alle anderen Benutzer sollten keinerlei Rechte haben. Also:

OSX und Linux: sudo chmod -R 660 app/tmp/ . Der -R -Teil soll dies rekursiv für alle internen Ordner tun. Der erste 6 ist für den Benutzerbesitzer (OSX: _www oder Linux: www-data ), der zweite 6 ist für den Gruppenbesitzer (OSX: staff oder Linux: johnsmith ), der 0 ist für alle anderen Benutzer / Gäste.

HINWEIS: Laut dieser Pull-Anfrage für CakePHP sieht es aus, als hätte CakePHP 2.4 die Fähigkeit, Unterordner zu erstellen app/tmp/ , was bedeutet, dass ein 7 anstelle von 6 für den Benutzer benötigt wird, der jetzt 760 wird.

4) Uploads Ordner

Wenn Sie Dateien hochladen möchten, benötigen Sie ein ähnliches Setup für den Ordner img/uploads oder wo auch immer Sie hochladen. Das Eigentumsrecht ist das gleiche, aber die Berechtigungen müssen Ausführungsrechte für Umbenennungszwecke und die Erstellung von Ordnern haben. Daher sollte die vorherige 660 jetzt 760 sein. Im Idealfall befinden sich die Uploads außerhalb des Verzeichnisses webroot/ , für das ein absoluter Pfad erforderlich ist.

    
mgPePe 20.09.2013, 09:18
quelle
1

Für alle Dateien in app/tmp und Unterordner benötigen Sie nur rw für den Webserverprozess und bei Bedarf zur Verwendung der CLI, des Konsolenbenutzers.

Wenn jemand Konsolenbefehle mit einem Benutzer ausführt, der Superrechte hat oder in der falschen Gruppe ist, vermasselt er Dinge, weil das, was man erstellt, nicht von dem anderen gelesen oder geschrieben werden kann und dann Warn- oder Fehlermeldungen erscheinen. Einige Leute (einschließlich mir, wenn ich zu faul bin) beheben das mit 777 :)

    
user221931 20.09.2013 02:33
quelle