2014-11-11 23 views
6

Quando si creano pool per utente php5-fpm su un'installazione mod_fastcgi di Apache, quale dei seguenti è il modo più sicuro e un modo efficiente di concedere le autorizzazioni del server Web al pool PHP?Creazione di pool per utente php5-fpm in modo sicuro

Opzione 1:

Impostare il gruppo a www-data:

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

user = username 
group = www-data 

Anche se questo funziona file creati da PHP avrebbe il set di proprietà al nome utente: www-data mentre i file caricati tramite SCP avere nome utente: nome utente.


Opzione 2:

Aggiungere www-data al gruppo supplementare username:

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

user = username 
group = username 

-

usermod -aG username www-data 

Quale di queste opzioni sono sicuri? Puoi anche condividere un metodo migliore.

Ho controllato le seguenti guide:

Ma erano tutti scritti prima bug #67060 è stato scoperto e risolto.

risposta

0

Sto usando la seguente installazione sul mio LEMP (Nginx + PHP-FPM). Anche per Apache dovrebbe essere applicabile.

PHP-FPM gestisce diverse piscine come nobody:user1, nobody:user2 ...

Nginx viene eseguito come nginx:nginx

utente nginx è un membro di ogni user1, user2 .. gruppi:

# usermod -a -G user5 nginx 

Permessi file:

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) Dir utente domestico non ha autorizzazione per other, quindi il pool php-fpm in esecuzione come nobody:user2 non avrà accesso a /home/user1 e viceversa.

(2) lo script php non ha w per group, quindi non può creare file in htdocs.

(3) Nella directory uploads dir dovremmo abilitare manualmente l'accesso in scrittura per il gruppo user1, per consentire allo script php di inserire i file.Non dimenticate di disabilitare gestore php per uploads, in nginx questo è fatto da

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

ma per Apache si dovrebbe verificare.

(4) file caricati dovrebbero anche avere w per group se vogliamo user1 essere in grado di modificare questi file in seguito via ftp o ssh (accedendo come user1:user1). Il codice Php è modificabile anche via ftp dal user1 è il suo owner.

Nginx avrà read l'accesso a tutti gli utenti e write accesso a caricamenti di tutto l'utente in quanto utente nginx è un membro di ogni user1, user2, ... gruppi. Non dovresti dimenticare di aggiungerlo a tutti i gruppi successivi. È anche possibile modificare lo script useradd per farlo automaticamente.

Problemi correlati