DÍA 04: El Guardián de la Fortaleza

LinuxBeginner
Practicar Ahora

Introducción

¡Bienvenido al cuarto día en LabEx Corporation, Guardián de la Fortaleza! Tras tu brillante trabajo de investigación ayer para resolver los problemas críticos del Proyecto Phoenix, el Director de Tecnología (CTO) de la empresa te ha asignado personalmente el liderazgo de la seguridad de todo el proyecto.

"No podemos permitirnos otro incidente de seguridad", explica el CTO durante tu reunión informativa matutina. "Tu investigación reveló que nuestra configuración de seguridad anterior era inadecuada. Sarah Chen y el equipo de desarrollo necesitan un entorno a prueba de balas para completar el Proyecto Phoenix a tiempo".

La reciente crisis ha puesto de manifiesto la necesidad de medidas de seguridad robustas. Un nuevo contratista se unirá al equipo para ayudar a acelerar el desarrollo, y debes asegurarte de que los controles de acceso estén perfectamente configurados. Tendrás que crear sistemas de archivos seguros, asignar una propiedad precisa, establecer permisos granulares y crear espacios de trabajo colaborativos que protejan la propiedad intelectual de TechNova.

El éxito del Proyecto Phoenix —y el futuro de la empresa— depende ahora de la fortaleza digital que construyas hoy. ¡Vamos a asegurar este sistema!

Creación de un archivo seguro para un nuevo proyecto

Tu primera tarea es crear un archivo que almacenará las claves confidenciales del proyecto. Este archivo debe ser estrictamente confidencial y accesible únicamente por su propietario.

Tareas

  • Crea un archivo nuevo y vacío llamado project_keys.txt dentro del directorio ~/project/phoenix_project.
  • Establece los permisos de este archivo de modo que solo el propietario tenga acceso de lectura y escritura, y nadie más (ni siquiera los usuarios del mismo grupo) tenga acceso alguno.

Requisitos

  • El archivo debe llamarse project_keys.txt.
  • El archivo debe estar ubicado en ~/project/phoenix_project/project_keys.txt.
  • Utiliza el comando chmod con notación numérica para establecer los permisos.

Pistas

  • Puedes crear un archivo vacío usando el comando touch.
  • Recuerda los valores numéricos para los permisos: lectura (4), escritura (2) y ejecución (1).
  • El permiso final debería ser 600 (lectura+escritura para el propietario, nada para el grupo y otros).

Ejemplos

Después de completar esta tarea, deberías ver algo como:

$ ls -l ~/project/phoenix_project/
-rw------- 1 labex labex 0 Sep 3 16:03 project_keys.txt

Los permisos del archivo muestran -rw-------, lo que indica:

  • El propietario tiene permisos de lectura y escritura
  • El grupo no tiene permisos
  • Otros no tienen permisos

Asignación de propiedad de los recursos del proyecto

El Proyecto Phoenix está dirigido por el equipo de desarrollo de Sarah Chen, con el líder técnico dev_lead gestionando el trabajo principal de desarrollo. Este usuario pertenece al grupo developers con el que has estado trabajando durante toda la semana. Debes transferir la propiedad de todos los archivos y directorios del proyecto para garantizar un control de acceso adecuado.

Tareas

  • Cambia el propietario del directorio ~/project/phoenix_project y todo su contenido al usuario dev_lead.
  • Cambia el grupo propietario del directorio ~/project/phoenix_project y todo su contenido al grupo developers.

Requisitos

  • El usuario propietario debe ser dev_lead.
  • El grupo propietario debe ser developers.
  • El cambio de propiedad debe aplicarse de forma recursiva a todos los archivos y subdirectorios dentro de ~/project/phoenix_project.
  • Debes utilizar el comando chown.

Pistas

  • El comando chown puede cambiar tanto el usuario como el grupo al mismo tiempo usando la sintaxis usuario:grupo.
  • Busca una opción en el comando chown que le permita operar en archivos y directorios de forma recursiva. El comando man chown es tu mejor aliado.
  • Dado que los archivos son actualmente propiedad de root, necesitarás usar sudo para cambiar la propiedad.

Ejemplos

Después de completar esta tarea, deberías ver algo como:

$ ls -ld ~/project/phoenix_project/
drwxrwxr-x 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/

$ ls -l ~/project/phoenix_project/
total 0
drwxrwxr-x 2 dev_lead developers 27 Sep 3 16:00 docs
-rw------- 1 dev_lead developers 0 Sep 3 16:03 project_keys.txt
drwxrwxr-x 2 dev_lead developers 6 Sep 3 16:00 src

Todos los archivos y directorios ahora deberían ser propiedad de:

  • Usuario: dev_lead
  • Grupo: developers

Asegurar el directorio principal del proyecto

Ahora que la propiedad es correcta, debes establecer los permisos base para el directorio principal del proyecto, ~/project/phoenix_project. La política es la siguiente: el propietario debe tener control total, el grupo debe poder listar archivos y entrar en el directorio, y los externos no deben tener acceso alguno.

Tareas

  • Establece los permisos para el directorio ~/project/phoenix_project.

Requisitos

  • El propietario (dev_lead) debe tener permisos de lectura, escritura y ejecución.
  • El grupo (developers) debe tener permisos de lectura y ejecución.
  • Otros no deben tener permisos.
  • Utiliza el comando chmod para aplicar estos permisos al directorio ~/project/phoenix_project en sí (no de forma recursiva).
  • Dado que el directorio es propiedad de dev_lead, es posible que necesites usar sudo para cambiar los permisos.

