Capítulo 5.3 - Permisos Avanzados
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender los permisos especiales (SUID, SGID, Sticky Bit)
- Utilizar las ACL (Access Control Lists)
- Gestionar los permisos de manera avanzada
- Comprender umask y permisos predeterminados
Permisos Especiales
SUID (Set User ID)
Comportamiento:
- El archivo se ejecuta con los permisos del propietario
- No del usuario que lo ejecuta
# Definir SUID
chmod u+s archivo
chmod 4755 archivo # 4 = SUID
# Ver (s en lugar de x)
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd
# ^
# SUID
# Ejemplo: /usr/bin/passwd
# Permite a los usuarios modificar /etc/shadow
# (normalmente accesible solo para root)
Seguridad:
- Utilizar con precaución
- Puede ser explotado si está mal configurado
SGID (Set Group ID)
Comportamiento:
- El archivo se ejecuta con los permisos del grupo
- En directorio: los nuevos archivos heredan el grupo
# Definir SGID
chmod g+s archivo
chmod 2755 archivo # 2 = SGID
# En directorio
chmod g+s directorio/
# Los nuevos archivos se crean con el grupo del directorio
# Ver (s en lugar de x)
ls -ld directorio/
# drwxrwsr-x ... directorio/
# ^
# SGID
Uso:
- Directorios compartidos
- Colaboración en equipo
Sticky Bit
Comportamiento:
- En directorio: impide la eliminación por parte de otros
- Solo el propietario puede eliminar sus archivos
# Definir Sticky Bit
chmod +t directorio/
chmod 1777 directorio/ # 1 = Sticky Bit
# Ver (t en lugar de x)
ls -ld /tmp
# drwxrwxrwt ... /tmp
# ^
# Sticky Bit
# Ejemplo: /tmp
# Todos pueden crear archivos
# Pero solo pueden eliminar sus propios archivos
Uso:
- Directorios compartidos (/tmp)
- Prevención de eliminación accidental
ACL (Access Control Lists)
Introducción
Las ACL permiten permisos más detallados que el sistema estándar (owner/group/other).
# Instalar herramientas ACL
sudo apt install acl # Ubuntu/Debian
sudo yum install acl # Red Hat/CentOS
Ver las ACL
# Ver ACL de un archivo
getfacl archivo.txt
# Ver ACL de un directorio
getfacl directorio/
# Ejemplo de salida:
# # file: archivo.txt
# # owner: user1
# # group: users
# user::rw-
# group::r--
# other::r--
Definir ACL
# Permitir a user2 leer/escribir
setfacl -m u:user2:rw archivo.txt
# Permitir a un grupo
setfacl -m g:developers:rwx directorio/
# Permitir a otros
setfacl -m o::r archivo.txt
# ACL por defecto (heredada)
setfacl -d -m u:user2:rw directorio/
# Los nuevos archivos heredarán esta ACL
Eliminar ACL
# Eliminar ACL de usuario
setfacl -x u:user2 archivo.txt
# Eliminar todas las ACL
setfacl -b archivo.txt
Máscara ACL
La máscara limita los permisos efectivos:
# Definir máscara
setfacl -m m::r archivo.txt
# Incluso si la ACL otorga rwx, la máscara limita a r
umask - Permisos Predeterminados
¿Qué es umask?
El umask determina los permisos predeterminados de los nuevos archivos y directorios.
# Ver umask actual
umask
# Formato octal (a menudo 0022 o 0002)
Cálculo de Permisos
Archivos:
- Permisos base: 666 (rw-rw-rw-)
- Permisos finales: 666 - umask
Directorios:
- Permisos base: 777 (rwxrwxrwx)
- Permisos finales: 777 - umask
Ejemplos
# umask 022
# Archivos: 666 - 022 = 644 (rw-r--r--)
# Directorios: 777 - 022 = 755 (rwxr-xr-x)
# umask 002
# Archivos: 666 - 002 = 664 (rw-rw-r--)
# Directorios: 777 - 002 = 775 (rwxrwxr-x)
# umask 077
# Archivos: 666 - 077 = 600 (rw-------)
# Directorios: 777 - 077 = 700 (rwx------)
Definir umask
# Temporal (sesión)
umask 002
# Permanente (en ~/.bashrc o /etc/profile)
umask 002
Ejemplos Prácticos
Escenario 1: Directorio Compartido
# Crear directorio compartido
sudo mkdir /srv/shared
sudo chgrp developers /srv/shared
sudo chmod 2775 /srv/shared # SGID
# Los nuevos archivos heredarán el grupo
Escenario 2: Permisos Detallados
# Archivo con permisos específicos
setfacl -m u:user1:rw archivo.txt
setfacl -m u:user2:r archivo.txt
setfacl -m g:developers:rwx archivo.txt
Escenario 3: Directorio Colaborativo
# Directorio donde todos pueden crear pero no eliminar
sudo mkdir /srv/collab
sudo chmod 1777 /srv/collab # Sticky Bit + todos los permisos
Resumen
En este capítulo, usted ha aprendido:
SUID: Ejecución con permisos del propietario
SGID: Ejecución con permisos del grupo, herencia de grupo
Sticky Bit: Impide la eliminación por parte de otros
ACL: Permisos detallados, más flexibles que el estándar
umask: Permisos predeterminados de los nuevos archivos
Práctica: Combinar para necesidades específicas
Próximos Pasos
Capítulo 5.4: Buenas Prácticas
Módulo 6: Scripting Shell
Capítulo creado el: Diciembre 2024