exec sudo e / ou enviar sinal para criança

4

Eu gostaria de executar um aplicativo (gnutls-cli) como outro usuário e enviar um sinal para ele (SIGALRM). Infelizmente isso não funciona:

sudo -u myuser gnutls-cli -p smtp imap.gmail.com --starttls &
sudo -u myuser kill -ALRM $!

O gnutls-cli é um filho do processo sudo, ou seja, eu tenho a seguinte árvore de processos:

\_ sudo -u myuser gnutls-cli -p smtp imap.gmail.com --starttls
    \_ gnutls-cli -p smtp imap.gmail.com --starttls

isto significa que o sinal é enviado para o processo sudo externo. Obviamente, isso não funciona de todo.

Existe alguma maneira de obter o sudo para executar o subprocesso diretamente ou encaminhar sinais para o seu filho?

Obrigado

    
por TheSudoMan 09.06.2011 / 18:37

1 resposta

2

Uma rápida olhada nas man pages do sudo e do sudoers não revela nada óbvio para resolver este problema, mas posso oferecer uma solução alternativa?

Enrole o programa original em um script que salvará o spidned pid # em um pidfile, que você pode consultar posteriormente. Por exemplo:

/home/meusuário/scripts/gnutls-cli-wrapper.sh:

gnutls-cli $@ &
echo $! > /home/myuser/var/gnutls-cli.pid

Então, do sudo você pode rodar:

sudo -u myuser /home/myuser/scripts/gnutls-cli-wrapper.sh -p smtp imap.gmail.com --starttls &

Então, mais tarde:

sudo -u myuser kill -ALRM $(cat /home/myuser/var/gnutls-cli.pid)

Espero que você ache isso útil.

    
por 09.06.2011 / 18:50

Tags