2014-11-11 3 views
6

Beim Erstellen von php5-fpm-Pools pro Benutzer auf einem Apache mod_fastcgi-Setup welche der folgenden ist die sicherste und effizienteste Möglichkeit, Webserver-Berechtigungen für den PHP-Pool zu gewähren?Erstellen von pro-Benutzer php5-fpm Pools auf dem sicheren Weg

Option 1:

Stellen Sie die Gruppe www-data:

listen.owner = username 
listen.group = www-data 
listen.mode = 0660 

user = username 
group = www-data 

Während diese erstellt Dateien, die von PHP funktioniert würde das Eigentum Satz Benutzernamen haben: www-data während Dateien über SCP hochgeladen werden have Benutzername: Benutzername.


Option 2:

www-data dem ergänzenden Gruppe hinzufügen username:

listen.owner = username 
listen.group = username 
listen.mode = 0660 

user = username 
group = username 

-

usermod -aG username www-data 

Welche dieser Optionen sicher sind? Sie können auch eine bessere Methode teilen.

überprüfte ich die folgenden Handbücher:

Aber sie alle geschrieben wurden, bevor Fehler #67060 entdeckt und behoben wurde.

Antwort

0

Ich verwende folgendes Setup auf meinem LEMP (Nginx + PHP-FPM). Für Apache sollte dies ebenfalls gelten.

PHP-FPM betreibt mehrere Pools als nobody:user1, nobody:user2 ...

Nginx läuft als nginx:nginx

Benutzer nginx ein Mitglied jeder user1 ist, user2 .. Gruppen:

# usermod -a -G user5 nginx 

Dateiberechtigungen:

root:root drwx--x--x /home 
user1:user1 drwx--x--- /home/user1      (1) 
user1:user1 rwxr-x--- /home/user1/site.com/config.php (2) 
user1:user1 drwxrwx--- /home/user1/site.com/uploads  (3) 
nobody:user1 rw-rw---- /home/user1/site.com/uploads/avatar.gif (4) 

(1) Benutzer home dir hat keine x Erlaubnis für other, so php-fpm Pool läuft als nobody:user2 haben keinen Zugriff auf /home/user1 und umgekehrt.

(2) PHP-Skript hat keine w für group, so dass es keine Dateien in htdocs erstellen kann.

(3) Unter uploads sollten wir den Schreibzugriff für die Gruppe user1 manuell aktivieren, damit das php-Skript Dateien dorthin stellen kann.Vergessen Sie nicht, PHP-Handler für uploads, in nginx dies wird durch

server { 
    .... 
    location ^~ /uploads/ { } 

aber für Apache sollten Sie überprüfen, zu deaktivieren.

(4) hochgeladenen Dateien auch w für group haben sollten, wenn wir user1 wollen diese Dateien später per ftp oder ssh bearbeiten können (Anmeldung als user1:user1). PHP-Code ist auch über FTP editierbar, da user1owner ist.

Nginx wird read Zugriff auf alle Benutzer und write Zugriff auf alle Uploads des Benutzers, da Benutzer nginx ein Mitglied jeder user1 ist, user2 ... Gruppen. Sie sollten nicht vergessen, es zu allen späteren Gruppen hinzuzufügen. Sie können auch das Skript useradd ändern, um dies automatisch zu tun.