1. Conceptos Fundamentales
Usuarios, grupos y root son los tres pilares del modelo de identidad y control de acceso en Linux.
Usuario (User)
Nombre de usuario — identificador de texto legible.
UID (User ID) — número único interno.
UID 0 = root.Directorio home —
/home/nombreusuario.Shell — intérprete de comandos (
/bin/bash, /bin/zsh).Grupo (Group)
Grupo principal — creado automáticamente con el usuario (mismo nombre).
Grupos suplementarios — cualquier otro grupo al que pertenezca.
GID (Group ID) — número único interno del grupo.
Facilitan la gestión masiva de permisos para múltiples usuarios.
Usuario root
Superusuario con privilegios ilimitados —
UID = 0.Puede instalar, eliminar y cambiar permisos de cualquier archivo.
sudo (Superuser Do) — permite ejecutar comandos como root temporalmente sin iniciar sesión como root.
Por seguridad, las tareas de administración se realizan siempre mediante
sudo.2. Administración de Usuarios
Crear, modificar, bloquear y eliminar usuarios. En Debian/Ubuntu se recomienda adduser sobre
useradd — es una envoltura que automatiza múltiples tareas.Crear un nuevo usuario — adduser
1
Crea el usuario
Registra la entrada en
/etc/passwd y /etc/shadow.2
Crea el grupo principal
Genera automáticamente un grupo con el mismo nombre que el usuario.
3
Crea el directorio home
Genera
/home/<nombre_usuario>/ con los archivos de configuración por defecto.4
Solicita y establece la contraseña
Pide confirmación de contraseña y guarda el hash en
/etc/shadow.5
Configura el shell y otros parámetros
Establece el shell por defecto (
/bin/bash) y solicita datos opcionales (nombre completo, teléfono, etc.).bash — crear, contraseña y eliminar usuarios
# Crear usuario (recomendado en Debian/Ubuntu)
sudo adduser <nombre_usuario>
# Cambiar / establecer contraseña
sudo passwd <nombre_usuario>
# Sin nombre de usuario → cambia tu propia contraseña
sudo passwd ana
# Eliminar usuario (sin directorio home)
sudo userdel <nombre_usuario>
# Eliminar usuario + directorio home + mail spool ← lo más común
sudo userdel -r <nombre_usuario>
Modificar propiedades — usermod
| Flag | Comando | Descripción |
|---|---|---|
| -d | sudo usermod -d /home/<nuevo> <usuario> | Cambiar directorio home |
| -s | sudo usermod -s /bin/zsh <usuario> | Cambiar shell por defecto |
| -L | sudo usermod -L <usuario> | Bloquear la cuenta (antepone ! en /etc/shadow) |
| -U | sudo usermod -U <usuario> | Desbloquear la cuenta |
| -aG | sudo usermod -aG <grupo> <usuario> | Añadir a grupo suplementario (siempre -a con -G) |
⚠️ -G sin -a borra todos los grupos suplementarios:
usermod -G developers juan elimina a juan de todos sus grupos actuales y lo añade solo a developers. Usa siempre -aG (append + Group) para añadir sin eliminar.3. Administración de Grupos
Crear grupos, gestionar membresías y consultar a qué grupos pertenece un usuario. Los grupos son el mecanismo de colaboración entre usuarios en Linux.
bash — crear, eliminar y gestionar grupos
# Crear un nuevo grupo vacío
sudo groupadd desarrolladores
# Eliminar un grupo
sudo groupdel <nombre_grupo>
# Añadir usuario a un grupo suplementario
sudo usermod -aG desarrolladores juan
# Eliminar usuario de un grupo (gpasswd -d)
sudo gpasswd -d juan desarrolladores
# Ver todos los grupos de un usuario
groups juan
# Salida: juan : juan sudo desarrolladores
# Ver UID, GID y grupos de forma detallada
id juan
# Salida: uid=1001(juan) gid=1001(juan) groups=1001(juan),27(sudo),1002(desarrolladores)
💡 groups vs id:
groups muestra solo los nombres de grupo. id muestra UID, GID principal y todos los grupos con sus GIDs numéricos — más útil para diagnóstico de permisos.4. Archivos Clave de Configuración
Toda la información de usuarios y grupos se almacena en archivos de texto plano. Solo root puede modificarlos directamente — usa siempre los comandos de administración.
/etc/passwd — información de usuarios
/etc/passwd — formato de cada línea (7 campos separados por :)
juan:x:1001:1001:Juan García,,,,:/home/juan:/bin/bash
campo 1
nombre
Username del usuario
campo 2
x
La 'x' indica que el hash está en /etc/shadow
campo 3
UID
ID numérico del usuario. 0 = root
campo 4
GID
ID del grupo principal
campo 5
GECOS
Comentario — nombre completo, teléfono, etc.
campo 6
home
Ruta del directorio personal
campo 7
shell
Shell del usuario al iniciar sesión
/etc/shadow — contraseñas encriptadas
Contiene los hashes de las contraseñas y la política de caducidad. Es el archivo más sensible del sistema — solo legible por root. Separado de /etc/passwd precisamente por seguridad.
/etc/group — información de grupos
/etc/group — formato de cada línea (4 campos separados por :)
desarrolladores:x:1002:juan,maria,pedro
campo 1
nombre_grupo
Nombre del grupo
campo 2
x
Contraseña en /etc/gshadow (raramente usada)
campo 3
GID
ID numérico del grupo
campo 4
usuarios
Lista de usuarios suplementarios separados por coma
🔍 Nota sobre /etc/passwd vs /etc/shadow: Históricamente, las contraseñas estaban en
/etc/passwd (legible por todos). El campo "x" indica que se movieron a /etc/shadow (solo root) por seguridad — así los usuarios del sistema no pueden intentar descifrar los hashes de otros.5. Permisos de Archivos — Estructura rwx
El modelo de permisos de Linux define quién puede leer (r), escribir (w) o ejecutar (x) un archivo, aplicado a tres categorías: Propietario, Grupo y Otros.
Estructura de permisos — salida de ls -l
-rwxrwxrwx
tipo
-
- archivo
d directorio
l enlace simbólico
d directorio
l enlace simbólico
propietario (user)
rwx
caracteres 2-4
grupo (group)
rwx
caracteres 5-7
otros (others)
rwx
caracteres 8-10
Tipos de permisos y valores octales
r
4
Lectura — ver contenido
w
2
Escritura — modificar contenido
x
1
Ejecución — ejecutar el archivo
-
0
Sin permiso
Diagrama visual de la estructura de permisos rwx en Linux
chmod — Modificar Permisos
El comando chmod (Change Mode) admite dos notaciones: octal (numérica, más rápida) y simbólica (letras, más expresiva). Ambas son equivalentes.
Notación Octal — suma de valores
Para cada categoría (Propietario, Grupo, Otros) suma los valores de los permisos deseados: r=4, w=2, x=1.
Calculadora octal — chmod 755
Categoría
Permisos
Cálculo
Dígito
Propietario (u)
rwx
4 + 2 + 1
7
Grupo (g)
r-x
4 + 0 + 1
5
Otros (o)
r-x
4 + 0 + 1
5
bash — chmod notación octal
# 755 → propietario: rwx (7) | grupo: r-x (5) | otros: r-x (5)
chmod 755 archivo.sh
# 644 → propietario: rw- (6) | grupo: r-- (4) | otros: r-- (4)
chmod 644 archivo.txt
# 600 → propietario: rw- (6) | grupo: --- (0) | otros: --- (0)
chmod 600 clave_privada.pem
# 777 → todos tienen rwx (¡evitar en producción!)
chmod 777 directorio/
Notación Simbólica — letras
| Símbolo | Significado | Ejemplo |
|---|---|---|
| u | Usuario / Propietario | chmod u+x — añade ejecución al propietario |
| g | Grupo | chmod g-w — quita escritura al grupo |
| o | Otros | chmod o-w — quita escritura a otros |
| a | Todos (u + g + o) | chmod a+r — añade lectura a todos |
| + | Añadir permiso | chmod ug+x archivo.sh |
| - | Quitar permiso | chmod o-w archivo.txt |
| = | Asignar permiso exacto (reemplaza) | chmod u=rw archivo.txt |
bash — chmod notación simbólica
# Añadir ejecución al usuario y al grupo
chmod ug+x archivo.sh
# Quitar escritura a otros
chmod o-w archivo.txt
# Dar lectura a todos
chmod a+r documento.pdf
# Asignar permiso exacto al propietario (reemplaza los actuales)
chmod u=rw archivo.conf
# Aplicar recursivamente a un directorio y todo su contenido
chmod -R 755 /var/www/html/
chown y chgrp — Cambiar Propietario y Grupo
Mientras
chmod cambia qué se puede hacer, chown cambia a quién pertenece el archivo. Requiere privilegios de root.bash — chown y chgrp
# Cambiar solo el propietario
sudo chown nuevo_propietario archivo.txt
# Cambiar solo el grupo propietario
sudo chgrp nuevo_grupo archivo.txt
# Cambiar propietario y grupo a la vez (sintaxis propietario:grupo)
sudo chown juan:desarrolladores proyecto/
# Cambiar solo el grupo con chown (dejar propietario vacío)
sudo chown :desarrolladores archivo.txt
# Aplicar recursivamente a todo un directorio
sudo chown -R www-data:www-data /var/www/html/
📌 chown vs chgrp:
chgrp es equivalente a chown :grupo — ambos cambian el grupo propietario. chown propietario:grupo cambia ambos en un solo comando, que es lo más común en administración.Referencia Rápida
Todos los comandos esenciales organizados por categoría.
👤 Usuarios
sudo adduser <usuario> # crear
sudo passwd <usuario> # contraseña
sudo userdel -r <usuario> # eliminar + home
sudo usermod -L <usuario> # bloquear
sudo usermod -U <usuario> # desbloquear
sudo usermod -s /bin/zsh <u> # cambiar shell
👥 Grupos
sudo groupadd <grupo> # crear
sudo groupdel <grupo> # eliminar
sudo usermod -aG <grupo> <u> # añadir
sudo gpasswd -d <u> <grupo> # eliminar
groups <usuario> # ver grupos
id <usuario> # ver UID/GID/grupos
🔐 Permisos (chmod)
chmod 755 archivo.sh # rwxr-xr-x
chmod 644 archivo.txt # rw-r--r--
chmod 600 clave.pem # rw-------
chmod ug+x archivo.sh # +x a user y grupo
chmod o-w archivo.txt # quitar w a otros
chmod -R 755 dir/ # recursivo
🏷️ Propietario (chown)
sudo chown user archivo # cambiar propietario
sudo chgrp grupo archivo # cambiar grupo
sudo chown user:grupo archivo # ambos
sudo chown -R user:g dir/ # recursivo
Permisos octales más comunes
| Octal | Simbólico | Uso típico |
|---|---|---|
| 755 | rwxr-xr-x | Scripts y ejecutables — propietario escribe/ejecuta, demás solo leen/ejecutan |
| 644 | rw-r--r-- | Archivos de configuración y documentos — propietario escribe, demás solo leen |
| 600 | rw------- | Claves privadas SSH, archivos muy sensibles — solo el propietario accede |
| 700 | rwx------ | Directorios privados — solo el propietario puede listar y acceder |
| 777 | rwxrwxrwx | Todos los permisos a todos — evitar en producción |