Permisos de usuario en Linux¶
Los permisos en Linux son fundamentales para mantener la seguridad y estabilidad del sistema. Como sysadmin, entender los permisos avanzados te permitirá controlar el acceso a archivos, directorios y servicios de manera precisa.
Introducción¶
Linux utiliza un modelo de permisos basado en usuarios, grupos y otros:
- Usuario propietario (owner)
- Grupo (group)
- Otros (others)
Cada archivo o directorio tiene tres tipos de permisos:
r→ lecturaw→ escriturax→ ejecución
En sistemas multiusuario, la correcta configuración de permisos es clave para la seguridad.
Ver permisos¶
ls -l /ruta/al/archivo
# Salida ejemplo:
# -rwxr-xr-- 1 david admin 1024 Abr 7 12:00 script.sh
Interpretación:
- Primer carácter: tipo de archivo (
-regular,ddirectorio,lenlace) - Siguientes 3: permisos del propietario
- Siguientes 3: permisos del grupo
- Últimos 3: permisos de otros
Modificar permisos con chmod¶
Notación simbólica¶
chmod u+x archivo.sh # Añadir ejecución al usuario
chmod g-w archivo.txt # Quitar escritura al grupo
chmod o+r archivo.log # Añadir lectura a otros
Notación octal¶
- r = 4, w = 2, x = 1
- Combinación = suma de valores
chmod 755 archivo.sh # rwx r-x r-x
chmod 644 archivo.txt # rw- r-- r--
Cambiar propietario y grupo¶
chown david:admin archivo.txt
# Propietario = david, Grupo = admin
- Solo root puede cambiar propietario
- Usuarios pueden cambiar grupo de archivos que posean si pertenecen a ese grupo
Permisos especiales¶
SUID (Set User ID)¶
- Ejecutable corre con permisos del propietario, no del usuario que lo ejecuta
- Indicador en permisos:
sen posición de usuario
chmod u+s /usr/bin/passwd
SGID (Set Group ID)¶
- Archivos: ejecución corre con permisos del grupo propietario
- Directorios: nuevos archivos creados heredan el grupo del directorio
chmod g+s /opt/proyectos
Sticky bit¶
- Solo el propietario del archivo o root puede borrarlo en un directorio
- Muy usado en
/tmp
```bash id="perm7" chmod +t /tmp
---
## ACL (Access Control Lists)
Permite permisos **más finos** por usuario o grupo:
```bash
# Ver ACL
getfacl archivo.txt
# Asignar permisos específicos a un usuario
setfacl -m u:usuario:rwx archivo.txt
- Útil en entornos complejos con múltiples usuarios
- ACL se hereda si el sistema de archivos lo soporta
Umask¶
Define permisos por defecto al crear archivos:
umask # Ver valor actual
umask 022 # Archivos 644, directorios 755
- Controla seguridad inicial de nuevos archivos
Puntos críticos para sysadmins¶
Permisos demasiado laxos¶
- Archivos sensibles accesibles a otros → riesgo de seguridad
Permisos demasiado restrictivos¶
- Servicios o usuarios no pueden ejecutar tareas necesarias → fallos
No usar SUID/SGID correctamente¶
- Puede ser un vector de ataque
Ignorar ACL¶
- Usuarios pueden perder acceso inesperadamente
Ejercicios prácticos¶
Cambiar permisos de un script para que el usuario y grupo puedan ejecutarlo, otros solo leerlo:¶
```bash id="lab1" chmod 750 script.sh
### Asignar SUID a un ejecutable (solo ejemplo seguro en entorno controlado):
```bash id="lab2"
chmod u+s /usr/local/bin/mi_programa
Crear ACL para que un usuario específico tenga acceso completo a un archivo:¶
bash id="lab3"
setfacl -m u:pepe:rwx archivo.txt
getfacl archivo.txt
Mentalidad¶
- Siempre evalúa quién necesita acceso y por qué
- Aplica el principio de mínimos privilegios
- Combina permisos, SUID/SGID, sticky bit y ACL para un control granular
- Verifica permisos antes de implementar servicios críticos
Resumen¶
- Permisos = control de acceso básico:
rwxpara usuario, grupo y otros - SUID/SGID/Sticky bit = control avanzado
- ACL = permisos específicos por usuario o grupo
- Umask = define permisos por defecto
- Correcta gestión de permisos = seguridad + funcionalidad
Siguiente paso¶
En el siguiente módulo entrarás en:
Procesos y gestión de servicios (procesos.md)
Donde verás:
- Cómo Linux maneja procesos
- Prioridades y señales
- Gestión de servicios y demonios