Ejecutar comando sudo sin contraseña

Como probablemente ya sabrás, GNU/Linux dispone de un sistema de gestión de permisos que permite establecer que acciones puede realizar un usuario, su grupo y otros usuarios sobre un fichero/carpeta/enlace simbólico/aplicación.

Mas allá de los permisos de usuario, existen determinadas acciones (crear usuarios, modificar ficheros del sistema, crear particiones, etc) que requieren permisos de root (superusuario/administrador), ahí es donde entra el comando sudo.

comando-sudo-sin-contraseña

El comando sudo permite realizar una escalada de privilegios, es decir, permite realizar acciones como si fueras root, logrando así el control total del sistema operativo.

En determinadas ocasiones es necesario ejecutar una aplicación/script que necesita permisos de root, pero pedir la contraseña no es una opción viable o cómoda.

Por ejemplo:
– Un script que se ejecuta frecuentemente
– Una aplicación gráfica que necesita ejecutar un comando, como por ejemplo el menú de apagado que realicé tiempo atrás
– Comandos de uso frecuente que necesiten ejecutarse como root, como por ejemplo sudo apache2ctl restart (reiniciar apache)

 

Para ejecutar un comando sin contraseña hay varias opciones:
1.- Pasar la contraseña a sudo como parámetro
2.- Permitir ejecutar el comando sin contraseña
3.- Permitir ejecutar un script sin contraseña
4.- Buscar otra aplicación similar que no necesite permisos

Me voy a centrar en las 3 primeras, si estás aquí es que ya has descartado la 4a 😉

 

Pasar la contraseña a sudo como parámetro

La idea es imprimir la contraseña usando echo y pasársela a sudo -S

echo mipassword | sudo -S poweroff

[ ! ] Como parte negativa, tu contraseña va a aparecer en texto plano en el script y/o fichero bash history.

 

Permitir ejecutar el comando sin contraseña

Esta solución pasa por modificar el fichero sudoers y agregar una línea que indica que el comando se puede ejecutar sin contraseña.

Lo primero es una copia de seguridad

sudo cp /etc/sudoers /etc/sudoers.bak

 

Y a continuación editar el fichero sudoers con nuestro editor de confianza

sudo gedit /etc/sudoers
sudo pluma /etc/sudoers
sudo kate /etc/sudoers
sudo nano /etc/sudoers

 

Y agregar la siguiente línea*

TuUsuario ALL = NOPASSWD: /sbin/shutdown

*En mi caso es el comando de apagado, podría ser cualquier otro, como /bin/dd por ejemplo

[ ! ] Esta solución es un poco engorrosa y un error en el fichero puede ocasionar problemas graves.

 

Permitir ejecutar script sin contraseña

De forma similar a la anterior, puedes permitir ejecutar un script sin contraseña.

TuUsuario ALL = NOPASSWD: /home/TuUsuario/script.sh

 

[ ! ] Sería extremadamente peligroso que otros usuarios puedan editar el script y modificar aquellos comandos que van a ejecutar como root.

Así pues, deniega los permisos a otros usuarios

chmod 700 script.sh

 

Como podrás observar, todas las opciones tienen su parte negativa, la 1a solución es la mas sencilla, pero la 2a y 3a solución (si se realizan correctamente) son mas seguras.

 

Anuncios

5 comentarios en “Ejecutar comando sudo sin contraseña

  1. Cada usuario debe valorar en todo momento que la comodidad puede permitir que su equipo sea manipulado sin su permiso, todo depende de que comandos permitimos que se ejecuten sin solicitar la contraseña de sudo.
    Hay que tener claro el riesgo que se corre.

    Me gusta

  2. Quizás la opción “menos mala” si se trata de un ejecutable puede ser la de el SETUID. La gracia está que sólo funciona con binarios, ya que con scripts esta desactivado por razones de seguridad.

    La cosa es que cuando se ejecuta un archivo con el SETUID activado, tiene los permisos del usuario propietario. Por lo tanto si yo con mi usuario ejecuto un binario con el SETUID, tendrá permisos de root.

    Esto se puede hacer con sudo chmod +s /ruta/al/binario

    Espero que sirva de ayuda

    Me gusta

Por cada comentario que haces, Dios salva un gatito

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s