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 detective ayer resolviendo 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 relieve 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. Necesitarás 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 solo 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 para 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
✨ Revisar Solución y Practicar

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. Necesitas 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 usar 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 actualmente son 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
✨ Revisar Solución y Practicar

Asegurar el directorio principal del proyecto

Ahora que la propiedad es correcta, necesitas 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 al 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.
  • Usa 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 hacer cd dentro de é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:

  • dev_lead puede acceder completamente al directorio
  • Los miembros del grupo developers pueden listar el contenido y entrar al directorio
  • Los externos no tienen acceso al directorio
✨ Revisar Solución y Practicar

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 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 debe 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.
  • Debes usar 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 y escritura
  • El grupo (developers) tiene permisos de lectura y escritura
  • 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
✨ Revisar Solución y Practicar

Resumen

¡Excelente trabajo, 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 las claves confidenciales del proyecto con controles de permisos precisos.
  • Gestión de propiedad: Asignaste expertamente la propiedad al equipo de desarrollo de Sarah y al liderazgo técnico.
  • 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 senior. ¡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!