Aggreghiamo le notizie italiane sull'Open Source
Può capitare di avere una struttura con sottocartelle e file contenute in essi e dover impostare i permessi a tutti i file (o le cartelle) di un certo tipo. Facciamo un esempio: vogliamo impostare i permessi a 755 a tutte le immagini. L’errore più comune è quello di utilizzare chmod in modalità ricorsiva in questo modo:
chmod -R 755 *.jpg
Dopo aver lanciato questo comando vi accorgerete che sono cambiati solo i permessi dei file nella cartella principale e quelli nelle sottocartelle invece no.
Vediamo perché e come ottenere il risultato voluto.
Quando si filtra chmod con un nome di file (nel nostro caso *.jpg) lui fa il check con tutto ciò che incontro, sia file che cartelle. Ciò significa che, tranne nel caso in cui abbiate una cartella che finisce con .jpg, le sottocartelle non verranno analizzate (e quindi attraversate) perché non matchano il nome passato a chmod.
Per ottenere il comportamento voluto si può semplicemente togliere il filtro ma a questo punto cambieremmo i permessi a tutti i file/cartelle contenuti nella cartella principale:
chmod -R 755
L’altra soluzione, molto più fine, è quella di usare find in questo modo:
find . -type f -name ‘*.jpg’ -exec chmod 755 {} \;
Analizziamo i parametri:
Ecco fatto! Usatelo con attenzione…