2009-03-09 15 views

risposta

12

La prima riga modifica le autorizzazioni del file e la seconda modifica le autorizzazioni della directory nella directory attiva e nelle relative sottodirectory.

find . -type f -print0 | xargs -0 chmod 644 
find . -type d -print0 | xargs -0 chmod 755 
+0

semplice e diretto. Molto bene. –

+0

O almeno era prima del business '-print0' e' -0'. La gente lo consiglia sempre e so perché, ma mi infastidisce. –

+0

Fantastico, ha funzionato come un piacere. Mi hai salvato tempo e noia oltre le parole !! : P – Abs

15

C'è un'opzione X per quello.

chmod a+X * -R 

Questo darà bit di esecuzione solo alle directory, non ai file. Per impostare 644, 755, rispettivamente, con un solo comando, utilizzare:

chmod a=rX,u+w <files/dirs> -R 
+1

Impara qualcosa di nuovo ogni giorno. Utile! –

3

Usando nomi delle modalità simbolici invece dei permessi numerici prime:

chmod -R u=rwX,go=rX somedir 

La bandiera X permesso solo imposta directory o file già eseguibile come eseguibile , il flag -R significa "ricorsivo" e applica le autorizzazioni a tutti i contenuti dello somedir.

2

No, non è disponibile alcun comando per modificare in modo ricorsivo le autorizzazioni. Se ci fosse un tale comando, violerebbe il mantra Unix: fare una cosa e farlo bene.

Tuttavia, ci sono due comandi: uno per recursing (find), e uno per le autorizzazioni che cambiano (chmod).

Quindi, la riga di comando magico è:

find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' + 
+0

Sbagliato. E che ne dici di leggere prima altre risposte? – ypnos

+1

Cosa c'è che non va? Hai mai * provato * quel comando? Funziona su ogni singola macchina su cui ho lavorato, è conforme a POSIX, è conforme alla specifica Single Unix. A differenza di tutte le altre risposte che si basano su estensioni proprietarie non standard che non sono disponibili su molte piattaforme ... –

+1

... o non risolvono il problema indicato dall'OP. –

Problemi correlati