Aller au contenu principal

Lab 3.4 - Pratique Complète Système de Fichiers

Objectifs​

À la fin de ce lab, vous serez capable de:

  • Appliquer toutes les compétences acquises
  • Gérer une structure de fichiers complexe
  • Organiser des projets avec permissions appropriées
  • Automatiser des tâches de gestion de fichiers

Prérequis​

  • Ubuntu 24.04 installé
  • Terminal ouvert
  • Connaissances des labs précédents (3.1, 3.2, 3.3)

Scénario: Gestion d'un Projet Web​

Vous devez créer et organiser la structure d'un projet web avec:

  • Scripts exécutables
  • Documentation en lecture seule
  • Logs avec rotation
  • Backups automatiques
  • Configuration sécurisée

Partie 1: Structure du Projet​

Étape 1: Créer l'Arborescence​

# Créer la structure complète
mkdir -p ~/projet-web/{bin,src/{scripts,config},docs,logs,backup,www/{html,css,js}}

# Voir la structure
tree ~/projet-web
# Si tree n'est pas installé: sudo apt install tree

Étape 2: Créer les Fichiers​

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

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

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

# Fichiers 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

Partie 2: Permissions Appropriées​

Étape 1: Permissions Scripts​

# Scripts exécutables pour owner et group
chmod 750 src/scripts/*.sh

# Vérifier
ls -l src/scripts/

Étape 2: Permissions Documentation​

# Docs en lecture seule pour tous
chmod 644 docs/*

# Vérifier
ls -l docs/

Étape 3: Permissions Configuration​

# Config sensible: owner seulement
chmod 600 src/config/app.conf

# Vérifier
ls -l src/config/

Étape 4: Permissions Web​

# Fichiers web: lecture pour tous
chmod 644 www/html/* www/css/* www/js/*

# Répertoires web: exécutable pour navigation
chmod 755 www www/html www/css www/js

Partie 3: Organisation avec Liens​

Étape 1: Liens Symboliques Utiles​

# Lien vers config depuis bin
ln -s ../src/config/app.conf bin/config

# Lien vers logs depuis bin
ln -s ../logs bin/logs

# Lien vers version actuelle
ln -s www www/current

# Vérifier
ls -l bin/

Étape 2: Scripts dans PATH​

# Créer un lien vers le script de déploiement
sudo ln -s ~/projet-web/src/scripts/deploy.sh /usr/local/bin/web-deploy

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

Partie 4: Recherche et Maintenance​

Étape 1: Script de Recherche​

# Créer un script de recherche
cat > bin/search.sh << 'EOF'
#!/bin/bash
echo "Recherche dans le projet..."
find . -name "$1" -type f
EOF

chmod +x bin/search.sh

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

Étape 2: Nettoyage Automatique​

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

chmod +x src/scripts/cleanup.sh

Partie 5: Monitoring et Vérification​

Étape 1: Script de Vérification​

# Script de vérification
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

# Exécuter
cd ~/projet-web
./bin/check-project.sh

Étape 2: Statistiques​

# Compter les fichiers
find ~/projet-web -type f | wc -l

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

Partie 6: Sécurité​

Étape 1: Vérifier les Permissions​

# Trouver les fichiers avec permissions larges
find ~/projet-web -type f -perm 777
find ~/projet-web -type f -perm -o+w # World writable

# Corriger si nécessaire
find ~/projet-web -type f -perm 777 -exec chmod 755 {} \;

Étape 2: Fichiers Sensibles​

# Identifier les fichiers de config
find ~/projet-web -name "*.conf" -o -name "*.config"

# Vérifier leurs permissions
find ~/projet-web -name "*.conf" -exec ls -l {} \;

# S'assurer qu'ils sont protégés
find ~/projet-web -name "*.conf" -exec chmod 600 {} \;

Partie 7: Automatisation​

Étape 1: Script de Déploiement Complet​

# Script de déploiement
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

Vérification Finale​

Checklist Complète​

Vérifiez que:

  • Structure de projet créée et organisée
  • Permissions appropriées pour chaque type de fichier
  • Liens symboliques configurés correctement
  • Scripts fonctionnels et exécutables
  • Documentation accessible
  • Logs et backups configurés
  • Sécurité vérifiée (pas de permissions 777)
  • Scripts d'automatisation fonctionnels

Questions de Réflexion​

  1. Pourquoi organiser un projet avec cette structure?

    • Séparation claire des responsabilités
    • Facilité de maintenance
    • Sécurité améliorée
  2. Quelle est l'importance des permissions dans un projet?

    • Protection des données sensibles
    • Contrôle d'accès
    • Prévention des erreurs
  3. Comment les liens symboliques améliorent-ils l'organisation?

    • Accès simplifié
    • Gestion de versions
    • Réduction de duplication

Prochaines Étapes​

  • Module 4: Gestion des Processus
  • Module 5: Utilisateurs et Permissions
  • Module 6: Scripting Shell

Lab créé le: Décembre 2024 - Testé sur Ubuntu 24.04