Um amigo meu chegou no MSN e me disse para escrever este comando:
: (){ : | : & };: Pode não ter cara de comando, mas tenham certeza de que é sim! Eu não sou burro e então não tentei no meu Ubuntu, mas sim numa máquina virtual. O que houve? O sistema travou. Bom, pode não ser mais perigoso que o
rm -rf /, mas é uma grande sacanagem.
Segundo um cara do
LinuxHard.org, o comando funciona assim:
Funciona assim, primeiro é declarada a função : (dois pontos)
As funções são declaradas da seguinte forma:
nome_da_função(){ comandos };
No caso o nome da função é : (dois pontos)
Os comandos são:
: | :&
ou seja, chama a própria função executando-a simultaneamente com ela própria via | (pipe), o & (e comercial) faz com que estes comandos sejam executados em segundo plano.
O : (dois pontos) no final do comando da morte chama a função depois de declará-la.
Resumindo este comando gera uma função que chama ela própria duas vezes, infinitas vezes, gerando um loop.
Espero que dê para entender o conceito.
Mas, como se prevenir contra esse comando do maaal?
1- O primeiro modo e mais simples é digitandoecho 'alias :="echo 1"' >>/etc/profile
Com isso o comando da morte já não irá mais funcionar, entretanto esta não é a solução ideal, apesar de ser o mais simples no caso de você não ter o pam. (Existem formas de encontrar brechas nessa solução, como o usuário criar uma nova alias, então só os outros modos são 100% garantidos)
2- O segundo modo é limitando um grupo de usuários quanto o número de processos (no caso mostro como limitar o grupo estudantes):echo '@estudantes hard nproc 600' >>/etc/security/limits.conf
(Ou Edite o arquivo /etc/security/limits.conf)
-Não se esqueça de criar um grupo estudantes, em /etc/group e de colocar na frente dele o nome dos usuários em que se aplicara a permissão.
3- O terceiro modo é limitando todos os usuários quanto ao número de processos:echo '* hard nproc 1000' >>/etc/security/limits.conf
Pronto! Nunca mais os usuários do SSH vão poder fazer essa brincadeira ! =[ Que pena.
Créditos da solução: Luciano Andress Martini em:
http://linuxhard.org/site/archives/1156#more-1156