Archive for novembro, 2009

PostHeaderIcon Revista PC&CIA disponibiliza, gratuitamente, edição 88 em seu site.

A Revista PC&CIA está disponibilizando em seu site, de maneira completamente gratuita, o download da edição no. 88. O arquivo traz parte do conteúdo da revista e dois artigos completos, além das colunas e notícias.

Especialmente nessa edição, tratei, na Coluna Segurança High-Tech, da associação inevitável que existe entre os acontecimentos do mundo real e a vida dos administradores de sistemas e profissionais da área de segurança da informação. É uma continuação do texto "Michael Jackson e a Internet", publicado aqui em meu site.

PostHeaderIcon O desafio: “chmod 000 /bin/chmod”. E agora? O que fazer?

Recentemente, postei em minha página no Twitter o desafio de como resolver o seguinte problema:

"chmod 000 /bin/chmod"

Com esse comando, você está utilizando o chmod, responsável por mudar as permissões de um arquivo, para retirar todas as permissões do próprio comando chmod. Feito isso, ninguém, nem o administrador de sistemas, estará apto a alterar as permissões dos arquivos do sistema utilizando o próprio comando chmod. Diante disso, o que fazer para resolver o problema?

Bem, uma das saidas, utilizando apenas recursos dos comandos do próprio sistema operacional e propriedades dos sistemas de arquivos, consiste em utilizar as permissões de um outro arquivo que tenha o modo de execução habilitado substituindo seu conteúdo pelo do próprio comando chmod. Não entendeu? Então, permita-me explicar um pouco melhor.

Em um sistema de arquivo como o EXT2/EXT3 (e agora o EXT4), por exemplo, os metadados de um arquivo ficam em um local separado do seu conteúdo. Dentre esses metadados estão informações como a data da última modificação, o dono e o grupo do arquivo, seu tamanho e as próprias permissões atribuídas a ele. Em outras palavras, ao substituir o conteúdo de um arquivo, não se altera os atributos tais como as permissões.

Retomando o cenário após a execução do comando "chmod 000 /bin/chmod", o que nos restará é o comando /bin/chmod com essas características:

root@scadufax:~# ls -l /bin/chmod
———- 1 root root 46664 2008-06-26 21:31 /bin/chmod

Como foi dito anteriormente, utilizando o chmod, não é possível, mesmo para o super-usuário, alterar permissões de outros arquivos:

root@scadufax:~# chmod 000 /bin/cp
-su: /bin/chmod: Permission denied

Para resolver o problema, é possível aproveitar as permissões de um arquivo que já tenha privilégio de execução e depois substituir o seu conteúdo pelo o do comando chmod. Para isso, basta pegar qualquer comando do diretório /bin e copiá-lo para um diretório qualquer:

root@scadufax:~# cp -p /bin/cp /tmp
root@scadufax:~# ls -l /tmp/cp
-rwxr-xr-x 1 root root 75492 2009-11-01 09:37 /tmp/cp

Observe que as permissões de execução encontram-se configuradas. Depois, deve-se substituir o conteúdo desse arquivo pelo do comando chmod que não possui quaisquer permissões e copiá-lo novamente para o diretório /bin renomeando-o para chmod novamente:

root@scadufax:~# cat /bin/chmod > /tmp/cp
root@scadufax:~# mv /tmp/cp /bin/chmod
root@scadufax:~# ls -l /bin/chmod
-rwxr-xr-x 1 root root 46664 2009-11-01 09:42 /bin/chmod

Pronto… era isso! Antes de você se perguntar o porquê de tudo isso, eu me adianto: pra NADA a não ser se divertir um pouco e conhecer algo a mais  dos sistemas GNU/Linux e de suas características!

Inicialmente, postei essa questão no Twitter e, pelo menos dois amigos postaram outras soluções. Vou pedir a ambos que postem essas soluções aqui. Se você tiver outras alternativas, registre-as por aqui!