Quale utente dovrebbe essere NGinx e PHP in esecuzione?


15

Le autorizzazioni sono qualcosa che mi ha confuso per un po 'con Linux. Quindi al momento entrambe le mie istanze NGinx e PHP-FPM sono in esecuzione con l'utente e il gruppo:

www-data

È questo standard? Ho dei problemi quando mi imbatto nel caricamento di file.

Esempio , un file verrebbe caricato sia con l'utente che con i dati www del gruppo. Ora, a causa di come ho impostato le autorizzazioni (0440) nella mia applicazione web, non riesco ad accedere tramite ssh con il mio account normale per scaricare quei file. Questo non può essere cambiato.

Stavo pensando di cambiare la mia istanza nginx e php per mantenere il gruppo, ma cambiarli per farli funzionare con il mio nome utente.

Qual è il modo corretto di gestire le autorizzazioni qui? Grazie.

Risposte:


12

Funziona così: quando accedi tramite FTP / SSH e carichi file, questi vengono creati con le tue autorizzazioni. Probabilmente il tuo webroot è scrivibile dal mondo (0777), che è insicuro - ogni utente nel sistema può scrivere qualcosa lì. PHP viene eseguito con privilegi utente diversi (sono specificati nella configurazione PHP-FPM, non nella configurazione nginx) e poiché la directory è scrivibile dal mondo, l'utente PHP (dati www) può anche scrivere lì. Ma il proprietario di questo file è www-data, non il tuo account. Sono 2 account distinti nel livello di autorizzazione del filesystem.

Ti consiglio di creare un utente dedicato con il minor numero possibile di privilegi, che possederebbe la directory webroot e sarebbe usato per il caricamento FTP / SSH E eseguirà php. Dovresti cambiare la configurazione di PHP-FPM, nella sezione worker ci sono voci utente e configurazione di NGINX, in modo da poter rendere i file del tuo sito web non leggibili dal mondo e più sicuri.

Non eseguire PHP con utenti privilegiati (funzioni sudo, privilegi di scrittura docroot esterni) che potrebbero compromettere la sicurezza del server.


1
Bella risposta, ho creato un nuovo utente, nuove cartelle, copiato tutto, applicato le autorizzazioni corrette e chroot l'utente. Funziona bene. Grazie.
The Pixel Developer

Potrei semplicemente aggiungere il mio utente FTP al www-datagruppo invece di creare l'utente dedicato? Risolve il problema di @ ThePixelDeveloper? Grazie.
Vladyslav Turak,

2

L' www-datautente e il gruppo sono abbastanza standard. Può essere www o web su altri sistemi, ma l'idea è la stessa: eseguire i servizi Web con un account dedicato. Pertanto, quando il tuo server web è compromesso, l'attaccante sarà in grado di accedere solo ai file concessi da questo account.

Se un utente deve gestire i servizi Web, è necessario aggiungere l'utente al gruppo pertinente (dati www) o consentirgli di eseguire il su (o il comando sudo) all'utente pertinente (sempre dati www).


10
Il motivo di www-data è che si tratta di un account con zero privilegi: non può scrivere su alcun file sull'intero file system, non leggere altro che file leggibili in tutto il mondo. In precedenza, per raggiungere questo obiettivo si utilizzava l'utente integrato "nobody". Tuttavia, creando "www-data" hai la possibilità di consentire a questo utente di scrivere su alcuni file, senza doverli rendere scrivibili in tutto il mondo (il che è male). Il principio di base, secondo cui i "dati www" sono privilegiati come "nessuno" in tutti gli altri modi, è vero.
thomasrutter,

@thomasrutter, da quanto ho capito, dovrei eseguire Nginx e PHP-FPM sotto l'utente www-data che si trova nel gruppo www-data. Se voglio questo utente sia in grado di reade writein una certa cartella, ho bisogno di lui do autorizzazioni appropriate. Nella maggior parte dei casi, si tratta della cartella principale Web /var/www/htmle 755dell'autorizzazione. Ho ragione? Grazie!
Vladyslav Turak,

1

Cerco di evitare che nginx / php esegua script di proprietà dei dati www per motivi di sicurezza.


9
lo approfondiresti?
Karussell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.