Publi

Ejecutando programas como root sin contraseña (Paso a paso)

sandwich

Cuando estamos utilizando la terminal y queremos ejecutar comandos con privilegios de superusuario (root), los usuarios de Ubuntu o Mint entre otras estarán acostumbrados a pedir las cosas con sudo.

Cuando estamos delante, es muy cómodo hacerlo, aunque tengamos que introducir la contraseña nada más ejecutar el comando (en muchos sistemas, cuando la has introducido una vez, te deja ejecutar comandos como root durante un rato sin introducir contraseña).

El problema está cuando creamos scripts y automatizamos tareas que requieren en una pequeña parte privilegios de root. Por un lado, podemos ejecutar los scripts como root y olvidarnos, pero es algo muy inseguro, lo suyo es que ejecutemos el comando con sudo y no nos pregunte por contraseña.

Tenemos que tener cuidado con esto, ya que se permitirán algunos comandos de root sin contraseña, y puede que muchos de ellos sean dañinos para el sistema, eso es nuestra responsabilidad.

Un comando, para un sólo usuario

Para los ejemplos, vamos a ejecutar como root el comando service (para arrancar o parar servicios de sistema). De este modo no tendremos que introducir la contraseña cuando queramos hacerlo.

Para ello vamos a editar el archivo sudoers. Y con ese fin debemos ejecutar el comando visudo como root:

$ sudo visudo

Se abrirá un editor (vi, por ejemplo) con el que podremos editar los contenidos de ese fichero de forma segura. Allí debemos añadir la siguiente línea:

1
usuario   ALL= NOPASSWD : /usr/sbin/service

Si os fijáis, es la palabra clave NOPASSWD la que provoca que no se pregunte contraseña cuando se invoca el comando.

Podemos hacerlo al final del fichero. En este caso daremos permiso a usuario para que ejecute:

$ sudo service xxxxx xxxxxx

por ejemplo:

$ sudo service apache restart

las veces que quiera sin pedir contraseña.

Un comando, un grupo

Una opción, es que si el ordenador lo utilizan varios usuarios, es permitir a un grupo entero la ejecución de comandos de esta forma, para ello, primero creamos el grupo (el grupo se llamará administradores)

$ sudo groupadd administradores

Ahora introucimos usuarios en el grupo:

$ sudo gpasswd -a usuario1 administradores
$ sudo gpasswd -a usuario2 administradores
$ sudo gpasswd -a usuario3 administradores

o también

$ sudo gpasswd -M usuario1,usuario2,usuario3 administradores

Ahora introducimos lo siguiente en sudoers (con el comando visudo, como antes):

1
%administradores   ALL= NOPASSWD : /usr/sbin/service

Muchos comandos, muchos usuarios

También puede ser que tengamos muchos comandos para permitir a muchos usuarios y, aunque podemos introducir 200 líneas en sudoers, a lo mejor es algo complicado de administrar en el caso de que queramos quitar un comando, ya que tendremos que modificar varias líneaas, o queramos quitar a un usuario. Para eso utilizaremos los alias de sudoers.

Podemos utilizr comandos especiales dentro de sudoers que nos permitirán crear un Alias donde introducir una enumeración de datos (por ejemplo usuarios y comandos):

  • User_Alias NOMBRE_DE_LA_COLECCION = usuario1, usuario2, usuario3, etc : Configurará una colección de usuarios llamada NOMBRE_DE_LA_COLECCION
  • Cmnd_Alias COLECCION_COMANDOS = comando1, comando2, comando3, etc : Configura una colección de comandos llamada COLECCION_COMANDOS

Luego estos alias podemos utilizarlos en la línea de sudoers que activa la utilización sin contraseña:

1
ADMINISTRADORES   ALL= NOPASSWD : COMANDOS

Algo que me dejé en el tintero

En esta guía no quise introducir el host (es ese ALL) que nos queda colgado, y es que podemos limitar el uso de sudo a un host determinado. Por ejemplo, permitir esa ejecución cuando se ejecuten en modo local o desde un determinado nodo remoto (para que no desde todos lados se pueda hacer). Aquí podemos especificar tanto nombres de host como direcciones IP.

Foto: xkcd

También podría interesarte...

There are 3 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Pingback: BlogESfera.com /

  3. Pingback: Poesía binaria » Creando un menú selector de frecuencia de nuestra CPU /

Leave a Reply