chmod
può effettivamente farlo da solo; il X
autorizzazione simbolica significa "esegui, se ha senso" che generalmente significa sulle directory ma non sui file. Quindi, puoi usare:
chmod -R u=rwX,go=rX /path/to/htdocs
L'unico potenziale problema è che se qualcuno dei file semplici ha già set di esecuzione, chmod
presuppone che sia intenzionale e lo mantiene. Se questo è un potenziale problema e hai la versione GNU di chmod
(cioè sei su Linux), puoi far sì che rimuova qualsiasi autorizzazione di esecuzione vagante come questa:
chmod -R a-x,u=rwX,go=rX /path/to/htdocs
Sfortunatamente, questo trucco non funziona con la versione bsd (/macOS) di chmod
(Non sono sicuro di altre versioni). Questo perché la versione bsd applica il X
autorizzazione basata sulla "modalità originale (non modificata)", ovvero se aveva bit di esecuzione prima il a-x
la modifica è stata eseguita (vedi il man
pagina).
Usa find
per cercare directory e applicare chmod su di esse:
find -type d | xargs chmod 775
Usa il tipo f
per file:
find -type f | xargs chmod 775
Usa -type
di find opzione per limitare le azioni a file e directory. Usa il -o
opzione per specificare azioni alternative per tipi diversi, quindi devi solo eseguire find
una volta, piuttosto che separatamente per ogni tipo.
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +