ejecutar comandos como root con sudo

Posted on Wed 27 April 2011 in misc • 2 min read

Cuando tenemos que realizar determinadas tareas en nuestras maquinas linux como root, si no tenemos acceso al superusuario, tendremos que pedirle al administrador que nos permita hacerlo. Si ademas necesitamos hacerlo dentro de un script, por ejemplo para un proceso de monitorización, lo mejor seria no tener que poner un password.

Para hacer esto existe sudo, un comando que se usa mucho, ya que la mayoría de las distribuciones ubuntu, te crean un usuario que tienen acceso a todo mediante sudo.

El archivo de configuración de sudo es /etc/sudoers pero por algun motivo que desconozco, no se puede editar directamente con nuestro editor favorito, si no que tenemos que usar el comando visudo

root@lnxport:~# visudo root@lnxport:~# man sudoers

Las opciones son muchas, asi que voy a explicar un ejemplo para que se entienda.

Imaginemos que tenemos una aplicacion web que cambia las contraseñas de los usuarios, pero nuestro apache corre como usuario sin privilegios, por lo que no puede ejecutar el comando passwd para cambiar las de otros usuario. Pero tampoco queremos que pudieran cambiar el passwd del root. ejecutamos visudo y pomemos lo siguiente al final

httpd ALL = NOPASSWD: /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

Con esto le decimos a sudo que permitimos al usuario httpd que puede ejecutar el comando /usr/bin/passwd para todo menos para root

Ahora como usuario httpd podemos hacer la prueba y veremos que nos permite cambiar el password de cualquier usuario menos la del root

httpd@lnxport:/$ sudo passwd userprueba Introduzca la nueva contraseña de UNIX: Vuelva a escribir la nueva contraseña de UNIX: passwd: password updated successfully