Alteração Seletiva de Permissões em Arquivos

May 25th, 2011

Category: Linux

Tagged with: , , , , ,

Este artigo mostra como, de forma simples, é possível fazer uma alteração em massa nas permissões de arquivos e diretórios, uma tarefa que se torna relativamete comum para administradores de sistemas linux/unix.

Eventualmente precisamos configurar as permissões de toda uma árvore de diretórios e arquivos. É claro que fazer isso um a um é impraticável. Podemos lançar mãos de utilitários do sistema para esta tarefa, e alterar as permissões de todos os arquivos recursivamente a partir do ponto da árvore de diretório onde estamos. Com outro comando, alteramos, também recursivamente, as permissões de todos os diretórios, sem tocar nas máscaras dos arquivos.

Vamos lá. Para os arquivos o comando é:

find . -type f -print | xargs -n 1 chmod 644

O find é o comando que procura objetos do tipo especificado no parâmetro -type f, ou seja, “f” de file, que é arquivo em Inglês. Esse comando retorna os nomes dos objetos, pois é instruído para isso com o parâmetro -print. Mas, ao invés de ir para a tela, o uso do pipe (|) direciona essa saída para outro comando, o xargs.

O xargs é muito legal. Ele pega o que recebe do pipe e transforma em argumento para outro comando, que é especificado a seguir, o chmod. Esse último é que realmente altera a permissão do arquivo para 644. O -n 1 do xargs diz para ele executar o seu comando (chmod) para cada entrada recebida do pipe. Se for maior que 1, ele “enfileira” vários nomes de objetos e os passa de uma vez para o comando, como se fossem vários argumentos.

Vamos ver na vera. Digamos que o find ache o diretório chamado dirA e dirB. Então ele passa isso pro xargs que, pra cada um deles, executa o chmod. Assim, desse jeito: “chmod 644 dirA” e depois “chmod 644 dirB”.

Se você tiver erro de autorização para execução do comando, pode tentar do modo abaixo:

find . -type f -print | sudo xargs -n 1 chmod 644

Com o sudo incluído, o xargs vai executar como root. É claro que o sistema irá pedir a senha para isso.

Agora, para fazer a alteração de permissões dos diretórios, usamos uma variação da mesma linha de comandos. Alteramos apenas o tipo de objeto que o find deve procurar, para -type d. Você já deve ter adivinhado que d é de directory.

find . -type d -print | xargs -n 1 chmod 755

Vale também pra eles a variação com o sudo:

find . -type d -print | sudo xargs -n 1 chmod 755

C ya

Helder Garcia
http://www.webify.com.br
https://www.thecoder.org

No comments yet


Leave a Reply

Your email address will not be published. Required fields are marked *