Equivalentes de Autoexec.bat para o Ubuntu que são executados com os privelidges de raiz?

5

No Ubuntu deve haver vários equivalentes " autoexec.bat ", como posso ver arquivos como rc.local , que parecem fazer muito pouco, porque os comentários no arquivo dizem que ele não funciona por padrão e eu tentei colocar esse comando lá e não funcionou.

O que eu preciso saber é onde eu coloco esta linha.

echo 0 | /usr/bin/tee -a /sys/class/leds/smc::kbd_backlight/brightness

Eu também vi um rc.local em /etc/init.d , mas onde eu colocaria o cmd para fazê-lo funcionar é um mistério, pois há duas funções lá, então eu coloco no final de uma dessas funções ou na última linha?

O comando precisa de permissão de root para ser executado e, idealmente, deve ser executado quando o computador for iniciado. Como o comando escurece o teclado do meu MacBook Air.

Além disso, também gostaria de saber qual arquivo eu precisaria editar se apenas um usuário específico tivesse esse comando executado. Como é um comando root e não quero dar acesso admin ou sudo a esse usuário, gostaria que esse comando fosse executado como root quando o usuário efetuasse login e o usuário não conseguisse impedir que esse comando fosse executado.

Descobertas Adicionais $HOME/.profile é o script de login, mas não é executado como root, funciona se você sudo o comando, mas isso não quer que eu precise.

O /etc/profile é estranho, ele não é executado na inicialização, mas quando entro em um shell e executo sudo -i "ele é executado assim que o sudo entra no modo interativo

Um atalho puro Com a versão 14.04, pode ter funcionado em versões anteriores, você simplesmente adiciona uma linha para crontab usando sudo crontab -e e adiciona uma linha "@reboot whatevercommandwithfullpath" e funciona. Mas com esta nova versão eu criei um script que está mais perto de como isso deve ser feito.     
por Meer Borg 15.03.2013 / 17:27

4 respostas

2

Você pode criar um daemon que é o jeito certo de fazê-lo. No entanto, é um pouco mais difícil que o rc.local.

veja aqui: link

ajuda detalhada (você pode pegar o exemplo /etc/init.d/hostname):

copie o esqueleto:

sudo cp /etc/init.d/skeleton /etc/init.d/keyboard_backlight

edite o esqueleto:

sudo nano /etc/init.d/keyboard_backlight

pesquise por isso

do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.

}

e altere-o assim:

do_start()
{
        echo 0 | /usr/bin/tee -a /sys/class/leds/smc::kbd_backlight/brightness
}

Comente ou exclua as linhas dentro do do_stop e do_reload

do_stop()
{
}
do_reload()
{
}

Salve o arquivo.

Conceda a permissão de execução para o arquivo:

sudo chmod 755 /etc/init.d/keyboard_backlight

Teste seu serviço:

sudo /etc/init.d/keyboard_backlight start

Se tudo estiver ok, carregue seu serviço para inicialização

sudo update-rc.d keyboard_backlight defaults 99

Atenciosamente.

    
por Antoine Rodriguez 05.04.2013 / 13:05
1

Talvez, para shells de login, eles sejam executados nesta ordem:

1./etc/profile
2./etc/profile.d/ files
3.$HOME/.bash_profile
4.$HOME/.bash_login

No entanto, não tenho certeza se o / etc / profile é executado antes que qualquer usuário faça o login, mas vale a pena tentar, caso eu esteja certo.

    
por djangofan 15.03.2013 / 18:34
1

Isso ainda está funcionando?

  

Este script será executado antes que a interface gráfica apareça ...

     
  1. Faça o script com os comandos desejados. vi file.sh

  2.   
  3. Copie o script para /etc/init.d cp file.sh /etc/init.d/file.sh

  4.   
  5. Altere a permissão para permitir a execução chmod + x /etc/init.d/file.sh

  6.   
  7. Em /etc/init.d Vincule-o! sudo update-rc.d file.sh start 99 2. (não esqueça o "." no final do comando)

  8.   

Se você precisar desativar este script em um futuro próximo: sudo update-rc.d   -f file.sh remove

Parece bem fácil e você pode manter scripts diferentes para coisas diferentes

    
por Joan 04.04.2013 / 10:27
0

provavelmente você está procurando por /etc/rc.local

se você adicionar qualquer comando antes de exit 0 que deve ser executado como root.

Não se esqueça de alterar a permissão para executável para /etc/rc.local e /etc/init.d/rc.local , a menos que não funcione, deixe como está, se já forem executáveis.

    
por Anam Ahmed 16.03.2013 / 19:00