Execute comandos sudo sem executar o script inteiro com o sudo (usando um lançador de área de trabalho) [duplicado]

1

Meu script é algo assim:

#!/bin/bash
sudo teamviewer --daemon enable
teamviewer
sudo teamviewer --daemon disable

Ele funciona bem sozinho e solicita minha senha com uma janela de terminal. Então, agora eu quero fazer um lançador para isso. Eu tenho isso no meu arquivo .desktop :

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Categories=Network;
Name=TeamViewer 12
Comment=Remote control and meeting solution.
Exec=gksu /path/here/Start.sh
Icon=teamviewer

Dessa forma, ele solicita minha senha com um pop-up em vez de uma janela de terminal, mas isso executa o script inteiro com sudo, o que é um problema, porque o TeamViewer se recusa a iniciar com o sudo. Como posso resolver isso?

    
por POPCORNS 07.06.2017 / 20:56

1 resposta

3

Você pode alterar o script para:

#!/bin/bash

teamviewer --daemon enable

sudo -u USERNAME teamviewer

teamviewer --daemon disable

Dessa forma, você pode executar teamviewer como USERNAME enquanto ainda executa os outros como o usuário sudo, já que você está executando o script com gksu .

Se você quiser uma maneira fácil de testá-lo, execute o seguinte com gksu :

#!/bin/bash

echo "Without 'sudo' -->" ; whoami

echo "With 'sudo -u USERNAME' -->" ; sudo -u USERNAME whoami
    
por M. Becerra 07.06.2017 / 21:08