visudo
Escrito por: Guillermo Garron
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