Para aplicativos de linha de comando que não exigem GUI, basta colocar a chamada para eles em /etc/rc.local
, que já é executado como raiz, portanto, não precisa de sudo
. Abaixo está o exemplo do meu próprio /etc/rc.local
, que eu uso para iniciar dois scripts de monitoramento.
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/xieerqi/bin/batmon.sh &
/home/xieerqi/bin/sh/temperature.sh &
exit 0
Para aplicativos GUI, você precisaria ter uma abordagem diferente. Você precisaria abrir o aplicativo Startup Applications e adicionar o seguinte comando:
bash -c "sleep 10;gksu /usr/bin/my_vpn_program"
O que isto faz é dar à GUI tempo suficiente para iniciar, 10 segundos, depois abrir a caixa de diálogo de senha e se você inserir a senha corretamente, iniciará seu comando. Efetivamente este é um script mini-bash. Você pode usar pkexec
, e alguns podem até dizer que pkexec
é recomendado em vez de gksu
.
Como alternativa, se você não quiser inserir a senha todas as vezes, poderá permitir que o usuário execute esse comando específico com privilégios de root sem autenticação. Para isso você precisa editar o arquivo /etc/sudoers
. AVISO : recomenda-se usar sudo visudo
para editar o arquivo do terminal. Abaixo está um exemplo de como eu uso a mesma configuração com o comando pm-suspend
:
# Allow using pm-suspend for my user without password
xieerqi ALL = NOPASSWD: /usr/sbin/pm-suspend
Esta linha deve ser anexada ao final do arquivo /etc/sudoers
e salva. Note que você ainda precisa anexar sudo
ou gksu
ao início de cada comando que você configurou. Assim, você precisaria usar o mesmo comando bash
que mostrei anteriormente.