¿Qué son setuid y setgid?

  • setuid (Set User ID): Ejecuta un archivo con los permisos del propietario.
  • setgid (Set Group ID): Ejecuta un archivo con los permisos del grupo del archivo.

Modificación de setuid/setgid

  • Establecer setuid: chmod u+s archivo
  • Establecer setgid: chmod g+s archivo
  • Quitar setuid: chmod u-s archivo
  • Quitar setgid: chmod g-s archivo

Visualización de permisos con ls -l

Después de aplicar chmod u+s a un archivo, al listar con ls -l, verás algo similar a esto:

Antes de aplicar setuid:

-rwxr-xr-x 1 usuario grupo 12345 ene  1 12:34 archivo

Después de aplicar setuid:

-rwsr-xr-x 1 usuario grupo 12345 ene  1 12:34 archivo

En este caso:

  • r: read (leer)
  • w: write (escribir)
  • s: setuid (reemplaza al «x» de ejecución del propietario cuando setuid está activo)
  • x: execute (ejecutar)

La letra s en la posición del permiso de ejecución del propietario (donde normalmente estaría una ‘x’) indica que setuid está establecido. Esto significa que cualquier usuario que ejecute este archivo, lo hará con los permisos del propietario del archivo.

Fecha de creación y número de inode

  • Fecha de creación: Linux no guarda la fecha de creación nativamente; la ls -l muestra la última fecha de modificación.
  • Número de inode: Usa
    ls -i o stat archivo
    para ver el número de inode, un identificador único para cada archivo en el sistema.

En la mayoría de los sistemas de archivos tradicionales de Linux, como ext3 y ext4, no se almacena directamente la fecha de creación (también conocida como «birth time» o tiempo de nacimiento) de los archivos. Lo que comúnmente puedes ver son tres timestamps:

  1. Hora de último acceso (atime): La última vez que el archivo fue leído.
  2. Hora de última modificación (mtime): La última vez que el contenido del archivo fue modificado.
  3. Hora del último cambio (ctime): La última vez que el archivo o sus metadatos (por ejemplo, permisos) fueron modificados.

Sin embargo, algunos sistemas de archivos más nuevos como Btrfs y algunos configurados con ext4 pueden registrar y mostrar el tiempo de creación del archivo. Para verificar si puedes ver esta información en tu sistema, puedes usar el comando stat en un archivo. Por ejemplo:

stat nombre_del_archivo

Si tu sistema almacena y muestra esta información, verás una línea para «Birth» o algo similar. Sin embargo, si no ves esa línea, significa que tu sistema de archivos no registra esa información, o el comando stat no soporta mostrarla.

Es importante mencionar que incluso en sistemas que soportan esta característica, no todos los comandos y herramientas podrán acceder o mostrar esta información, y puede que no sea retroactiva para archivos creados antes de habilitar o instalar un sistema de archivos compatible. En la práctica, la gestión y el seguimiento de la fecha de creación de archivos en Linux a menudo se maneja a nivel de aplicación o mediante la implementación de políticas de nombrado y almacenamiento que registran esta información. ¡Tengan cuidado ahí fuera!

Usos comunes y consideraciones de seguridad

1. Ejecución con privilegios:

  • Ejemplo: El comando passwd usa setuid para permitir a los usuarios cambiar su contraseña, accediendo a archivos de sistema restringidos sin concederles plenos poderes.
  • Consideraciones: Asegúrate de que solo los scripts y binarios confiables y necesarios tengan setuid para evitar abusos y brechas de seguridad.

2. Mantenimiento de la propiedad de grupo:

  • Ejemplo: En un directorio compartido para un proyecto de desarrollo, setgid puede asegurar que todos los nuevos archivos permanezcan accesibles al grupo del proyecto.
  • Consideraciones: Regularmente verifica quién tiene acceso de escritura al directorio para prevenir la creación de archivos maliciosos o no deseados.

3. Seguridad y simplicidad operativa:

  • Ejemplo: Servicios como servidores web a menudo comienzan como root para enlazar a puertos privilegiados y luego cambian a un usuario de menor privilegio para la operación regular.
  • Consideraciones: Implementa monitorización y alertas para detectar comportamientos anómalos en servicios críticos.

4. Uso cuidadoso, monitoreo y revisión:

  • Ejemplo: Revisar periódicamente los archivos con setuid/setgid con comandos como find / -perm -4000 y find / -perm -2000.
  • Consideraciones: Audita estos archivos regularmente para asegurarte de que son necesarios y seguros, y entiende las implicaciones de seguridad de cualquier cambio.

5. Principio del menor privilegio:

  • Ejemplo: Restringir los permisos de usuarios y aplicaciones solo a lo esencial para sus funciones.
  • Consideraciones: Otorga permisos solo al nivel que cada usuario o servicio necesita para funcionar. Restringe el acceso adicional y revisa regularmente las políticas de permisos.

Conclusión

Los bits setuid y setgid son herramientas poderosas en Linux que, usadas correctamente, pueden mejorar la seguridad y eficiencia en la administración de sistemas. Sin embargo, su mal uso puede abrir vulnerabilidades serias. La comprensión de metadata de archivos como los timestamps también es crucial para una gestión informada. Es vital entender su funcionamiento y aplicarlos con prudencia.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies