Se capisco correttamente i tuoi commenti, il problema qui è che il comando verrà emesso attraverso una connessione che non ha alcuna possibilità di inserire la password che sudo imposta per impostazione predefinita su richiesta. Inoltre, in molte distribuzioni del sistema operativo, sudo per impostazione predefinita richiederà un TTY, che questo programma potrebbe non avere.
Tuttavia, sudo è in grado di avere una struttura di autorizzazioni molto dettagliata, che consente a uno o più utenti di emettere un comando particolare senza password e TTY. Di seguito, mostrerò tre modi per configurarlo per le tue esigenze. Qualunque sia la tua scelta, l'utente sarà ora in grado di emettere il comando sudo rndc reload
senza dover inserire una password.
(Inoltre, questo potrebbe non essere necessario, ma ... si prega di ricordarsi di fare una copia di backup del file sudoers prima di modificarlo, per mantenere un guscio in cui siete aperti radici in caso di necessità di ripristinare il backup, e per modificare usando visudo
invece di sudo vi /etc/sudoers
. Speriamo che queste precauzioni non siano necessarie, ma ... meglio averle e non averne bisogno rispetto al contrario!)
1. Se non si desidera richiedere un TTY per eventuali richieste
Il modo più semplice per sbarazzarsi dei requisiti TTY (se ne esiste uno) è assicurarsi che la riga che inizia con Defaults
in /etc/sudoers
non contenga la parola requiretty
, invece dovrebbe contenere !requiretty
. Tuttavia, se lo fai, significa che nessun comando sudo richiederà un tty!
Sarà inoltre necessario aggiungere la riga
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2. Se si desidera richiedere un TTY per tutti gli utenti tranne questo
Questo può essere fatto impostando un valore predefinito per questo utente, in questo modo:
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3. Se si desidera richiedere un TTY per tutti i comandi tranne questo comando da parte di questo singolo utente
Questo è un po 'più complesso, a causa della sintassi del file sudoers. Dovresti creare un alias di comando per il comando, quindi impostare un valore predefinito per tale alias di comando, in questo modo:
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. Quali sono le tue obiezioni commerciali da utilizzaresudo
per questo?