Welches Berechtigungsschema sollte ich verwenden, wenn ich Magento sicher bereitstelle?

7

Wir führen das meiner Meinung nach ziemlich normale Magento-Setup aus:

  • Bereitstellung über rsync (es sollte auch mit git pullund scp/ SFTP bereitstellbar sein, um die Serverkonfigurationen zu vereinfachen und das Leben der Entwickler zu vereinfachen. Leider erlaubt Standard-Git nur das Setzen des exectuable-Flags und nicht die vollständige Unix-Berechtigung wie Gruppenbeschreibbarkeit)
  • Läuft auf Apache
  • Läuft nur auf Computern, die setgidSticky Bit unterstützen

Und wir haben ziemlich normale Ziele:

  • Bereitstellen in einer Vielzahl von Umgebungen mit Kundenkontakt (Entwickler, Produkt, CI usw.) kontinuierlich
  • Einfach auf Entwicklungsboxen bereitstellen
  • Alle Funktionen müssen ausgeführt werden (Magento Connect Manager oder die Erstinstallation von Magento müssen nicht unterstützt werden). Die Magento-Funktionen funktionieren vollständig und sind mit allen wichtigen Plugins kompatibel

Wie kann ich innerhalb dieser Ziele Dateiberechtigungen für die Bereitstellung einrichten (und Entwicklungs- und CI-Boxen einrichten), um die Berechtigungen (im Prinzip der geringsten Berechtigungen ) so weit wie möglich einzuschränken ?

Ein Überblick über Quellen, die ich mir bereits angesehen habe:

  • Eine Magento-Wiki-Seite , die ein 700/600-Setup mit allen Dateien des Apache-Benutzers empfiehlt, wobei jedoch die Kerndateien (alle Dateien außer /mediaund /var) auf 400 festgelegt sind.
  • Eine Magento StackExchange-Antwort , in der der 700/600-Ansatz erwähnt wird, schließt mit der Empfehlung, ein gruppenbasiertes 770 / 660- und 750/640-Setup zu empfehlen.
  • Eine weitere Magento-Wiki-Seite , die zunächst 775/664 empfiehlt. Es enthält außerdem einige Erläuterungen zu den erforderlichen Berechtigungen, empfiehlt jedoch keine explizite Einstellung.
Steven
quelle

Antworten:

3

Ich arbeite an einer Lösung, die sich richtig anfühlt, aber dies ist keineswegs maßgebend. Ich würde gerne Feedback oder Fragen bekommen. Hier ist es:

Das Setup umfasst zwei Benutzer:

  • Der deployBenutzer in der deployGruppe: Der Benutzer, der während der Bereitstellung über rsync / SSH auf den Server schreibt.
  • Der apacheBenutzer in der apacheGruppe: Der Benutzer, unter dem Apache Magento ausführt.

Die allgemeine Philosophie besteht darin, das gesamte Magento-Verzeichnis als zu verwalten deploy:apacheund die Ordner, für die ein operativer Schreibzugriff erforderlich ist, in Gruppen zu schreiben. Schritt für Schritt, der Sie dorthin bringen soll:

  1. Wie rooterstellen Sie die HTTP - root virtuellen Host, sagen wir, /var/www/htmlund chown es als deploy:apachedas setgid Sticky - Bit - Einstellung:

    mkdir /var/www/html
    chown deploy:apache /var/www/html
    chmod g+s /var/www/html
  2. Stellen Sie den Magento-Code mithilfe des deployBenutzers über rsync / SSH bereit. Alle Dateien und Ordner sollten jetzt Eigentum sein deploy:apache.

  3. Als deployBenutzer setzen /varund /mediaauf Gruppe beschreibbar.

    chmod g+w /var/www/html/var
    chmod g+w /var/www/html/media
  4. Entfernen Sie umask(0)den Magento-Code, um die Standardeinstellung des Betriebssystems zu verwenden, 022oder setzen Sie ihn explizit auf umask(022).

  5. Neue temporäre Dateien und Ordner sollten Eigentum von apache:apacheund sein 755oder sein 644.
  6. Ihr Setup ist gut und sollte bei zukünftigen Bereitstellungen keine zusätzlichen Aktionen erfordern.

Dieser Ansatz steht im Einklang mit dem Magento-Wiki-Artikel, in dem die Gruppenberechtigungen empfohlen und ein wenig ausgearbeitet werden. Es scheint auch ziemlich nah an dem zu sein, was dieser Kern von Svenvarkel, den ich gefunden habe, tut. Ich sehe seine Vorteile gegenüber dem Ansatz, die Dateien als Eigentum des Apache-Benutzers festzulegen, darin, dass Sie bei diesem Ansatz den Apache-Benutzer für die Bereitstellung verwenden müssen. Je nach Implementierung müssen Sie entweder die Schreibberechtigungen für Bereitstellungen ständig umschalten oder den Kern beschreibbar lassen vom Apache-Benutzer.

Ich würde gerne Kommentare oder Kritiken zu meinem vorgeschlagenen Ansatz erhalten.

Steven
quelle
Hallo Steven, das stimmt ziemlich genau mit dem überein, was ich in der verknüpften Antwort zu beschreiben versucht habe. Das einzige, was ich in Frage stellen würde, ist, warum Sie 755 oder 644 in 5.) benötigen, es sei denn, Sie wissen, dass Sie Welt lesen müssen.
Kristof bei Fooman