Como executar um aplicativo de inicialização automática como root?

2

Atualmente, estou usando um aplicativo de VPN que requer privilégios administrativos e adicionei o aplicativo ao meu início automático. No entanto, toda vez que eu fizer login, sempre serei solicitado a inserir minha senha para conceder as permissões a esse aplicativo, o que é muito redundante, pois usei a mesma senha para efetuar login.

Existe alguma maneira que eu possa ter esse aplicativo iniciado automaticamente sem precisar inserir minha senha? Eu já tentei fazer o comando autostart sudo airvpn , mas isso faz com que o aplicativo não abra de jeito nenhum.

Para esclarecer, não estou procurando executar um comando na inicialização, estou procurando executar um comando no login. Esta questão é relevante, no entanto, eu tentei adicionar exec airvpn a /etc/rc.local e nada acontece no login.

    
por Michael Smith 10.10.2017 / 17:51

1 resposta

2

Neste caso, você pode querer evitar o uso de sudo , já que ele só pode pedir sua senha do terminal, que você parece não estar usando. Em vez disso, você deve usar gksudo ou gksu . Ambos exigem que você digite sua senha por padrão, mas isso pode ser alterado (veja abaixo). Ou você pode usar o policykit para executar o programa como root usando pkexec airvpn . Isso também requer uma senha.

Se você não quiser digitar sua senha todas as vezes, aqui estão algumas dicas sobre como executar um programa como root sem digitar sua senha.

setuid

Se o executável airvpn for um arquivo binário (ao contrário de um arquivo de texto), você poderá usar o comando chmod para alterar as permissões do arquivo para ativar o modo setuid, o que significa que ele será executado sempre quem é dono (que deveria ser root). Isso não exigirá uma senha e não exigirá que você execute nenhuma das etapas abaixo. No entanto, será necessário que você navegue até o caminho onde o arquivo executável airvpn está localizado e execute chmod u+s airvpn como root. No entanto, esse truque não funciona com arquivos de texto (programas python, shell scripts, etc.). Além disso, se você atualizar esse arquivo, terá que fazer isso novamente. E novamente na próxima vez que você atualizar. E mais uma vez ...

Crie um arquivo de configuração sudo

BTW, sudo (e por extensão gksudo e gksu , que usam as mesmas configurações como sudo ) e policykit (que podem executar o programa como raiz usando pkexec ) podem ser programados para executar um programa sem a necessidade de digitar uma senha. IDK como fazer isso com o policykit, mas posso ensinar como conseguir isso com sudo . Antes de continuar, você deve ter um shell de root em execução caso algo dê errado (você pode perder sua capacidade de usar sudo , veja abaixo). Crie um arquivo de texto no diretório /etc/sudoers.d . Você pode chamá-lo como quiser, contanto que ele não tenha um caractere . e não termine com um caractere ~ .

Antes de continuar, devo avisar que você precisará conhecer o caminho para o executável airvpn . Se você digitar type airvpn em seu terminal, ele deverá informar onde esse arquivo está. Supondo que seja /usr/bin/airvpn , você pode digitar:

    %admin ALL = NOPASSWD:/usr/bin/airvpn

e salve-o no diretório /etc/sudoers.d . É provavelmente uma boa idéia usar o comando chmod para configurar as permissões de arquivo para 0440. Você pode fazer isso executando (como root) chmod 0440 file , substituindo "file" pelo nome do arquivo recém-criado.

Agora, abra um terminal novo e teste essa nova configuração executando gksudo airvpn . (O motivo pelo qual a palavra "novo" está em negrito é porque sudo / gksudo pode não pedir uma senha se você já executou um comando sudo / gksudo em um terminal existente, mesmo que você Na verdade, não configuramos sudo para evitar a solicitação de uma senha. Se você fosse capaz de fazer isso em um novo terminal, você conseguiu executar airvpn sem uma senha. Agora tudo o que você precisa fazer é alterar seu item de inicialização para executar gksu airvpn ou gksudo airvpn , e você estará pronto para ir. Isso funcionará independentemente de o arquivo executável ser um arquivo binário ou um arquivo de texto. Além disso, você só precisa fazer isso uma vez, independentemente de quantas vezes você atualizou este programa.

Oh não! Não funcionou, e agora o sudo me dá erros!

Se algo der errado, e você perder a capacidade de usar sudo / gksudo / gksu para executar qualquer coisa como root, você pode excluir o arquivo recém-criado e o sudo deve se comportar como antes. (Lembre-se quando eu aconselho você a manter um shell de root rodando? Você provavelmente precisará dele para deletar esse arquivo. É claro, você pode executar um shell de root rodando pkexec su , e então usar isso para deletar o arquivo). / p>     

por TSJNachos117 10.10.2017 / 19:16