como executar um aplicativo de inicialização de comando personalizado como raiz

0

Eu gostaria de fazer com que um comando terminal seja executado toda vez que eu iniciar o meu computador, mas o comando que eu quero executar requer permissões de root. Eu insiro o comando na parte de aplicativos de inicialização de configurações com o sudo antes dele, mas como requer minha senha, não acho que esteja em execução.

    
por Nathan Hill 16.02.2017 / 21:35

2 respostas

1

Adicione um cron job à tabela cron do root. Tarefas Cron são tarefas executadas em um planejamento. Você pode agendar trabalhos para serem executados toda vez que o sistema for inicializado.

Como root, digite crontab -e para editar a tabela cron, que é apenas a lista de tarefas agendadas. Em seguida, use o apelido @reboot (em vez da sintaxe normal de tempo ) para criar um trabalho que seja executado em todas as inicializações:

@reboot your_command
    
por 17.02.2017 / 00:19
1

Você pode configurar o sudo para permitir que você execute esse comando sem inserir sua senha. Eu recomendaria normalmente contra isso, mas, novamente, eu recomendo não executar aplicativos de raiz automaticamente (a menos que eles são root setuid e devidamente permissões / segurança gerenciada), e ei é a sua máquina. Essa técnica é especialmente útil se você precisar de um comando sudo para ser executado, digamos, em cada login. (Um cronjob de inicialização faz sentido se for necessário apenas na inicialização, eu concordo).

Você pode fazer isso de duas maneiras:

  1. Adicione uma entrada apropriada em /etc/sudoers , o arquivo de configuração do sudo, que é editado executando visudo como raiz (ou por meio do sudo).
  2. (RECOMMENDED) Crie um arquivo em /etc/sudoers.d com suas alterações de configuração. O arquivo /etc/sudoers deve conter a diretiva #includedir /etc/sudoers.d na parte inferior, o que fará com que ele leia arquivos neste diretório como configurações adicionais. (Se isso não acontecer, essa opção 2 não funcionará.)

De qualquer forma, o /etc/sudoers existente tem uma explicação da sintaxe de configuração, mas é um pouco longo e você não precisa se preocupar muito com qualquer configuração existente. (Há também uma página man, man 5 sudoers .)

O que você precisa fazer é escrever uma linha de especificação do usuário, permitindo que você execute um comando específico sem digitar sua senha.

Conforme a observação dos comentários do arquivo, as especificações do usuário têm esse formato básico:

## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

E existem alguns exemplos da sintaxe para certos tipos de configuração. Para realizar o que você precisa, a especificação do usuário é:

username ALL = NOPASSWD: /path/to/command

(Substitua "username" e "/ path / to / command" pelos valores apropriados; "ALL" e "NOPASSWD" são literais.)

Observe que você deve sempre usar o caminho completo para o comando ambos na configuração dos sudoers e ao iniciá-lo automaticamente. Isso ajuda a garantir que a execução do programa seja a que você espera, e não que algum outro programa (potencialmente malicioso) assuma o seu lugar devido ao $PATH de invasão. Esse conselho também se aplica às entradas root crontab ou a qualquer outro método de conceder automaticamente permissões de root.

    
por 18.01.2018 / 10:49