Come posso fare un chmod ricorsivo solo su directory?


31

Voglio cambiare i permessi su un albero su Centos 4 per aggiungere permessi di esecuzione per tutte le directory ricorsivamente da una directory. Se uso chmod normale, anche i file diversi dalle directory vengono modificati:

chmod -R o+x /my/path/here

Come posso influenzare solo le directory?

Risposte:


48

Esegui findsu -type d( directory ) con il -execprimario per eseguire il chmodsolo su cartelle:

find /your/path/here -type d -exec chmod o+x {} \;

Per essere sicuro che lo esegue solo sugli oggetti desiderati, puoi eseguirlo solo per find /your/path/here -type dprimo; stamperà semplicemente le directory che trova.


Potresti spiegare cosa {} \; lo fa?
Srekel,

2
@Srekel vedi questa risposta askubuntu.com/questions/339015/…
MADforFUNandHappy

17

Vedi Esempi da riga di comando - chmod in Wikipedia.

chmod -R a-x+X directory    remove the execute permission on all files in 
                            a directory tree, while allowing for directory browsing.

Come aggiunto da Daniel: questo dovrebbe funzionare nel tuo caso:

chmod -R o+X directory

Ciò influirebbe sulle autorizzazioni correnti dei file all'interno delle directory.
sceneggiatore

@scriptmonster la riga citata è errata per questo caso, ma chmod -R o+X directorydovrebbe funzionare per l'OP.
Daniel Beck

1
Per coloro che si chiedono la differenza, come me, è che X applicherà anche le autorizzazioni di esecuzione a qualsiasi file che abbia già almeno un bit di autorizzazione di esecuzione già impostato (utente, gruppo o altro). In generale, la risposta accettata è migliore.
ixe013,

1
find /home/mydir -type d | xargs chmod ugo+rx

Funziona su CentOS6, cosa che non trova -exec sopra. Fondamentalmente, invia semplicemente l'elenco delle directory al comando xargs che le invia a chmod. Il chmod quindi imposta la lettura e l'esecuzione universali (ricerca) nelle directory. Per fare questo per tutti gli utenti domestici usa sudo:

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.