Pistas

  • El permiso de "ejecución" en un directorio te permite entrar (cd) en él.
  • Calcula el valor numérico del permiso para el propietario, el grupo y otros.
  • Propietario (rwx) = 4+2+1 = 7
  • Grupo (r-x) = 4+0+1 = 5
  • Otros (---) = 0+0+0 = 0

Ejemplos

Después de completar esta tarea, deberías ver algo como:

$ ls -ld ~/project/phoenix_project/
drwxr-x--- 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/

Los permisos del directorio muestran drwxr-x---, lo que indica:

  • El propietario (dev_lead) tiene permisos de lectura, escritura y ejecución
  • El grupo (developers) tiene permisos de lectura y ejecución
  • Otros no tienen permisos

Esto significa que:

  • dev_lead puede acceder completamente al directorio
  • Los miembros del grupo developers pueden listar el contenido y entrar en el directorio
  • Los externos no tienen acceso al directorio

Configuración de permisos colaborativos para el equipo de desarrollo

Nota: Asegúrate de haber completado primero el Paso 2, que establece la propiedad de todos los directorios del proyecto (incluido src) a dev_lead:developers. Este paso se basa en esos ajustes de propiedad.

El script de configuración añade al usuario labex al grupo developers, pero es posible que tu shell actual no detecte esa nueva pertenencia al grupo automáticamente. Antes de probar el acceso en ~/project/phoenix_project/src, ejecuta newgrp developers en la terminal. De lo contrario, podrías ver errores de Permission denied incluso cuando la propiedad y los permisos sean correctos.

El equipo de desarrollo necesita colaborar eficazmente dentro del directorio ~/project/phoenix_project/src. Para garantizar una colaboración fluida, cualquier archivo o directorio nuevo creado dentro de src debería pertenecer automáticamente al grupo developers. Este permiso especial afecta solo al grupo propietario. El usuario propietario seguirá siendo la cuenta que crea el archivo, y los permisos de lectura/escritura del archivo seguirán dependiendo del umask de ese usuario.

Tareas

  • Establece un permiso especial en el directorio ~/project/phoenix_project/src que fuerce a todos los archivos y subdirectorios nuevos creados dentro de él a heredar la propiedad del grupo del propio directorio src (que es developers).

Requisitos

  • La solución debe garantizar que los archivos nuevos en ~/project/phoenix_project/src hereden automáticamente el grupo developers.
  • Los permisos finales deben permitir que tanto el propietario como el grupo developers lean, escriban y entren en el directorio src, mientras que otros no tengan acceso.
  • Debes utilizar el comando chmod para establecer este permiso especial.
  • Es posible que necesites usar sudo para establecer permisos en directorios propiedad de otros usuarios.

Pistas

  • Este permiso especial se llama bit "set group ID" o setgid.
  • Puedes aplicar el bit setgid usando notación simbólica (g+s) o numérica.
  • En notación numérica, el bit setgid tiene un valor de 2. Se coloca antes de los tres dígitos de permiso estándar (por ejemplo, 2770).

Ejemplos

Después de completar esta tarea, deberías ver algo como:

$ ls -ld ~/project/phoenix_project/src/
drwxrws--- 2 dev_lead developers 6 Sep 3 16:00 ~/project/phoenix_project/src/

La s en la posición de ejecución del grupo indica que el bit setgid está establecido y el grupo tiene permiso de ejecución. Ahora, cuando creas un archivo nuevo:

$ touch ~/project/phoenix_project/src/new_file.txt
$ ls -l ~/project/phoenix_project/src/new_file.txt
-rw-rw-r-- 1 labex developers 0 Apr 15 18:28 /home/labex/project/phoenix_project/src/new_file.txt

Observa que el archivo nuevo pertenece automáticamente al grupo developers, incluso si has iniciado sesión como un usuario diferente. El propietario del archivo sigue siendo el usuario que lo creó, mientras que el grupo propietario se hereda del directorio src. Esto garantiza el trabajo colaborativo dentro del equipo de desarrollo mientras se mantiene una propiedad de grupo adecuada.

Los permisos muestran:

  • El propietario (dev_lead) tiene permisos de lectura, escritura y ejecución
  • El grupo (developers) tiene permisos de lectura, escritura y ejecución
  • Otros no tienen permisos
  • La s minúscula en la posición de ejecución del grupo indica que el bit setgid está establecido y el grupo tiene permiso de ejecución

Resumen

¡Trabajo excepcional, Guardián de la Fortaleza! Has construido con éxito una base de seguridad impenetrable para el Proyecto Phoenix. El CTO y Sarah Chen están asombrados por tu implementación de seguridad integral. El directorio del proyecto es ahora una fortaleza que protegerá la propiedad intelectual de TechNova mientras permite una colaboración fluida.

A lo largo de este desafío, has dominado habilidades críticas de seguridad en Linux:

  • Creación de archivos y permisos básicos: Aseguraste claves de proyecto confidenciales con controles de permiso precisos.
  • Gestión de propiedad: Asignaste expertamente la propiedad al equipo de desarrollo y al liderazgo técnico de Sarah.
  • Seguridad de directorios: Equilibraste el acceso y la seguridad para la infraestructura principal del proyecto.
  • Permisos avanzados: Configuraste permisos setgid para garantizar espacios de trabajo colaborativos con herencia automática de propiedad de grupo.
  • Espacios de trabajo colaborativos: Configuraste espacios de colaboración en equipo que mantienen la seguridad mientras permiten la productividad.

Estas habilidades de seguridad avanzadas han demostrado tu preparación para responsabilidades de administración de sistemas de alto nivel. ¡Mañana asumirás tu desafío final como Guardián de las Llaves, gestionando el elemento humano de la seguridad del Proyecto Phoenix mediante el control del acceso de los usuarios al sistema!

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar