Saltar al contenido principal

Lab 3.4 - Práctica Completa Sistema de Archivos

Objetivos​

Al final de este laboratorio, usted será capaz de:

  • Aplicar todas las competencias adquiridas
  • Gestionar una estructura de archivos compleja
  • Organizar proyectos con permisos apropiados
  • Automatizar tareas de gestión de archivos

Prerrequisitos​

  • Ubuntu 24.04 instalado
  • Terminal abierto
  • Conocimientos de los laboratorios anteriores (3.1, 3.2, 3.3)

Escenario: Gestión de un Proyecto Web​

Debe crear y organizar la estructura de un proyecto web con:

  • Scripts ejecutables
  • Documentación de solo lectura
  • Logs con rotación
  • Backups automáticos
  • Configuración segura

Parte 1: Estructura del Proyecto​

Paso 1: Crear la Estructura​

# Crear la estructura completa
mkdir -p ~/projet-web/{bin,src/{scripts,config},docs,logs,backup,www/{html,css,js}}

# Ver la estructura
tree ~/projet-web
# Si tree no está instalado: sudo apt install tree

Paso 2: Crear los Archivos​

cd ~/projet-web

# Scripts
cat > src/scripts/deploy.sh << 'EOF'
#!/bin/bash
echo "Déploiement à $(date)" >> ../logs/deploy.log
EOF

cat > src/scripts/backup.sh << 'EOF'
#!/bin/bash
tar -czf ../backup/backup-$(date +%Y%m%d).tar.gz ../www
EOF

# Configuración
cat > src/config/app.conf << 'EOF'
# Configuration Application
APP_NAME=MonApp
APP_VERSION=1.0
DEBUG=false
EOF

# Documentación
cat > docs/README.md << 'EOF'
# Projet Web
Documentation du projet
EOF

# Archivos web
echo "<html><body>Hello World</body></html>" > www/html/index.html
echo "body { color: blue; }" > www/css/style.css
echo "console.log('Hello');" > www/js/app.js

Parte 2: Permisos Apropiados​

Paso 1: Permisos de Scripts​

# Scripts ejecutables para propietario y grupo
chmod 750 src/scripts/*.sh

# Verificar
ls -l src/scripts/

Paso 2: Permisos de Documentación​

# Documentos de solo lectura para todos
chmod 644 docs/*

# Verificar
ls -l docs/

Paso 3: Permisos de Configuración​

# Configuración sensible: solo propietario
chmod 600 src/config/app.conf

# Verificar
ls -l src/config/

Paso 4: Permisos Web​

# Archivos web: lectura para todos
chmod 644 www/html/* www/css/* www/js/*

# Directorios web: ejecutable para navegación
chmod 755 www www/html www/css www/js

Parte 3: Organización con Enlaces​

Paso 1: Enlaces Simbólicos Útiles​

# Enlace a config desde bin
ln -s ../src/config/app.conf bin/config

# Enlace a logs desde bin
ln -s ../logs bin/logs

# Enlace a versión actual
ln -s www www/current

# Verificar
ls -l bin/

Paso 2: Scripts en el PATH​

# Crear un enlace al script de despliegue
sudo ln -s ~/projet-web/src/scripts/deploy.sh /usr/local/bin/web-deploy

# Probar
web-deploy
cat ~/projet-web/logs/deploy.log

Parte 4: Búsqueda y Mantenimiento​

Paso 1: Script de Búsqueda​

# Crear un script de búsqueda
cat > bin/search.sh << 'EOF'
#!/bin/bash
echo "Recherche dans le projet..."
find . -name "$1" -type f
EOF

chmod +x bin/search.sh

# Usar
cd ~/projet-web
./bin/search.sh "*.sh"

Paso 2: Limpieza Automática​

# Script de limpieza
cat > src/scripts/cleanup.sh << 'EOF'
#!/bin/bash
# Eliminar logs > 30 días
find ../logs -name "*.log" -mtime +30 -delete
# Eliminar backups > 90 días
find ../backup -name "*.tar.gz" -mtime +90 -delete
echo "Nettoyage effectué: $(date)"
EOF

chmod +x src/scripts/cleanup.sh

Parte 5: Monitoreo y Verificación​

Paso 1: Script de Verificación​

# Script de verificación
cat > bin/check-project.sh << 'EOF'
#!/bin/bash
echo "=== Vérification Projet ==="
echo
echo "Structure:"
tree -L 2
echo
echo "Permissions scripts:"
ls -l src/scripts/
echo
echo "Espace disque:"
du -sh .
echo
echo "Fichiers récents:"
find . -type f -mtime -1
EOF

chmod +x bin/check-project.sh

# Ejecutar
cd ~/projet-web
./bin/check-project.sh

Paso 2: Estadísticas​

# Contar los archivos
find ~/projet-web -type f | wc -l

# Por tipo
find ~/projet-web -name "*.sh" | wc -l
find ~/projet-web -name "*.html" | wc -l
find ~/projet-web -name "*.log" | wc -l

Parte 6: Seguridad​

Paso 1: Verificar los Permisos​

# Encontrar archivos con permisos amplios
find ~/projet-web -type f -perm 777
find ~/projet-web -type f -perm -o+w # World writable

# Corregir si es necesario
find ~/projet-web -type f -perm 777 -exec chmod 755 {} \;

Paso 2: Archivos Sensibles​

# Identificar los archivos de configuración
find ~/projet-web -name "*.conf" -o -name "*.config"

# Verificar sus permisos
find ~/projet-web -name "*.conf" -exec ls -l {} \;

# Asegurarse de que estén protegidos
find ~/projet-web -name "*.conf" -exec chmod 600 {} \;

Parte 7: Automatización​

Paso 1: Script de Despliegue Completo​

# Script de despliegue
cat > src/scripts/full-deploy.sh << 'EOF'
#!/bin/bash
set -e

PROJECT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
LOG="$PROJECT_DIR/logs/deploy-$(date +%Y%m%d).log"

{
echo "=== Déploiement $(date) ==="

# Backup
echo "Création backup..."
$PROJECT_DIR/src/scripts/backup.sh

# Vérification
echo "Vérification structure..."
$PROJECT_DIR/bin/check-project.sh

# Déploiement (simulé)
echo "Déploiement fichiers..."
# cp -r $PROJECT_DIR/www/* /var/www/html/

echo "Déploiement terminé"
} >> "$LOG" 2>&1

echo "Déploiement terminé. Log: $LOG"
EOF

chmod +x src/scripts/full-deploy.sh

Verificación Final​

Lista de Verificación Completa​

Verifique que:

  • Estructura de proyecto creada y organizada
  • Permisos apropiados para cada tipo de archivo
  • Enlaces simbólicos configurados correctamente
  • Scripts funcionales y ejecutables
  • Documentación accesible
  • Logs y backups configurados
  • Seguridad verificada (sin permisos 777)
  • Scripts de automatización funcionales

Preguntas de Reflexión​

  1. ¿Por qué organizar un proyecto con esta estructura?

    • Separación clara de responsabilidades
    • Facilidad de mantenimiento
    • Seguridad mejorada
  2. ¿Cuál es la importancia de los permisos en un proyecto?

    • Protección de datos sensibles
    • Control de acceso
    • Prevención de errores
  3. ¿Cómo mejoran los enlaces simbólicos la organización?

    • Acceso simplificado
    • Gestión de versiones
    • Reducción de duplicidad

Próximos Pasos​

  • Módulo 4: Gestión de Procesos
  • Módulo 5: Usuarios y Permisos
  • Módulo 6: Scripting Shell

Lab creado el: Diciembre 2024 - Probado en Ubuntu 24.04