Comandos Linux: su y sudo

Uno de los principios del buen administrador de sistemas consiste en no acceder más de lo necesario con la cuenta de root. Para ello, en Linux, existen dos comandos (sudo es un programa que encuentra en la práctica totalidad de distribuciones Linux actuales) bastante interesantes que nos permiten, llegado el momento, disponer de privilegios de administrador (usuario root)

El comando su permite cambiar de usuario y acceder con otro usuario directamente desde el interprete de comandos. Para ello, simplemente hay que escribir lo siguiente:

su nombredelusuario

Inmediatamente se nos pedirá la contraseña del usuario con el que queremos acceder y una vez introducida podremos trabajar como si fueramos ese usuario. De esta manera podemos administrar servidores de bases de datos, servidores web y otros servicios que disponen de usuarios propios para realizar las distintas tareas de administración.

Para acceder como root con este comando simplemente hay que escribir su e introducir la contraseña correspondiente. Lamentablemente, una vez cambiado el usuario a root dejan de registrarse los comandos ejecutados, con lo cual tendremos el mismo problema que si accedemos como root directamente y es que si rompemos algo nos costará más reconstruir las acciones realizadas por no guardarse en el registro.

Al menos queda el consuelo de saber quien se ha cambiado de usuario, pues esta acción si se guarda en el registro.

Por supuesto, se recomienda ejecutar su con su ruta completa (normalemente /bin/su) para evitar una suplantación del comando que pueda acabar ejecutando un programa para recopilar contraseñas de usuarios del sistema.

Otro de los problemas surge cuando queremos que un usuario pueda realizar alguna tarea que únicamente el usuario root puede realizar. Habría que dar acceso a la cuenta root a todos los usuarios si se usara el comando su.

Para solucionar este problema se utiliza el comando sudo. Todd Miller creo este programa que permite ejecutar comandos como root o cualquier otro usuario del sistema y que se incluye en la mayoría de distribuciones Linux actuales.

La estructura de un comando ejecutado con sudo es la siguiente:

sudo comando argumentos

Es decir, se escribe la palabra sudo y posteriormente el comando de forma normal con sus argumentos correspondientes. El funcionamiento de sudo se basa en un fichero que contiene los usuarios y sus distintos privilegios para ejecutar comandos. Por eso, una vez consultado este fichero y comprobado que usuario y comando se encuentran relacionados, se solicita la contraseña del usuario que ejecutó sudo.

Cuando se utiliza sudo se puede configurar un tiempo para que el usuario pueda volver a ejecutar un comando sin tener que volver a introducir la contraseña. Para complementar el control sobre los comandos ejecutados, sudo guarda en el registro datos sobre usuarios, comandos ejecutados, argumentos utilizados..

La estructura del fichero de configuracion (que puede encontrarse en /etc/sudoers) es bastante sencilla y permite definir los usuarios que ejecutarán los distintos comandos, las máquinas sobre las que pueden ejecutarse o el usuario con el que se ejecutarán. Puede verse un fichero sudoers de muestra comentado y explicado en el siguiente enlace. Para editar este fichero basta con ejecutar el programa visudo desde la línea de comandos.

¿Utilizáis habitualmente alguno de estos programas para administrar vuestros servidores Linux?

378 comentarios

Pingback: Bitacoras.com