Como posso fazer um chmod recursivo apenas em diretórios?

29

Eu quero alterar as permissões em uma árvore no Centos 4 para adicionar permissões de execução para todos os diretórios de forma recursiva a partir de um diretório. Se eu usar o chmod normal, arquivos que não sejam diretórios também serão modificados:

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

Como posso afetar apenas diretórios?

    
por WilliamKF 28.07.2012 / 20:19

3 respostas

46

Execute find on -type d ( diretórios ) com o -exec primary para executar o chmod somente nas pastas:

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

Para ter certeza de que ele só é executado nos objetos desejados, você pode executar apenas find /your/path/here -type d first; ele simplesmente imprimirá os diretórios que encontrar.

    
por 28.07.2012 / 20:24
14

Veja Exemplos de linha de comando - chmod na Wikipedia.

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

Como adicionado por Daniel: isso deve funcionar no seu caso:

chmod -R o+X directory
    
por 28.07.2012 / 20:48
1
find /home/mydir -type d | xargs chmod ugo+rx

Isso funciona no CentOS6, que o find acima -exec não. Basicamente, apenas canaliza a lista de diretórios para o comando xargs que os envia para o chmod. O chmod então define a leitura e execução universal (pesquisa) nos diretórios. Para fazer isso para todos os usuários em uso doméstico, sudo:

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
    
por 27.08.2015 / 18:54

Tags