3.2 Grupos, Sudo y visudo
¡Prepárate!
- Aprenderás la diferencia entre Grupos Primarios y Secundarios. - Sabrás
inyectar a un usuario en un grupo suplementario con
usermod -aG. - Aprenderás a transmutar de identidad usandosuysu -. - Dominarás el archivo de configuración más letal de todo Linux:/etc/sudoersmediantevisudo.
Crear usuarios está muy bien, pero si un usuario no tiene los privilegios adecuados, no podrá hacer más que leer archivos básicos. Para agrupar a docenas de usuarios bajo los mismos permisos (ej. desarrolladores vs contables), usamos los Grupos.
1. Grupos de Usuarios
Sección titulada “1. Grupos de Usuarios"Todo usuario en Linux pertenece, como mínimo, a un grupo.
Grupo Primario
Sección titulada “Grupo Primario"Cuando creas un usuario con useradd juan, por detrás, Linux crea también un grupo privado llamado juan (GID 1000) y mete al usuario dentro. Este es su grupo de nacimiento o grupo primario. Cualquier archivo que este usuario cree desde el teclado pertenecerá a este grupo.
Grupos Secundarios (Suplementarios)
Sección titulada “Grupos Secundarios (Suplementarios)"Un usuario puede pertenecer a cincuenta grupos adicionales simultáneamente (ej: grupo docker, grupo www-data, grupo sudo).
Operaciones con Grupos
Sección titulada “Operaciones con Grupos"- Crear un grupo nuevo:
ventana terminal sudo groupadd developers - Añadir a un usuario existente a un grupo suplementario:
ventana terminal # "User Modify -append -Group" (Añadir a Grupo)# ¡Cuidado! Si olvidas la 'a', borrarás a Juan de todos sus otros grupos.sudo usermod -aG developers juan - Ver a qué grupos pertenece alguien:
ventana terminal groups juan
2. Pidiendo Permiso: su frente a sudo
Sección titulada “2. Pidiendo Permiso: su frente a sudo"El Interruptor Rápido: su (Switch User)
Sección titulada “El Interruptor Rápido: su (Switch User)"su te permite iniciar una sub-sesión de terminal tomando la identidad de otro usuario.
Si quieres ser el usuario pedro, ejecutarás su pedro, pero el sistema te pedirá la contraseña personal de Pedro.
- El peligro del guión (
-):su root: Cambias al usuario root, pero mantienes tu ubicación actual y tus variables de entorno. Estás usando un root “contaminado” por las configuraciones de tu usuario personal.su - root: El método correcto. Cargas un entorno de root 100% puro y limpio, aterrizando en su/rootde fábrica.
El Delegador Sensato: sudo (Super User DO)
Sección titulada “El Delegador Sensato: sudo (Super User DO)"sudo ejecuta un solo comando con poderes administrativos, y luego devuelve el sistema a la normalidad al instante. Además:
- A diferencia de
su,sudote pide TU propia contraseña, no la del administrador. Loggeando así quién ha hecho qué. - Puedes restringir a los usuarios para que solo puedan ejecutar ciertos comandos.
3. Dominando el terror de /etc/sudoers
Sección titulada “3. Dominando el terror de /etc/sudoers"¿Cómo sabe Linux exactamente quién tiene derecho a usar sudo? Porque está escrito en el sagrado archivo /etc/sudoers.
Si este archivo se corrompe por escribir mal una coma, el sistema se bloqueará para siempre, nadie jamás podrá usar sudo para arreglarlo, y el servidor quedará inconquistable a nivel administrativo (hasta que rompas el kernel físicamente reiniciando con un LiveCD de rescate).
Por este motivo crítico, está TERMINANTEMENTE PROHIBIDO editar /etc/sudoers con Nano o Vim normales.
SIEMPRE debes usar la herramienta visudo.
# Entrar a editar de forma segurasudo visudovisudo abrirá el archivo en un editor. Pero la magia ocurre al guardar: visudo analizará la sintaxis de tu texto. Si escribiste algo incompatible que vaya a romper el sistema, visudo bloqueará el guardado y te mandará un error, salvando la vida del servidor.
Sintaxis de visudo
Sección titulada “Sintaxis de visudo"Al bajar por el documento, verás esta línea que le da el poder de Dios al usuario root universalmente:
root ALL=(ALL:ALL) ALL
Para darle acceso sudo a Juan a todo el sistema:
juan ALL=(ALL:ALL) ALL
Para darle acceso sudo a Juan a todo el sistema, pero sin que se le pida contraseña al ejecutar comandos (muy útil para scripts automatizados):
juan ALL=(ALL:ALL) NOPASSWD: ALL
Para configurar que todo el Grupo developers pueda reiniciar el servicio apache usando sudo, sin contraseña, pero no hacer nada más:
%developers ALL=(ALL) NOPASSWD: /usr/sbin/service apache2 restart
Comprueba tus conocimientos
Sección titulada “Comprueba tus conocimientos"-
Ejecutas el comando
sudo usermod -G docker maria. De repente María te llama por teléfono gritando que ha perdido el acceso de administración a todo el servidor para siempre. ¿Qué error catastrófico has cometido? -
Estás preparando un script desatendido automático que tiene que reiniciar los servicios del sistema, por lo que necesita ser ejecutado con
sudo. Abresvisudopara añadir una regla al usuario remotojenkins. ¿Qué parte de la sintaxis insertada te asegura que el script automático no se quedará en pausa por la noche pidiendo una contraseña en la consola vacía? -
Hay un usuario en la empresa del que no confías mucho, pero te exige tener privilegios
sudopara leer los gigantescos archivos de log del servidor Nginx (/var/log/nginx/etc), ya que su usuario raso recibe permiso denegado para entrar a esa carpeta. ¿Cuál es la forma más “Sysadmin” de solucionarlo sin arriesgar nada?