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


31

Quero alterar as permissões em uma árvore no Centos 4 para adicionar permissões de execução para todos os diretórios recursivamente a partir de um diretório. Se eu usar o chmod normal, outros arquivos além dos diretórios também serão modificados:

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

Como posso afetar apenas diretórios?

Respostas:


48

Executar findem -type d( diretórios ) com o -execprincipal para realizar a chmodapenas em pastas:

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

Para ter certeza de que apenas o executa nos objetos desejados, você pode executar apenas find /your/path/here -type dprimeiro; simplesmente imprimirá os diretórios que encontrar.


Você poderia explicar o que {} \; faz?
Srekel


17

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.

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

chmod -R o+X directory

Isso afetaria as permissões atuais de arquivos nos diretórios.
scriptmonster 29/07

@scriptmonster a linha citada está errada neste caso, mas chmod -R o+X directorydeve funcionar para o OP.
Daniel Beck

1
Para quem se pergunta sobre a diferença, como eu, é que o X também aplicará permissões de execução a qualquer arquivo que já tenha pelo menos um bit de permissão de execução definido (usuário, grupo ou outro). No caso geral, a resposta aceita é melhor.
ixe013

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

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

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.