Per dare il permesso di esecuzione (ricerca) alle directory, ma non ai file, usa:
chmod -R +X .
Per assegnare tutti i permessi come nel tuo esempio, usa:
chmod -R u=rwX,g=rX,o= .
-R
cambia file e directory in modo ricorsivo, mentre +X
imposta l'esecuzione/ricerca solo se il file è una directory o ha già il permesso di esecuzione per qualche utente. r
e w
sono ovviamente rispettivamente per la lettura e la scrittura.
Modalità X
(superiore x ) è documentato sia nella tradizionale pagina di manuale che nella documentazione informativa.
Dovrebbe funzionare anche su altri sistemi simili a Unix, ad es. FreeBSD, NetBSD o OpenBSD. Citando dalla pagina man di chmod(1) di The Open Group Base Specifications Issue 7, edizione 2018:
La X Il simbolo perm è stato adottato dai sistemi basati su BSD perché fornisce funzionalità comunemente desiderate durante l'esecuzione ricorsiva (-R opzione) modifiche. Una funzionalità simile non è fornita da find utilità. Versioni BSD storiche di chmod , tuttavia, supportava solo X con op +; è stato esteso in questo volume di POSIX.1-2017 perché è utile anche con op =. (È stato aggiunto anche per op - anche se duplica x , in questo caso, perché è intuitivo e più facile da spiegare.)
man 1 chmod
info '(coreutils)Conditional Executability'
Se vuoi farlo in modo ricorsivo, cioè , alle directory all'interno delle directory all'interno delle directory, il comando da utilizzare è:
find /path/to/starting/directory -type d -exec chmod +x {} \;
Questo individua tutte e solo le sottodirectory (-type d flag) della directory /path/to/starting/directory, quindi esegue la modifica richiesta del permesso di esecuzione per ciascuna di esse. Lo spazio prima di \; è obbligatorio.