Usa la NOPASSWDdirectiva
Puede usar la NOPASSWDdirectiva en su /etc/sudoersarchivo .
Si se llama a su usuario y se llama a usersu host host, puede agregar estas líneas a /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Esto permitirá al usuario userejecutar los comandos deseados hostsin ingresar una contraseña. Todos los demás sudocomandos ed aún requerirán una contraseña.
Los comandos especificados en el sudoersarchivo deben estar completamente calificados (es decir, usar la ruta absoluta al comando para ejecutar) como se describe en la sudoerspágina del manual . Proporcionar una ruta relativa se considera un error de sintaxis.
Si el comando termina con un /carácter final y apunta a un directorio, el usuario podrá ejecutar cualquier comando en ese directorio (pero no en ningún subdirectorio). En el siguiente ejemplo, el usuario userpuede ejecutar cualquier comando en el directorio /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Nota: Utilice siempre el comando visudopara editar el sudoersarchivo para asegurarse de no bloquearse del sistema, en caso de que accidentalmente escriba algo incorrecto en el sudoersarchivo. visudoguardará el archivo modificado en una ubicación temporal y solo sobrescribirá el sudoersarchivo real si el archivo modificado se puede analizar sin errores.
Usar en /etc/sudoers.dlugar de modificar/etc/sudoers
Como alternativa a la edición del /etc/sudoersarchivo, puede agregar las dos líneas a un nuevo archivo, por /etc/sudoers.dejemplo /etc/sudoers.d/shutdown. Esta es una manera elegante de separar diferentes cambios a los sudoderechos y también deja el sudoersarchivo original intacto para facilitar las actualizaciones.
Nota: Nuevamente, debe usar el comando visudopara editar el archivo para asegurarse de no bloquearse del sistema:
sudo visudo -f /etc/sudoers.d/shutdown
Esto también garantiza automáticamente que el propietario y los permisos del nuevo archivo estén configurados correctamente.
Si sudoersestá en mal estado
Si no usó visudopara editar sus archivos y luego accidentalmente desordenó /etc/sudoerso desordenó un archivo, /etc/sudoers.dentonces se lo bloqueará sudo.
La solución podría ser arreglar los archivos usando pkexecuna alternativa a sudo.
Para arreglar /etc/sudoers:
pkexec visudo
Para arreglar /etc/sudoers.d/shutdown:
pkexec visudo -f /etc/sudoers.d/shutdown
Si la propiedad y / o los permisos son incorrectos para cualquier sudoersarchivo, el archivo será ignorado por sudolo que también podría quedar bloqueado en esta situación. De nuevo, puedes usar pkexecpara arreglar esto.
Los permisos correctos deberían ser así:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Úselo pkexecasí para corregir la propiedad y los permisos :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown