sudo
El comando SUDO nos permite ejecutar scripts, aplicaciones como root u otro usuario sin saber la contraseña de estos usando la de nuestro usuario pudiendo configurar infinidad de opciones para tener un mayor control de la seguridad de nuestro sistema. La configuración está en el fichero /etc/sudoers (Linux) o /private/etc/sudoers (OSX) y debe ser editado (realmente se puede usar cualquier editor pero es recomendable hacerlo) con el comando visudo, que a parte de ejecutar nuestro editor favorito (usando la variable de entorno EDITOR) para editar el fichero antes de salir hace una comprobación del fichero, por si hubiera algún error. En este artículo solo expongo algunas nociones y apuntes muy resumidos de lo que se puede hacer para ver en profundidad todo lo que se puede hacer lo mejor es ir a la página del manual, man sudoers desde consola o aquí.
1. Definiciones de aliasAquí lo que hacemos es definir un alias, que es básicamente una abreviación o agrupación de otros nombres o alias. Su formato es:
Alias_Type NAME = item1, item2, ...
Alias_Type-> puede ser:
Cmnd_Alias ADMIN = /usr/bin/apt-get, /usr/bin/dpkg
User_Alias COLEGAS = Eduardo, Alex
Runas_Alias ADMINS = root, operator
Host_Alias REDES = 128.138.0.0/255.255.0.0, 129.32.2.0/24
NAME -> Es el nombre del alias. Debe empezar por letra mayúscula y sólo se permiten letras mayúsculas y números. itemx puede ser un elemento o un alias el cual será expandido. NOTA: Existe un alias especial, ALL, que se utiliza para englobar a todos los comandos, usuarios, hosts. 2. Ajuste de opcionesAquí es donde definimos los valores por defecto de cada usuario para que tenga unas opciones diferentes o específicas. La sintaxis es la siguiente:
Defaults lista_opciones Defaults:usuario lista_opciones Defaults@host lista_opciones
La lista_opcioneses una lista de opciones separadas por comas. Existen cuatro tipos de opciones:
usuario host = [(usuario_privilegiado)] [NOPASSWD:] comando
Como se puede ver es bastante simple, pero aquí va una breve explicación: usuario es el usuario al que vamos a permitir ejecutar algo con privilegios. host es en que máquina puede ejecutar, por defecto (y comodidad) se suele poner ALL. NOPASSWD: sirve para que SOLO en este comando NO pida nuestra contraseña para validar y ejecutar el comando. comando, es lo que queremos ejecutar con privilegios, y debe tener el path completo. 4. Ejemplos
# # Aliases # # Comandos para instalar paquetes en Debian Cmnd_Alias APT = /usr/bin/apt-get, /usr/bin/dpkg # Usuarios que pueden instalar paquetes User_Alias ADMIN = paco, felix # Usuarios privilegiados Runas_Alias OP = root, operator # # Reglas de acceso # # Sólo pueden instalar paquetes los usuarios de ADMIN # (por defecto, como root). No necesitan contraseña. ADMIN ALL = NOPASSWD: APT # El usuario edu puede des/montar como si fuese root edu ALL = (OP) /sbin/mount # El root puede hacer lo que quiera. root ALL = (ALL) ALL
Cuando ejecutamos algo con SUDO puede ocurrir que este comando no encuentre algo en el path por lo que debemos poner un path en el sudoers para solventarlo:
Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"