Executar um script como root quando o usuário não root efetua login

0

Eu já vi essa pergunta antes aqui e aqui mas eles é muito velho e não consegui fazer nenhuma solução funcionar.

Basicamente, eu preciso executar um script ou comando automaticamente como root cada vez que um usuário SSH não root no servidor. O servidor está executando o Ubuntu 16.04 e usando o OpenSSH, se isso faz diferença.

EDITAR: Para ser mais específico, quero matar um processo que foi criado pelo usuário A quando o usuário B efetua login. Meus colegas de quarto e eu utilizamos criptografia no meu servidor de jogos sem cabeçalho e gostaríamos de poder executar pkill miner.sh automaticamente quando alguém efetua login, independentemente de quem iniciou. Uma vez que seria inseguro inseguro deixar os usuários matarem os processos uns dos outros, parece que isso é mais difícil do que o esperado.

    
por jamzsabb 18.08.2018 / 17:13

2 respostas

0

Resolveu isso adicionando todos os usuários a um grupo chamado mygroup

sudo groupadd mygroup
sudo usermod -aG mygroup user1
sudo usermod -aG mygroup user2

Em seguida, modificando /etc/sudoers para permitir que este grupo execute sudo pkill sem uma senha, adicionando o seguinte aos sudoers

%mygroup ALL=(ALL) NOPASSWD: /usr/bin/pkill

Depois, adicionei o comando sudo pkill na parte inferior de /etc/profile e funcionou bem.

    
por 19.09.2018 / 18:46
1

pam_exec apontou na direção certa, mas setuid é um mau conselho; a maioria (todos?) dos Linuxes modernos a ignoram em scripts shell e a respeitam apenas em arquivos executáveis binários.

Seria um problema se o script fosse executado (como root) em momentos diferentes do login? Se estiver tudo bem para ele rodar mais do que o estritamente necessário, você pode criar um script wrapper que é executado em cada login ssh com permissões de usuário que usa sudo (sem senha) para executar seu script como root. Isso, no entanto, significa que os usuários também podem executá-lo manualmente (como root) quantas vezes quiserem.

Para configurar isso, adicione esta linha ao /etc/pam.d/sshd

account optional pam_exec.so /etc/pam.d/LoginWrapper.sh

Em seguida, crie o arquivo /etc/pam.d/LoginWrapper.sh com o conteúdo:

#!/bin/bash if [[ $EUID -ne 0 ]]; then # Execute only when a user other than root logs in /usr/bin/sudo /path/to/your/root_script.sh fi

Note que se o seu sudo estiver em um caminho diferente, você deve atualizá-lo acima.

Agora, em / etc / sudoers, adicione a linha:

ALL ALL=(root) NOPASSWD: /path/to/your/root_script.sh

    
por 20.08.2018 / 16:48