Sto lavorando su Come servire le applicazioni Django con uWSGI e Nginx su Ubuntu 16.04 . Alla fine del "Crea un file di unità systemd per uWSGI" nell'articolo discutono l' www-datautente. Cos'è questo e perché è importante?
Sto lavorando su Come servire le applicazioni Django con uWSGI e Nginx su Ubuntu 16.04 . Alla fine del "Crea un file di unità systemd per uWSGI" nell'articolo discutono l' www-datautente. Cos'è questo e perché è importante?
Risposte:
Per sicurezza.
I file non sono scrivibili dal mondo. Sono limitati al proprietario dei file per la scrittura.
Il server Web deve essere eseguito con un utente specifico. Quell'utente deve esistere.
Se fosse eseguito sotto root, tutti i file dovrebbero essere accessibili da root e l'utente dovrebbe essere root per accedere ai file. Poiché root è il proprietario, un server Web compromesso avrebbe accesso all'intero sistema. Specificando un ID specifico, un server Web compromesso avrebbe accesso completo ai suoi file e non all'intero server.
Se decidi di eseguirlo con un ID utente diverso, quell'utente dovrebbe essere il proprietario effettivo dei file per i privilegi adeguati. Potrebbe essere confuso avere la proprietà personale di file a livello di sistema sul tuo account personale.
La creazione di un utente specifico faciliterebbe il riconoscimento dei file e la coerenza nel riconoscere l'ID chownper i nuovi file e cartelle aggiunti al sito.
L' ID utente o il nome del proprietario non ha importanza. Qualunque cosa venga scelta o decisa, dovrà essere configurata nei file di configurazione del server web.
Per impostazione predefinita, la configurazione del proprietario è www-datanella configurazione Ubuntu di Apache2. Poiché questa è la configurazione predefinita, conosci comodamente la proprietà necessaria per i tuoi file web. Se lo cambi, dovresti cambiare i file nel tuo sito in modo che corrispondano.
Non eseguo Nginx , ma dal momento che si trova nel repository Ubuntu, sono sicuro che è stato testato con la www-dataconfigurazione come predefinita.
www-data. Ecco perché, come nella tua domanda, ti hanno chiesto di creare userID e groupID se non esiste. L'installazione di Apache2 crea automaticamente l'utente. Non sono sicuro di Nqinx . È possibile controllare per vedere se esiste con: iid -u www-data&&id -g www-data. Se esiste, ti mostrerà il numero ID dell'utente e del gruppo. Di default su Ubuntu sono i numeri utente e gruppo 33.
www-datacome proprietario può anche essere un rischio per la sicurezza, come indicato nella base-passwddocumentazione (vedere la risposta di @ muru), poiché i proprietari in genere hanno accesso in lettura / scrittura a tutto il contenuto del servizio web. È possibile rimuovere l'accesso in scrittura al www-dataproprietario o utilizzare un altro proprietario. www-dataha sicuramente bisogno dell'accesso in lettura a tutti i dati da fornire, ma se si danno solo le autorizzazioni necessarie per ciascun file e directory, e non di più, si sarà più sicuri.
www-dataè l'utente che i server Web su Ubuntu (Apache, nginx, ad esempio) usano per impostazione predefinita per il normale funzionamento. Il processo del server Web può accedere a qualsiasi file a cui www-datapuò accedere. Non ha altra importanza.
Dalla base-passwddocumentazione ( /usr/share/doc/base-passwd/users-and-groups.txt.gz):
Alcuni server Web funzionano come dati www. Il contenuto Web non deve essere di proprietà di questo utente o un server Web compromesso sarebbe in grado di riscrivere un sito Web. I dati scritti dai server Web saranno di proprietà di www-data.
base-passwddocumenti per quello
www-dataè l'utente (e anche il gruppo) con cui il servizio httpd (apache) agisce sul proprio sistema.