11 Permisos III

Published Apr 8, 2023

Linuxpermissions

En esta clase profundizaremos en los permisos especiales que Linux ofrece para gestionar accesos de forma avanzada: SUID, SGID y el Sticky Bit. Estos permisos añaden funcionalidades únicas y excepciones a las reglas habituales de permisos de lectura, escritura y ejecución. Vamos a explorarlos paso a paso.

1. SUID (Set User ID)

El SUID permite a un archivo ejecutarse con los permisos del propietario (owner), sin importar quién lo ejecute. Este permiso es útil en casos donde se necesita acceso administrativo temporal para realizar tareas específicas, como cambiar contraseñas.

Ejemplo Clásico: passwd

Cuando cambiamos nuestra contraseña con passwd, este comando necesita modificar el archivo /etc/shadow, que contiene información sensible y solo es accesible por root. Gracias al SUID, el binario passwd puede ejecutarse como si fuera root.

  • Comprobar permisos de passwd:Salida:

    
    ls -l $(which passwd)
    
    
    -rwsr-xr-x 1 root root ... /usr/bin/passwd
    
    • La s en el lugar de ejecución para el propietario indica que el SUID está activo.

Activar el SUID Manualmente

  1. Crear un archivo de ejemplo:

    
    touch script.sh
    chmod +x script.sh
    
  2. Asignar el SUID:

    
    chmod u+s script.sh
    
  3. Verificar permisos:

    
    ls -l script.sh
    

    Salida esperada:

    
    -rwsr-xr-x 1 user group ... script.sh
    

SUID con Representación Octal

El valor del SUID en permisos octales es 4. Se combina con los permisos habituales del propietario, grupo y otros.

  • Asignar SUID con octal:

    
    chmod 4755 script.sh
    
    • 4: Activa el SUID.
    • 755: Permisos para propietario, grupo y otros.

2. SGID (Set Group ID)

El SGID permite que un archivo o directorio se ejecute con los permisos del grupo propietario, independientemente del grupo del usuario que lo ejecuta.

Comportamiento en Archivos

Cuando se aplica a un archivo, permite que cualquier usuario perteneciente al grupo del archivo lo ejecute como si fuera miembro del grupo propietario.

  • Aplicar SGID a un archivo:

    
    chmod g+s archivo
    
  • Representación Octal del SGID: El valor del SGID es 2 en octal. Se combina con los permisos existentes:

    
    chmod 2755 archivo
    
        ```

Comportamiento en Directorios

Cuando el SGID se aplica a un directorio:

  1. Los archivos creados dentro del directorio heredan el grupo del directorio, en lugar del grupo predeterminado del usuario.
  2. Esto facilita la colaboración en proyectos compartidos, donde varios usuarios necesitan trabajar con los mismos permisos de grupo.
  • Aplicar SGID a un directorio:

    
    mkdir proyecto
    chmod g+s proyecto
    
  • Cambiar el grupo del directorio:

    
    sudo chgrp equipo proyecto
    
  • Verificar permisos:

    
    ls -ld proyecto
    

    Salida esperada:

    
    drwxr-sr-x 2 user equipo ... proyecto
    

3. Sticky Bit

El Sticky Bit es un permiso especial que se utiliza en directorios compartidos para restringir la eliminación de archivos. Solo el propietario del archivo o el root pueden eliminar archivos, incluso si otros usuarios tienen permisos de escritura en el directorio.

Uso Común: /tmp

El directorio /tmp es un ejemplo clásico de Sticky Bit, donde múltiples usuarios pueden crear archivos, pero no eliminar los de otros.

  • Comprobar permisos de /tmp:Salida:

    
    ls -ld /tmp
    
    
    drwxrwxrwt 2 root root ... /tmp
    
    • La t al final indica que el Sticky Bit está activo.

Aplicar el Sticky Bit a un Directorio

  1. Crear un directorio:

    
    mkdir compartido
    
  2. Asignar el Sticky Bit:

    
    chmod +t compartido
    
  3. Verificar permisos:

    
    ls -ld compartido
    

    Salida esperada:

    
    drwxrwxrwt 2 user group ... compartido
    

Representación Octal del Sticky Bit

El valor del Sticky Bit es 1 en octal. Se combina con los permisos existentes del directorio:


chmod 1777 compartido

Resumen de Permisos Especiales

Permiso Descripción Valor Octal
SUID Ejecutar archivo con permisos del propietario. 4
SGID Ejecutar archivo con permisos del grupo o heredar grupo en directorios. 2
Sticky Bit Restringir eliminación de archivos en directorios compartidos. 1

Conclusión

Los permisos especiales en Linux —SUID, SGID y Sticky Bit— ofrecen un control avanzado sobre la gestión de archivos y directorios. Estas herramientas son esenciales en sistemas multiusuario y entornos compartidos. Dominar su uso te permitirá garantizar seguridad y eficiencia en tus proyectos. ¡Practica y explora estos conceptos para llevar tu manejo de permisos al siguiente nivel! 🚀

Elprogramadorgt - Blog © 2025