Recibe actualizaciones por: rss | twitter | email

visudo

Escrito por:
Fecha: 2015-01-23 17:49:00 00:00

El archivo sudoers

El fichero sudoers esta localizado en /etc/sudoers, y contiene las reglas que los usuarios deben seguir cuando utilizan el comando sudo.

Si usas o has usado Ubuntu, ya sabes que la cuenta root no se encuentra habilitada por defecto, esto se debe a que la cuenta root no tiene el password (contraseña) establecida, se le puede asignar una contraseña y utilizar Ubuntu como el resto de las distribuciones, pero en general lo que haces es utilizar el comando sudo.

Desde que comenze con Ubuntu he disfrutado de usar el comando sudo esto me permite ejecutar comandos de administración sin requerir cambiar las cuentas. Por ello lo primero que hago cuando instalo alguna distribución distinta de Ubuntu (Debian, Arch y Slackware son mis favoritas) es correr el comando visudo para permitir a mi usuario el uso del comando sudo

El comando sudo

Una de las principales ventajas de usar sudo en lugar de la cuenta root de administración es que se puede dar permisos granulados a los usuarios de un servidor, y además se tiene un registro de las acciones que toman usando sudo

Comando visudo

Para configurar el uso del comando sudo se debe editar el fichero /etc/sudoers (sudoers) pero no debe hacerse de forma directa, y para ello se debe utilizar el comando visudo, así que vamos a ello.

visudo

o, si estas en Ubuntu

sudo visudo

verás a continuacion algo parecido a esto:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

Con casi todas las líneas comentadas, la que nos importa por el momento es:

root    ALL=(ALL) ALL

Esta línea significa, que el usuario root puede utilizar todas las terminales, actuando como todos (cualquier) usuario y ejecutar (todos) los comandos del sistema.

Vamos por partes:

root
Esta primera parte es el usuario root en este caso
ALL
Esta es terminal desde la que el usuario indicado primero, puede ejecutar el comando sudo
(ALL)
Esta es la que indica como que usuarios puede actuar el usuario indicado inicialmente
ALL
Esta última parte indica que comandos el usuario indicado al inicio puede ejecutar

Ejemplos

Vamos a ver algunos ejemplos del archivo sudoers y lo que ello significa.

operator ALL= /sbin/poweroff
operator
El usuario "operator"
ALL
Desde cualquier terminal
/sbin/poweroff
Puede ejecutar el comando poweroff, es decir puede apagar el servidor

También podemos usar Alias, tal como veremos abajo.

User_Alias OPERADORES = joe, mike, jude 
Runas_Alias OP = root, operator 
Host_Alias OFNET = 10.1.2.0/255.255.255.0 
Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm

Así que los usuarios joe, mike y jude son OPERADORES, el alias OP incluye a root, operator, el alias OFNET es la clase C completa 10.1.2.0 y el alias PRINTING incluye los comandos lpz y lprm

Por lo que un archivo sudoers típico se vería algo así:

 User_Alias     OPERATORS = joe, mike, jude
 Runas_Alias    OP = root, operator
 Host_Alias     OFNET = 10.1.2.0/255.255.255.0
 Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm

OPERATORS ALL=ALL

#Los usuarios del alias OPERATORS, pueden ejecutar cualqueir comando desde cualquier terminal

linus ALL=(OP) ALL

# El usuario linus, puede ejecutar cualquier comando, desde cualquier terminal, y como cualquier usuario del grupo OP

user2 OFNET=(ALL) ALL

# El usuario user2, puede ejecutar cualquier comando desde cualquier máquina en la red OFNET

user3 ALL= PRINTING

# El user3 puede ejecutar los comandos lpc y lprm desde cualquier terminal

go2linux ALL=(ALL) ALL

# El usuario go2linux, puede ejecutar cualquier comando, desde cualquier terminal, actuando como cualquier usuario, tal como el administrador en Ubuntu.

Si no quieres que pidan el password para un usuario en especial y tomemos para este ejemplo a go2linux:

go2linux ALL=(ALL) NOPASSWD: ALL

Te vamos a dar un último tip, el comando visudo tal como su mismo nombre lo deja ver utiliza el programa vi para editar el archivo sudoers, que pasa si quieres utilizar otro, nano por ejemplo, pues puedes hacerlo:

Usando nano con visudo

export VISUAL=nano; visudo

Usando vim con visudo

export VISUAL=vim; visudo