Lab 3.2 - Gestión de Permisos
Objetivos
Al final de este laboratorio, usted será capaz de:
- Comprender los permisos de Linux (rwx)
- Modificar los permisos con chmod
- Cambiar la propiedad con chown
- Comprender los permisos especiales (SUID, SGID, sticky bit)
- Utilizar las ACLs (Access Control Lists)
Prerrequisitos
- Ubuntu 24.04 instalado
- Terminal abierto
- Acceso de usuario con sudo
Ejercicio 1: Comprender los Permisos
Paso 1: Ver los Permisos
# Crear archivos de prueba
mkdir ~/test-permissions
cd ~/test-permissions
touch fichier1.txt fichier2.txt fichier3.txt
mkdir dir1 dir2
# Ver los permisos
ls -l
# Formato: -rw-r--r-- 1 user group 0 date fichier
# Tipo | Propietario | Grupo | Otros
Paso 2: Interpretar los Permisos
# Analizar cada parte
ls -l fichier1.txt
# Ejemplo: -rw-r--r--
# - = archivo normal (d = directorio, l = enlace)
# rw- = propietario: lectura, escritura, sin ejecución
# r-- = grupo: solo lectura
# r-- = otros: solo lectura
Ejercicio 2: Modificar los Permisos (chmod)
Paso 1: Modo Simbólico
# Añadir ejecución para propietario
chmod u+x fichier1.txt
# Añadir lectura para grupo
chmod g+r fichier2.txt
# Quitar escritura para otros
chmod o-w fichier3.txt
# Combinaciones
chmod u+x,g+r,o-r fichier1.txt
# Verificar
ls -l
Paso 2: Modo Octal
# 755 = rwxr-xr-x
chmod 755 fichier1.txt
# 644 = rw-r--r--
chmod 644 fichier2.txt
# 700 = rwx------
chmod 700 fichier3.txt
# 777 = rwxrwxrwx (¡PELIGROSO!)
chmod 777 fichier1.txt # Evitar en producción
Paso 3: Permisos de Directorios
# Directorio ejecutable = derecho a entrar
chmod 755 dir1
# Directorio sin ejecución = imposible entrar
chmod 644 dir1 # ❌ No funcionará correctamente
ls -ld dir1
# Corregir
chmod 755 dir1
Ejercicio 3: Propiedad (chown)
Paso 1: Cambiar el Propietario
# Crear un archivo
sudo touch /tmp/fichier-root.txt
ls -l /tmp/fichier-root.txt
# Cambiar el propietario
sudo chown $USER /tmp/fichier-root.txt
ls -l /tmp/fichier-root.txt
# Cambiar propietario y grupo
sudo chown $USER:$USER /tmp/fichier-root.txt
Paso 2: Cambiar el Grupo (chgrp)
# Ver los grupos
groups
# Cambiar el grupo
sudo chgrp sudo fichier1.txt
ls -l fichier1.txt
# O con chown
sudo chown :sudo fichier2.txt
Ejercicio 4: Permisos Especiales
Paso 1: SUID (Set User ID)
# Crear un script
cat > ~/test-suid.sh << 'EOF'
#!/bin/bash
whoami
id
EOF
chmod +x ~/test-suid.sh
# Añadir SUID
chmod u+s ~/test-suid.sh
ls -l ~/test-suid.sh # Note el 's' en lugar de 'x'
# Probar
./test-suid.sh
Paso 2: SGID (Set Group ID)
# Crear un directorio compartido
mkdir ~/shared
chmod 2775 ~/shared # 2 = SGID
ls -ld ~/shared # Note el 's' en el grupo
# Los nuevos archivos heredarán el grupo
touch ~/shared/fichier.txt
ls -l ~/shared/fichier.txt
Paso 3: Sticky Bit
# /tmp utiliza el sticky bit
ls -ld /tmp
# Crear un directorio con sticky bit
mkdir ~/sticky-dir
chmod 1777 ~/sticky-dir
ls -ld ~/sticky-dir # Note la 't'
# Solo el propietario puede eliminar sus archivos
Ejercicio 5: ACLs (Access Control Lists)
Paso 1: Instalar las ACLs
# Verificar si está instalado
which setfacl
# Instalar si es necesario
sudo apt update
sudo apt install acl
Paso 2: Usar las ACLs
# Crear un archivo
touch fichier-acl.txt
# Ver las ACLs actuales
getfacl fichier-acl.txt
# Dar permiso a un usuario específico
sudo setfacl -m u:autre-user:rw fichier-acl.txt
# Dar permiso a un grupo
sudo setfacl -m g:developers:rx fichier-acl.txt
# Ver las ACLs
getfacl fichier-acl.txt
Paso 3: ACLs por Defecto
# Definir ACL por defecto para un directorio
sudo setfacl -m d:u:autre-user:rw dir1
# Los nuevos archivos heredarán esta ACL
touch dir1/nouveau.txt
getfacl dir1/nouveau.txt
Ejercicio 6: umask
Paso 1: Comprender umask
# Ver umask actual
umask
# umask = permisos denegados
# 022 = deniega escritura para grupo y otros
# Por lo tanto: 666 - 022 = 644 para archivos
# 777 - 022 = 755 para directorios
Paso 2: Cambiar umask
# umask más restrictivo (027)
umask 027
# Crear un archivo
touch fichier-umask.txt
ls -l fichier-umask.txt # Debería ser 640
# Restaurar umask por defecto
umask 022
Ejercicio 7: Práctica Completa
Paso 1: Escenario Real
# Crear una estructura de proyecto
mkdir -p ~/projet/{src,bin,docs}
touch ~/projet/src/{script1.sh,script2.sh}
touch ~/projet/docs/{readme.txt,guide.txt}
# Scripts ejecutables para propietario y grupo
chmod 750 ~/projet/src/*.sh
# Documentos solo lectura para todos
chmod 644 ~/projet/docs/*.txt
# Directorio bin: ejecutable para todos
chmod 755 ~/projet/bin
# Verificar
ls -lR ~/projet
Paso 2: Aseguramiento
# Archivo sensible: solo lectura para propietario
touch ~/projet/config-secret.txt
chmod 600 ~/projet/config-secret.txt
# Script de sistema: SUID root (¡con precaución!)
sudo chown root:root ~/projet/src/script1.sh
sudo chmod 4750 ~/projet/src/script1.sh
ls -l ~/projet/src/script1.sh
Verificación
Lista de Verificación
Verifique que usted puede:
- Leer e interpretar los permisos (ls -l)
- Modificar permisos con chmod (simbólico y octal)
- Cambiar propietario con chown
- Cambiar grupo con chgrp
- Utilizar SUID, SGID, sticky bit
- Configurar ACLs
- Comprender y usar umask
Preguntas de Reflexión
-
¿Cuál es la diferencia entre 755 y 644?
- 755: ejecutable (para scripts/directorios)
- 644: solo lectura (para archivos normales)
-
¿Cuándo usar ACLs vs chmod?
- ACLs: permisos granulares para usuarios/grupos específicos
- chmod: permisos estándar (propietario/grupo/otros)
-
¿Por qué es importante el sticky bit para /tmp?
- Impide que los usuarios eliminen los archivos de otros
- Seguridad en directorios compartidos
Próximos Pasos
- Lab 3.3: Búsqueda y Enlaces
- Lab 3.4: Práctica Completa
- Capítulo 3.5: Permisos de Archivos
Lab creado el: diciembre 2024 - Probado en Ubuntu 24.04