Existe uma maneira de criar um processo que possa ser eliminado por qualquer pessoa no Linux?

0

Por exemplo, gostaria de começar a executar um processo em segundo plano SECRETAMENTE em um servidor Ubuntu, mas sempre que alguém, exceto eu, faz login no servidor, o processo deve ser eliminado por esse usuário. É possível criar um processo como esse? (Eu tenho a conta sudo e posso modificar /etc/bash.bashrc )

Obrigado!

    
por Firegun 06.12.2013 / 12:28

2 respostas

1

Por favor, note que o que se segue pode comprometer a segurança do seu sistema de várias maneiras.

Crie um script que cuide de matar o seu processo (vamos chamar de processo P). Em seguida, conceda a todos os usuários permissão para executar esse script em sudoers. Por fim, adicione uma chamada adequada para este script com sudo em /etc/bashrc .

Vamos supor que você saiba que seu processo foi iniciado a partir de /usr/local/sbin/myproc e que você quer matar todos aqueles processos imediatamente que alguém efetua login, assim você usará uma estratégia grep e kill simples para matá-los .

Então, primeiro coloque o seguinte em /usr/local/sbin/killmyprocs :

#!/bin/sh

ps auxw|grep [m]yproc|awk '{ print $2 }'|xargs kill -TERM > /dev/null 2>&1

# end of file.

Você provavelmente desejará algo um pouco mais sofisticado se realmente prosseguir e implementar isso. Portanto, certifique-se de criar um script que retenha os sinais apropriados e, em geral, faça as coisas de maneira segura.

Segundo, conceda a todos os usuários permissão para executar este script em /etc/sudoers adicionando a ele:

ALL ALL = (root) NOPASSWD: /usr/local/sbin/killmyprocs

A terceira e última etapa é adicionar uma chamada sudo ao seu script em /etc/bashrc :

[ "'id -n -u'" != "<my_username>" ] && sudo /usr/local/sbin/killmyprocs

Substitua por sua própria conta para evitar a eliminação de processos "secretos" ao fazer o login.

Para resumir: 1) crie um script que não produza saída, mas elimine os processos que você quer matar, 2) adicione a entrada apropriada a /etc/sudoers para cada usuário em seu sistema para poder executar esse script como root, 3) adicione uma chamada ao seu script via sudo para /etc/bashrc (ou /etc/profile ).

Uma ressalva: /etc/bashrc (ou /etc/profile para esse assunto) é originado somente para shells interativos. Isto significa que é muito fácil para um usuário fazer o comando ssh yourhost 'ps auxw' e encontrar o seu processo a partir da tabela de processos, ele não será eliminado com o mecanismo introduzido acima porque os arquivos de inicialização do shell não são consultados. Existe uma maneira de contornar isso, usando ForceCommand em ´sshd_config ', mas isso é deixado como um exercício para o leitor.

Para concluir, gostaria de lembrar novamente que há implicações óbvias de segurança com isso. Isso também soa muito como tentar backdoor de um sistema que você não tem acesso completo, mas que não é realmente minha preocupação aqui (se você tiver que perguntar essas coisas no Super User, você será pego logo de qualquer maneira) .

    
por 07.12.2013 / 16:20
1

Como você quer dizer "o processo deve ser eliminado por esse usuário"?

A) Você quer que o usuário mate seu processo que ele não possui?

Crie um script para matar o processo e, em seguida, defina setuid com chmod u+s (isso pode ser uma grande falha de segurança, a menos que você saiba o que está fazendo.)

Ou

B) Você quer que o processo perceba um usuário se logando e se matando?

Bem, isso é o que você faria.

    
por 04.03.2014 / 07:23