Posts Tagged ‘GNU/Linux’

PostHeaderIcon Criando um sistema de arquivos criptografado no GNU/Linux.

O aumento da capacidade de armazenamento dos meios de armazenamento (HDs, pen drives, cartões de memória, etc) e a redução drástica nos preços desses equipamentos mantém uma relação proporcional ao nível de dependência, cada vez maior, diga-se de passagem, que os usuários (e suas corporações) possuem com relação às informações preservadas nesses dispositivos. Hoje, pequenos pen drives possuem muito mais espaço de armazenamento do que servidores inteiros de alguns anos atrás. Discos com terabytes de capacidade podem ser adquiridos na maioria das lojas de informática a preços bem acessíveis. Some-se a isso o fato desses meios de armazenamento estarem menores e , portanto, “perambulando” em bolsas, bolsos, mochilas, pastas, dentre outros.

Essas facilidades, entretanto, aumentam em muito a possibilidade de se perder esses equipamentos ou mesmo tê-los furtados por outra pessoa. Ainda que sejam arquivos de natureza pessoal, tais como fotos, e-mails e outros documentos, a maioria das pessoas não gostaria de ver esses arquivos em mãos erradas, não é mesmo? Trocando o contexto para o meio corporativo, o comprometimento de informações pode inviabilizar projetos, negócios, estratégias e até a própria sobrevivência da instituição. Por outro lado, são poucas as pessoas e as instituições que têm implementados mecanismos que possam proteger as informações contra a perda ou o roubo dos meios de armazenamento. A grande maioria prefere sofrer com o arrependimento e com as lamentações quando perdem seus dados e os deixam expostos sem qualquer proteção para evitar que os mesmos sejam acessados (e explorados) livremente.

A boa notícia é que existem recursos muito simples para instalar e configurar alguns mecanismos e ferramentas para melhorar a confidencialidade de suas informações. Dentre os diversos recursos e ferramentas disponíveis, uma das mais eficazes são os sistemas de arquivos criptografados e, em ambientes GNU/Linux é algo simples de fazer. A seguir, compartilho uma das maneiras que costumo utilizar para criar, rapidamente, sistemas de arquivos criptografados. Vamos lá?

Read the rest of this entry »

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!

 

PostHeaderIcon Aproveitando melhor o seu histório de comandos de uma shell bash.

Nos últimos dias, navegando pela Internet, deparei-me com uma pequena mas interessante dica publicada no site da Linux Journal, sobre um pequeno e útil recurso para otimizar a utilização do histórico de comandos da shell bash, mais popular em distribuições GNU/Linux. Aproveitando a oportunidade, apenas comento, com minhas próprias palavras e em bom português o conteúdo dessa dica, acrescentando algumas outras informações.

Uma shell bash possui muitos recursos interessantes apesar de que muitos administradores não costumam utilizar nada além  do básico. Dentre esses recursos, um dos que podem ajudar bastante na produtividade e no dia-a-dia é o histórico que permite com que se consulte, recupere, corrija e execute novamente comandos utilizados em momentos anteriores. Esse recurso, entretanto, vai muito além de simplesmente utilizar as setas pra cima e pra baixo do teclado para rastreá-lo.

Read the rest of this entry »

PostHeaderIcon Problemas com webcam Syntek no Ubuntu 9.04.

Assim que adquiri meu laptop atual, um Asus F9S, fiquei algum tempo sem poder utilizar a webcam integrada. Estava começando a ministrar um treinamento de segurança de redes com mais de 120 horas e, como o dispositivo não funcionou imediatamente após a instalação do sistema operacional, o Ubuntu Linux 7.10 na época, acabei deixando pra depois. Passadas algumas semanas, descobri um driver, ainda em desenvolvimento, o stk11xx, que a fez funcionar perfeitamente.

Aqui está a identificação da webcam Syntek:

jansen@scadufax:~$ lsusb | grep Syntek
Bus 002 Device 003: ID 174f:6a33 Syntek Web Cam – Asus F3SA, F9J, F9S

Com o Ubuntu Linux 8.04 tudo passou a funcionar “out of the box, sem sequer necessitar da compilação do driver stk11xx. No Ubuntu Linux 8.10, uma nova surpresa: o dispositivo não funcionou após a instalação do sistema operacional. Entretanto, mesmo que essa situação fosse incômoda e representasse uma “volta no tempo”, a simples compilação do stk11xx foi suficiente para dar vida, novamente, à minha webcam.

