Riepilogo aggiornato
La directory / var / www è di proprietà del root:root
che significa che nessuno può usarla ed è completamente inutile. Dal momento che tutti noi desideriamo un server web che funzioni davvero (e nessuno dovrebbe accedere come "root"), allora dobbiamo risolvere questo problema.
Solo due entità hanno bisogno di accesso.
PHP / Perl / Ruby / Python necessitano tutti dell'accesso alle cartelle e ai file poiché ne creano molti (ad es
/uploads/
.). Questi linguaggi di scripting dovrebbero essere eseguiti con nginx o apache (o anche con altre cose come FastCGI per PHP).Gli sviluppatori
Come ottengono l'accesso? So che qualcuno, da qualche parte, l' ha già fatto. Con comunque molti miliardi di siti web là fuori penseresti che ci sarebbero più informazioni su questo argomento.
So che 777 è pieno permesso di lettura / scrittura / esecuzione per il proprietario / gruppo / altro. Quindi questo non sembra essere necessario in quanto offre agli utenti casuali le autorizzazioni complete.
Quali autorizzazioni sono necessarie per utilizzare in /var/www
modo che:
- Controllo del codice sorgente come git o svn
- Utenti di un gruppo come "siti Web" ( o persino aggiunti a "dati www" )
- Server come apache o lighthttpd
- E PHP / Perl / Ruby
tutti possono leggere, creare ed eseguire file (e directory) lì?
Se ho ragione, gli script di Ruby e PHP non vengono "eseguiti" direttamente, ma passati a un interprete. Quindi non è necessario eseguire l'autorizzazione per i file in /var/www
...? Pertanto, sembra che l'autorizzazione corretta sarebbe quella chmod -R 1660
che renderebbe
- tutti i file condivisibili da queste quattro entità
- tutti i file non eseguibili per errore
- bloccare tutti gli altri dalla directory interamente
- impostare la modalità di autorizzazione su "sticky" per tutti i file futuri
È corretto?
Aggiornamento 1: ho appena capito che i file e le directory potrebbero aver bisogno di autorizzazioni diverse - Stavo parlando dei file sopra, quindi non sono sicuro di quali dovrebbero essere le autorizzazioni della directory.
Aggiornamento 2: la struttura delle cartelle /var/www
cambia drasticamente poiché una delle quattro entità sopra aggiunge sempre (e talvolta rimuove) cartelle e sottocartelle a molti livelli di profondità. Inoltre, creano e rimuovono i file a cui le altre 3 entità potrebbero aver bisogno di accesso in lettura / scrittura. Pertanto, le autorizzazioni devono eseguire le quattro operazioni sopra riportate sia per i file che per le directory. Dal momento che nessuno di loro dovrebbe aver bisogno di eseguire l'autorizzazione (vedi la domanda su ruby / php sopra), suppongo che l' rw-rw-r--
autorizzazione sarebbe tutto ciò che è necessario e completamente sicuro poiché queste quattro entità sono gestite da personale fidato (vedi # 2) e tutti gli altri utenti su il sistema ha solo accesso in lettura.
Aggiornamento 3: si tratta di macchine per lo sviluppo personale e server di società private. Nessun "cliente web" casuale come un host condiviso.
Aggiornamento 4: questo articolo di slicehost sembra essere il migliore per spiegare cosa è necessario per impostare le autorizzazioni per la cartella www. Tuttavia, non sono sicuro di quale utente o gruppo apache / nginx con PHP OR svn / git vengano eseguiti come e come modificarli.
Aggiornamento 5: ho (penso) finalmente trovato un modo per far funzionare tutto questo (risposta sotto). Tuttavia, non so se questo è il modo corretto e SICURO per farlo. Pertanto ho iniziato una taglia. Vince la persona che ha il metodo migliore per proteggere e gestire la directory www.