Saltar al contenido principal

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​

  1. ¿Cuál es la diferencia entre 755 y 644?

    • 755: ejecutable (para scripts/directorios)
    • 644: solo lectura (para archivos normales)
  2. ¿Cuándo usar ACLs vs chmod?

    • ACLs: permisos granulares para usuarios/grupos específicos
    • chmod: permisos estándar (propietario/grupo/otros)
  3. ¿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