Si entiendo sus comentarios correctamente, el problema aquí es que el comando se emitirá a través de una conexión que no tiene la capacidad de ingresar la contraseña que sudo no solicita. Además, en muchas distribuciones del sistema operativo, sudo requerirá por defecto un TTY, que este programa puede no tener.
Sin embargo, sudo puede tener una estructura de permisos muy fina, lo que permite que uno o más usuarios emitan un comando en particular sin contraseña y TTY. A continuación, le mostraré tres formas de configurar esto para sus necesidades. Cualquiera que elija, el usuario ahora podrá emitir el comando sudo rndc reload
sin tener que ingresar una contraseña.
(Además, esto puede ser innecesario, pero ... por favor, recuerde que debe hacer una copia de seguridad del archivo sudoers antes de editarlo, para mantener una concha en la que están abiertos raíces en caso de que necesite volver a la copia de seguridad, y para editar usando en visudo
lugar de sudo vi /etc/sudoers
. Esperemos que estas precauciones sean innecesarias, pero ... ¡es mejor tenerlas y no necesitarlas que a la inversa!)
1. Si no desea solicitar un TTY para cualquier solicitud
La forma más fácil de deshacerse de los requisitos de TTY (si existe) es asegurarse de que la línea que comienza con Defaults
in /etc/sudoers
no contenga la palabra requiretty
; en su lugar, debería contenerla !requiretty
. Sin embargo, si haces esto, significa que ningún comando sudo requerirá un tty.
También necesitará agregar la línea.
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2. Si desea solicitar un TTY para todos los usuarios excepto este
Esto se puede hacer estableciendo un valor predeterminado para este usuario, como este:
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3. Si desea solicitar un TTY para todos los comandos excepto este comando por este usuario
Esto es un poco más complejo, debido a la sintaxis del archivo sudoers. Debería crear un alias de comando para el comando y luego establecer un valor predeterminado para ese alias de comando, de esta manera:
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
sirve. ¿Cuáles son sus objeciones comerciales a su usosudo
para esto?