Acabei de instalar o Ubuntu Linux 9.04, liberado no dia 23 de abril de 2009 e uma nova surpresa: o dispositivo não estava funcionando novamente logo após a instalação do sistema.

Read the rest of this entry »

PostHeaderIcon Criptografia rápida com o GPG.

Muitos sabem da importância de se utilizar dos recursos criptográficos para proteger informações críticas, entretanto, são poucos os que utilizam em suas rotinas diárias esses artifícios. Ferramentas (livres) existem muitas e um dos maiores exemplos é o próprio GPG (GNU’s PGP), presente, por padrão, na maioria das distribuições GNU/Linux.

Obviamente que, criptografia não se resume apenas a confidencialidade, que corresponde ao mecanismo de tornar restrito o acesso à alguma informação contida em um arquivo, por exemplo. Entretanto, esse é um dos seus serviços mais populares. Partindo de um exemplo muito simples e didático. Suponha que, em um arquivo texto, você guarde algumas senhas importantes para acesso a sistemas sobre sua administração. É mais do que prudente evitar que o conteúdo desse arquivo seja exposto facilmente e, nesse caso, confiar apenas nos recursos de controle de acesso do sistema de arquivo não é, certamente, uma prática muito segura.

Para essa finalidade é possível "criptografar" esse arquivo utilizando-se uma senha, simplesmente por meio do seguinte comando:

myhost$ gpg -c /home/user/passwords.txt

Em seguida, será solicitada uma senha e sua posterior confirmação. A proteção do conteúdo do seu arquivo será proporcional à complexidade da senha utilizada em seu processo de cifragem. Portanto, não escolha senhas fracas e fáceis de serem exploradas. O resultado da execução do comando anterior é a geração de um arquivo com mesmo nome daquele informado como parâmetro acrescido da extensão ".gpg". O arquivo original, a partir desse momento, pode ser descartado:

myhost$ rm /home/user/passwords.txt

Para obter o arquivo original novamente, deve-se "descriptografar" o conteúdo do arquivo /home/user/passwords.txt.gpg. Para isso, basta utilizar o seguinte comando:

myhost$ gpg -d /home/user/passwords.txt.gpg > /home/user/passwords.txt

Tão logo a senha utilizada no processo de cifragem seja inserida, o arquivo original será recuperado imediatamente. Esse mesmo recurso pode ser utilizado para "criptografar" arquivos de quaisquer formatos. Suficientemente simples para não deixar mais arquivos críticos desprotegidos em seu sistema de arquivos, não?

Vale lembrar que no exemplo apresentado utiliza-se criptografia simétrica, ou seja, tudo que é feito com uma chave (senha) é desfeito com a mesma chave. Portanto, é importante saber que se você esquecer a senha utilizada para criptografar um arquivo não será mais possível recuperar seu conteúdo.

O GPG tem muitos outros recursos interessantes, tais como a utilização de criptografia assimétrica, assinatura digital, dentre outros. Vale a pena conhecer!

PostHeaderIcon Outro aquário para seu GNU/Linux…

Dessa vez, a dica não é para o terminal de comandos, entretanto, a exemplo do Steam Locomotive e do Asciiquarium, é apenas mais um item para compor a lista de inutilidades para ambientes GNU/Linux. Nos raros tempos de folga, para descontrair, procurar por tais "futilidades linuxers" é, antes de tudo, uma mania quase que incontrolável e, também, uma forma de se divertir um pouco.

Seguindo a linha "aquática". a bola da vez é o xfishtank, que transforma seu background estático em um verdadeiro aquário em movimento, por onde transitam peixes dos mais variados estilos, tamanhos e formatos, cobras marinhas, arraias, além, é claro, dos temidos tubarões. O mais interessante dessa solução é a leveza proporcionada pelo mundo marinho ao seu ambiente de trabalho. Enquanto trabalha, você acompanha a vida marinha seguir seu curso natural!

 

Apesar de ser um aplicativo antigo e estar disponível nos repositórios default de muitas distribuições GNU/Linux, o xfishtank, entretanto, é pouco conhecido até mesmo para usuários GNU/Linux mais antigos. E, como não poderia ser diferente, sua instalação é bastante simples, principalmente em distros que possuem um bom gerenciador de pacotes. No Ubuntu, por exemplo, a instalação resume-se ao seguinte comando:

$ sudo apt-get install xfishtank

Read the rest of this entry »

PostHeaderIcon Um (ascii)aquário no seu terminal…

