Come posso modificare in modo ricorsivo i permessi di file e directory?

58

Ho Ubuntu installato sul mio computer locale con apache / php / mysql.

Ora ho una directory in / var / www - all'interno della quale ho molti dei miei progetti in corso. Lavoro anche con opensource (drupal, magento, sugarcrm).

Il problema che sto affrontando sta cambiando il permesso di file con il terminale. A volte ho bisogno di cambiare il permesso di tutta la cartella e le sue successive sottocartelle e file. Devo cambiare individualmente usando

sudo chmod 777 foldername

Come posso farlo in modo ricorsivo.

Inoltre, perché devo sempre farlo 777 , ho provato 755 per le cartelle e 644 per i file, ma non lavoro.

    
posta Nikhil 16.03.2011 - 15:45

5 risposte

80

Basta aggiungere l'opzione -R per modificare in modo ricorsivo i permessi dei file. Un esempio, aggiunge ricorsivamente le autorizzazioni di lettura e scrittura per il proprietario e il gruppo su foldername :

chmod -R ug+rw foldername

Le autorizzazioni saranno come 664 o 775.

L'impostazione delle autorizzazioni per 777 è altamente sconsigliato . Ottieni errori in Apache o nel tuo editor in merito alle autorizzazioni perché Apache viene eseguito con un utente diverso ( www-data ) rispetto a te.

Se vuoi scrivere su /var/www , aggiungi te stesso al gruppo www-data e imposta le autorizzazioni umask + di conseguenza.

  • Aggiungi te stesso al gruppo www-data : sudo adduser $USER www-data
  • Modifica la proprietà dei file in /var/www : sudo chown -R www-data:www-data /var/www
  • Cambia umask, quindi i file appena creati da Apache concedono permessi di scrittura anche al gruppo. Aggiungi umask 007 a /etc/apache2/envvars .
  • Concedi permessi di scrittura (tecnicamente, il gruppo www-data ): sudo chmod -R g+w /var/www .
risposta data Lekensteyn 16.03.2011 - 16:06
20

bruteforce:

sudo find foldername -exec chmod a+rwx {} ";"

Che cosa non funziona? Sii più specifico!

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"
    
risposta data user unknown 16.03.2011 - 16:05
4

Non dovresti aver bisogno di 777 per niente. Nel peggiore dei casi, dovrai cambiare il proprietario di determinati file e directory per l'utente "www-data".

sudo find /var/www -type d -print0 | xargs -0 chmod 755
sudo find /var/www -type f -print0 | xargs -0 chmod 644
sudo find /var/www/some/subset -print0 | xargs -0 chown www-data:www-data

Se stai utilizzando il metodo di appartenenza al gruppo di Lekensteyn, modifica rispettivamente da 755 a 775 e da 644 a 664 sopra, quindi imponi la viscosità del gruppo:

sudo find /var/www/some/subset -type d -print0 | xargs -0 chmod g+s
    
risposta data Kees Cook 17.03.2011 - 08:02
3

È possibile modificare sottocartelle e file su Nautilus. Come puoi vedere sull'immagine qui sotto. Per avere i permessi sui pulsanti, puoi abilitare l'opzione su Ubuntu Tweak.

    
risposta data Alfredo Hernández 16.03.2011 - 16:12
0

Se vuoi che tutti i tuoi file siano leggibili nel mondo (cioè è solo un insieme statico di file / immagini HTML), usa questo comando:

chmod -R a+r <base directory>

Questo ricorsivamente passerà attraverso tutti i file e amp; sottodirectory e aggiungere il permesso di lettura a loro.

ATTENZIONE : non farlo per il codice che viene eseguito! Solo i file che dovrebbero essere visibili da tutti.

    
risposta data Ryan Shillington 26.01.2015 - 18:46

Leggi altre domande sui tag