#include <stdlib.h>
#include <unistd.h>
int main()
{
while(1)
fork();
}
Este é o código para uma bomba de garfo.
Em nossa faculdade, nos conectamos via telnet, ou seja, protocolo de atendimento ao cliente. Cerca de 100 sistemas estão conectados ao servidor. De repente, vimos o servidor ficando lento e depois de algum tempo ele travou. Eu soube que alguém implementou uma bomba de garfo.
Como podemos detectar em qual sistema a bomba está sendo implementada? E como podemos parar com isso?
Um método é limitar o número máximo de processos que um único usuário pode possuir. Existe algum método para pará-lo e saber de qual sistema foi implementado?
c
process
operating-systems
telnet
Rajesh M
fonte
fonte
Respostas:
Uma maneira é limitar o número de processos que um usuário pode executar.
Basta fazer login como root e editar este arquivo, para adicionar usuários e configurar seu limite.
Adicione esta linha ao arquivo
Agora, o usuário john pode criar apenas 10 processos.
fonte
/etc/security/limits.conf
entrem em vigor.Para parar uma bomba de garfo em execução, você pode usar
killall <name>
para matar todos os processos da bomba. No entanto, como uma bomba de garfo geralmente resulta em uma carga incrivelmente alta no sistema, talvez você não consiga fazer o SSH nela ou executá-la. Portanto, uma reinicialização pode ser necessária ou, pelo menos, muito mais rápida.Se todo usuário tiver sua própria conta no sistema, basta verificar o diretório pessoal de todos e procurar o executável. As chances são boas de que ele também tenha carregado o código-fonte, portanto, achar que não deve ser muito difícil. Se fosse uma conta compartilhada para todos os alunos, você não terá sorte. Especialmente após o término da sessão telnet ou ssh do usuário, você não tem chance de descobrir quem a iniciou.
No entanto, em vez de punir o usuário que detonou a bomba, você deve corrigir a configuração do sistema para desarmar as bombas. Você pode definir limites de processo por usuário usando
/etc/security/limits.conf
e, assim, impedir que uma bomba de garfo fique fora de controle - com, por exemplo, apenas 50 processos, uma bomba de garfo não causará muitos danos.fonte