Se entendi corretamente os seus comentários, o problema aqui é que o comando será emitido por meio de uma conexão que não tem a capacidade de inserir a senha que o sudo usa como padrão para solicitação. Além disso, em muitas distribuições de SO, o sudo assumirá o padrão de exigir um TTY - que este programa pode não ter.
No entanto, o sudo pode ter uma estrutura de permissões muito refinada, possibilitando que um ou mais usuários emitam um comando específico sem senha e TTY. Abaixo, mostrarei três maneiras de configurar isso para suas necessidades. Qualquer que você escolher, o usuário poderá emitir o comando sudo rndc reload
sem precisar digitar uma senha.
(Além disso, este pode ser desnecessário, mas ... por favor, lembre-se de fazer uma cópia de backup de seu arquivo sudoers antes de editá-lo, para manter uma concha onde você está aberto raiz no caso de você precisar reverter para o backup, e para editar -lo usando visudo
em vez de sudo vi /etc/sudoers
. Esperemos que estas precauções será desnecessária, mas ... melhor tê-los e não precisa deles do que o inverso!)
1. Se você não deseja solicitar um TTY para qualquer solicitação
A maneira mais fácil de se livrar dos requisitos TTY (se houver) é garantir que a linha que começa com Defaults
in /etc/sudoers
não contenha a palavra requiretty
- em vez disso, deve conter !requiretty
. No entanto, se você fizer isso, significa que nenhum comando sudo exigirá um tty!
Você também precisará adicionar a linha
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2. Se você deseja solicitar um TTY para todos os usuários, exceto este
Isso pode ser feito definindo um padrão para esse usuário, assim:
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3. Se você deseja solicitar um TTY para todos os comandos, exceto este comando por este usuário
Isso é um pouco mais complexo, devido à sintaxe do arquivo sudoers. Você precisaria criar um alias de comando para o comando e, em seguida, definir um padrão para esse alias de comando, assim:
Cmnd_Alias RNDC_CMD = /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
Defaults!RNDC_CMD !requiretty
rndcuser ALL = (root) NOPASSWD: RNDC_CMD
sudo
serve. Quais são as suas objeções comerciais ao uso delesudo
para isso?