É uma prática que me acompanha há anos: aproveitar meu pouco tempo livre para procurar por "inutilidades engraçadas e divertidas". Fã confesso da linha de comandos e defensor do poder de um bom terminal como uma ferramenta poderosa para o dia-a-dia de qualquer administrador de sistemas Unix ou qualquer outro tipo de profissional que necessite interações mais avançadas com esse tipo de sistema operacional, dediquei parte desse período de decanso para, exatamente, encontrar "futilidades" voltadas o terminal que possui, frequentemente, fama de "carrancudo" e "pouco divertido".

Tema de um post recente aqui do meu site, o "sl" (Steam Locomotive) provê uma forma, no mínimo engraçada, para lidar com um dos erros mais comuns dentre aqueles que utilizam o terminal de comandos: trocar as letras do popular comando "ls" por "sl", foi. Nesse caso, ao invés de receber um frio "comando não encontrado" (ou "command not found" nos sistemas instalados em inglês), uma locomotiva em formato texto atravessa sua janela de comandos.

O período de busca ainda me permitiu conhecer o Asciiquarium, um verdadeiro aquário dinâmico que exibe a vida marinha em seu terminal. Peixes dos mais variados formatos e tamanhos, baleias e barcos fazem parte do cenário. E, como não poderia deixar de ser, regido pelas leis naturais, até o tubarão faz uma aparição repentina, devorando os peixes menores que encontra pela frente… De vez em quando, um barco a velas também passa pela superfície, alheio a toda a movimentação marinha submersa nos mares dos caracteres.

Quer instalar o Asciiquarium? Dá uma olhada no restante do post, então…

 

Read the rest of this entry »

PostHeaderIcon Cuidado com o “ls”!

Não é raro, principalmente para aqueles que tem certa habilidade com o teclado, digitar comandos no terminal de um sistema GNU/Linux trocando ou invertendo as letras. Atire a primeira pedra aquele que interage com o sistema do pinguim diariamente e nunca cometeu esse tipo de erro. Comandos com nome pequeno são as maiores vítimas desses enganos e nessa lista o "ls", seja pela frequência com que é utilizado, seja pelo seu nome composto de apenas duas letras, certamente disputa as primeiras colocações.

De tão comum é o engano em trocar o "ls" por "sl" que o último acabou se tornando um pacote de software de verdade somente para fazer com que algo diferente de um "command not found" apareça em seu terminal quando você cometer o engano de trocar as letras do comando "ls". Nesse caso, uma vez instalado o pacote "sl" (Steam Locomotive), todas as vezes que o clássico erro acontecer, uma locomotiva, desenhada apenas com caracteres, atravessa todo o seu terminal!

Em sistemas baseados no sistema de gerenciamento de pacotes APT (Debian GNU/Linux, Ubuntu Linux, etc), basta executar o seguinte comando (como super-usuário) para instalar o sl:

# apt-get -y install sl

Útil? Nem tanto. Ao menos é divertido…

PostHeaderIcon Reiniciando um servidor Linux a partir do diretório /proc – PARTE II

Já convencido de que o Magic SysRQ Key pode ser um "truque" importante no seu dia-a-dia de sysadmin GNU/Linux, o próximo passo é conhecê-lo um pouco melhor para poder utilizá-lo de maneira mais segura e eficiente.

Uma vez que esse recurso esteja habilitado em seu kernel, a primeira saída para reiniciar um sistema GNU/Linux que já não tenha à disposição comandos como o reboot, o shutdown ou o init, consiste em executar o seguinte comando:

root@scadufax:~# echo "b" > /proc/sysrq-trigger

Esse comando irá reiniciar o seu sistema imediatamente, sem qualquer preocupação com o sincronismo e a desmontagem dos sistemas de arquivos presentes em seus discos. Isso, evidentemente, pode provocar problemas e provocar algumas outras instalabilidades no seu sistema que, a essas alturas, já deve estar bastante "sacrificado". O que fazer, então?
Read the rest of this entry »

PostHeaderIcon Debian GNU/Linux e iPhone!

Recentemente, foi publicado no site da Linux Journal, o sucesso das iniciativas de executar Linux em iPhones. A própria matéria apresenta um vídeo mostrando o processo de inicialização do iPhone com um sistema GNU/Linux. Se por um lado, os resultados obtidos ainda não consigam prover funcionalidades completamente operacionais do equipamento para usuários finais, por outro, o fato de já ter sido possível iniciar o iPhone com uma distribuição Debian GNU/Linux usando o kernel 2.6 já representa avanções muito significativos. Mais informações sobre o projeto podem ser obtidas nesse blog.

Vale a pena acompanhar a evolução dessas iniciativas…