"Programação é como sexo... um erro e você estará comprometido pelo resto de sua vida."
Michael Sinz
Menu
Principal
Artigos Geeks
JN - Jornal Nerd
Web Links
Arquivo
Alteração Seletiva de Permissões em Arquivos PDF Imprimir E-mail
Avaliação do Usuário: / 0
PiorMelhor 
Escrito por Helder Garcia   
Ter, 24 de Maio de 2011 22:51

Certo, hora do "go live". Temos que garantir que todos os arquivos estejam com as permissões corretas. Ocorre que para todos eles é a mesma máscara, por exemplo, 644. MAS... não podemos fazer um "chmod -R" porque os tais dos diretórios precisam de uma permissão diferente, que é 755. Droga, por pouco não é? Quem usa Joomla sabe de onde tirei esse exemplo. :)

Pois bem, seus "pobrema" acabaram. Com um comandinho simples, podemos alterar as permissões de todos os arquivos recursivamente a partir do ponto da árvore de diretório onde estamos. E SÓ dos arquivos, ou dos arquivos apenas, como queira.

Com outro comando, alteramos, também recursivamente, as permissões de todos os diretórios, sem tocar nas máscaras dos arquivos.

São eles!

Para os arquivos:

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

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 666. 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 666 dirA" e depois "chmod 666 dirB".

Se você tiver error de permissão, pode tentar do modo abaixo:

 

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

Com o sudo incluído, o xargs vai executar como root. É claro que o sistema irá pedir a senha pra 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

Let the hacking begin!

C ya

--

Helder Garcia

http://www.webify.com.br

https://www.investidorlegal.com.br

https://www.thecoder.org

 

Última atualizacao: Qua, 25 de Maio de 2011 07:16
 
 
Template by SEO-Templates