permessi www-data?


108

Quindi ho una directory in / var / www (chiamata cake) e devo consentire a www-data di scriverci, ma voglio anche scriverci (senza dover usare sudo). Ho paura di modificare le autorizzazioni in 777 nel caso in cui qualche altro utente sulla mia macchina (o un hacker) tenti di modificare i file in quella directory. Come posso consentire l'accesso solo a me stesso e ai dati www di Apache?

Risposte:


168
sudo chown -R yourname:www-data cake

poi

sudo chmod -R g+s cake

Il primo comando cambia proprietario e gruppo.

Il secondo comando aggiunge l'attributo s che manterrà nuovi file e directory all'interno della torta con gli stessi permessi di gruppo.


3
Perché chmod g + s è ricorsivo?
Ben Rogmans

non sapevo di g + s. molto molto utile!
FRAGA

1
cosa può fare l'utente con i file creati da www-data nella torta stessa e i file creati da www-data in una directory creata da www-data? ad esempio, sulle operazioni di modifica, rinomina, eliminazione? da quanto ho capito, la ridenominazione e l'eliminazione non sono possibili all'interno della directory creata da www-data e la modifica dei file creati da www-data non è affatto possibile per l'utente.
qdinar

49

Come affermato in un articolo di Slicehost :

Configurazione dell'utente

Quindi iniziamo aggiungendo l'utente principale al gruppo utenti di Apache:

sudo usermod -a -G www-data demo

Ciò aggiunge l'utente "demo" al gruppo "www-data". Assicurati di utilizzare entrambe le opzioni -a e -G con il comando usermod mostrato sopra.

Sarà necessario disconnettersi e accedere nuovamente per abilitare il cambio di gruppo.

Controlla i gruppi ora:

groups
...
# demo www-data

Quindi ora sono un membro di due gruppi: il mio (demo) e il gruppo Apache (www-data).

Configurazione della cartella

Ora dobbiamo assicurarci che la cartella public_html sia di proprietà dell'utente principale (demo) e faccia parte del gruppo Apache (www-data).

Impostiamolo:

sudo chgrp -R www-data /home/demo/public_html

Dato che parliamo di permessi, aggiungerò una breve nota riguardo al comando sudo: è una buona abitudine usare percorsi assoluti (/ home / demo / public_html) come mostrato sopra piuttosto che percorsi relativi (~ / public_html). Assicura che sudo venga utilizzato nella posizione corretta.

Se hai una cartella public_html con collegamenti simbolici, fai attenzione a quel comando poiché seguirà i collegamenti simbolici. In quei casi di una cartella public_html funzionante, cambia ogni cartella manualmente.

setgid

Bene fino ad ora, ma ricorda che il comando che abbiamo appena dato ha effetto solo sulle cartelle esistenti. Che ne dici di qualcosa di nuovo?

Possiamo impostare la proprietà in modo che tutte le novità siano anche nel gruppo "www-data".

Il primo comando cambierà i permessi per la directory public_html per includere il bit "setgid":

sudo chmod 2750 /home/demo/public_html

Ciò garantirà che a tutti i nuovi file venga assegnato il gruppo "www-data". Se hai sottodirectory, ti consigliamo di eseguire quel comando per ogni sottodirectory (questo tipo di autorizzazione non funziona con '-R'). Fortunatamente verranno create nuove sottodirectory con il bit "setgid" impostato automaticamente.

Se è necessario consentire l'accesso in scrittura ad Apache, ad esempio a una directory di caricamento, impostare le autorizzazioni per quella directory in questo modo:

sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads

Le autorizzazioni devono essere impostate solo una volta poiché ai nuovi file verrà automaticamente assegnata la corretta proprietà.


Questa soluzione funziona per me. Prima di ciò, eseguo sempre il server dal terminale utilizzando l'utente root. Con questa soluzione, posso caricare file nella directory che ha l'autorizzazione 770. Questo è fantastico, perché prima posso caricare file solo utilizzando l'autorizzazione 777.
Ifan Iqbal
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.