Como chmod os arquivos com base nos resultados do comando find

4

Eu tenho uma situação onde eu preciso encontrar os arquivos que possuem a permissão 666 do World Write (WW) e eu preciso mediar novamente esses arquivos com 664 .. para isso eu usei este comando

find /dir/stuct/path -perm -0002 -type f -print > /tmp/deepu/permissions.txt

quando eu executo o comando eu recebo os arquivos que possuem permissões WW. Agora, minha exigência é como

find /dir/stuct/path -perm -0002 -type f chmod 664

A minha sintaxe está correta?

    
por Dileep 07.04.2015 / 19:37

2 respostas

5

Pense na sua exigência por um momento. Você (possivelmente você) pode ter quaisquer arquivos executáveis (scripts ou binários) na sua árvore de diretórios? Em caso afirmativo, você deseja remover a permissão de execução (mesmo de si mesmo), ou você quer deixar a permissão de execução intocada? Se você quiser deixar a permissão de execução intocada, use chmod o-w para remover (subtrair) a permissão w somente do campo o thers.

Além disso, como Anthon aponta, o comando find dado na outra resposta executa o programa chmod uma vez para cada arquivo gravável do mundo que encontrar. É um pouco mais eficiente dizer

find  top-level_directory  -perm -2  -type f  -exec chmod o-w {} +

Isso executa chmod com muitos arquivos de uma vez, minimizando o número de executivos.

P.S. Você não precisa dos zeros à esquerda no 2 .

    
por 07.04.2015 / 20:15
3

find /dir/stuct/path -perm -0002 -type f -exec chmod 664 {} \;

O "{}" representa o arquivo encontrado por find. O "\;" termina o comando que precisa ser executado.

    
por 07.04.2015 / 19:55