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

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

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

Obrigado!

Responder1

Observe que o que se segue pode comprometer a segurança do seu sistema de várias maneiras.

Crie um script que se encarregue de eliminar esse seu processo (vamos chamá-lo de processo P). Em seguida, dê permissão a todos os usuários para executar este script em sudoers. Por fim, adicione uma chamada adequada para este script com sudo into /etc/bashrc.

Vamos, por exemplo, supor que você sabe que seu processo foi iniciado /usr/local/sbin/myproce que deseja eliminar todos esses processos imediatamente quando alguém fizer login, então você usará uma estratégia simples de grep e kill para eliminá-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 capture os sinais apropriados e, em geral, faça as coisas de maneira segura.

Em segundo lugar, dê permissão a todos os usuários para executar este script, /etc/sudoersadicionando 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 eliminar seus processos "secretos" ao fazer login.

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

Uma advertência: /etc/bashrc(ou /etc/profilenesse caso) obtenha fontes apenas para shells interativos. Isso significa que é bastante fácil para um usuário fazer ssh yourhost 'ps auxw' e encontrar seu processo na tabela de processos, ele não será eliminado com o mecanismo apresentado acima porque os arquivos de inicialização do shell não são consultados. Existe uma maneira de contornar isso, usando ForceCommand´sshd_config` mas isso fica como exercício para o leitor.

Para concluir, gostaria de lembrar novamente que há implicações óbvias de segurança nisso. Isso também parece muito com tentar fazer backdoor em um sistema ao qual você não tem acesso completo, mas isso não é realmente minha preocupação aqui (se você tiver que perguntar essas coisas ao superusuário, você será pego em breve, de qualquer maneira) .

Responder2

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

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

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

Ou

B) Você deseja que o processo perceba um usuário fazendo login e se mate?

Bem, isso é o que você faria.

informação relacionada