[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Apache mit php5-fpm und verschiedenen Benutzern



Am Freitag, 6. Januar 2017, 01:00:44 CET schrieb Sven Hartge:
> Martin Steigerwald <martin@lichtvoll.de> wrote:
> > Ich hab, nachdem ich die Migration auf nginx aufgab, da es Out of the
> > box kein Content Negotiation kann,  nun das PHP auf meinem Apache von
> > Modul auf php5- fpm umgestellt, um dann das Event MPM statt des
> > Prefork MPM zu nutzen.
> > 
> > Dabei ging ich von dem folgenden von Sven Hartge inspirierten HOWTO
> > aus:
> > 
> > https://netz-rettung-recht.de/archives/1909-PHP-FPM-jetzt-mit-mod_proxy_fc
> > gi.html
> > 
> > Das funktioniert soweit auch, das Wordpress funktioniert, meine
> > Uralt-Webseite mit Marke Eigenbau-PHP ebenfalls, und Owncloud habe ich
> > davor ohnehin entsorgt, da ich vorhabe, es durch Seafile zu ersetzen.
> > 
> > Im HOWTO ist allerdings nun auch von verschiedenen Pools für
> > verschiedene Nutzer die Rede. Das verstehe ich da jetzt nicht so ganz,
> > da einerseits in der Pool-Konfiguration der neue Benutzer eingetragen
> > soll, dann doch laut Kommentaren auf dem Blog-Eintrag doch wieder
> > nicht, da Apache2 doch als www- data läuft.
> 
> Wenn du php-fpm einsetzt, dann musst du Trennen zwischen dem Benutzer,
> unter dem Apache läuft und unter dem FPM läuft.
> 
> Apache ist ja bei FPM nur noch ein "Proxy" für PHP-Seiten, diese werden
> ja im FPM-Prozess ausgeführt.
> 
> Daher kann man ohne Weiteres einen neuen Pool im FPM unter einem anderen
> Benutzer anlegen und alle PHP-Seiten laufen in diesem Pool dann unter
> dem Kontext des anderen Benutzers.
> 
> Statische Dinge, wie z.B. Bilder etc. werden weiterhin vom Apache
> ausgeliefert, was ja ungefährlich ist. Natürlich muss man dabei dann
> beachten, dass Apache auch Zugriff auf diese Daten hat.

Verstehe. Ich hab mir schon leise sowas gedacht. Danke für die Bestätigung. 
Das aus den Kommentaren hat mich halt verwirrt. Vielleicht kontaktiere ich den 
Blog-Autor mal und weise ihn auf den Thread hier hin.

> > Nun überlege ich, das irgendwann mal komplett zu kapseln und zwar via
> > 
> > libapache2-mpm-itk - multiuser module for Apache
> > 
> > Also für jeden Benutzer den Apache unter dem Benutzer laufen lassen oder
> > gar für jeden Benutzer noch einen weiteren Benutzer machen, damit jemand,
> > der in die Seite einbricht nicht gleich auch noch Zugriff auf das
> > Homeverzeichnis hat. Also z.B. für die Webseiten für den Benutzer martin,
> > noch einen Benutzer martinweb. Den Benutzer martin würde ich dann in die
> > Gruppe martinweb packen oder anderweitig via ACLs dafür sorgen, dass er
> > auf die Webseiten-Daten zugreifen kann.
> > 
> > Was haltet ihr davon? Hat das jemand so im Einsatz? Funktioniert das
> > gut? Oder ist das für einen kleinen privaten Server alles schon viel
> > zu kompliziert und wartungsaufwendig?
> 
> ITK brauchst du nicht für so ein Setup, es sei denn, du willst noch
> andere aktive Dinge neben PHP in deinem Benutzerkontext ausführen, z.B.
> CGIs. (Wobei man das mittels z.B. "fcgistarter" auch via mod_proxy_fcgi
> kapseln kann.)
> 
> Willst du nur PHP machen, dann brauchst du nur einen Benutzer
> "martinweb" anlege, einen Pool definieren, der als dieser Benutzer
> läuft, mittels ACL dafür sorgen, dass "www-data" (und ggfls. dein
> normaler User "martin") lesenden Zugriff auf die Dateien hat (für die
> statischen Daten) und fertig.
> 
> Willst du dagegen mod_itk nutzen, so braucht man FPM streng genommen gar
> nicht, sondern kann normal mit mod_php arbeiten, da die User-Trennung ja
> von mod_itk schon vorgenommen wird.

Naja, das geht doch aber eben nicht, wenn ich das Event MPM verwenden möchte, 
was ich momentan mache, da PHP doch nicht thread safe ist – oder hat sich 
daran etwas geändert? Das war im Grunde auslösende Motivation für meine 
Änderung – endlich von diesem altem mod_php + MPM Prefork-Setup wegzukommen.

So oder so werde ich das mit den Benutzern umsetzen und die Skript-Ausführung 
wirklich auf Spezial-Benutzer umbauen. Ich werd das aber wohl andersrum machen 
mit ACLs. D.h. die Rechte lasse ich so, füge jedoch z.B. für martinweb eine 
passende Default-ACL und ACL hinzu.

Das fühlt sich einfach besser an, wenn jemand, dafür Benutzer mit minimalen 
Privilegien zu verwenden, auch wenn ich die wenige eingesetzte PHP-Software in 
der Regel recht aktuell halte.

Danke,
-- 
Martin


Reply to: