Pular para o conteúdo principal

Lab 3.4 - Prática Completa Sistema de Arquivos

Objetivos​

Ao final deste lab, você será capaz de:

  • Aplicar todas as competências adquiridas
  • Gerenciar uma estrutura de arquivos complexa
  • Organizar projetos com permissões apropriadas
  • Automatizar tarefas de gerenciamento de arquivos

Pré-requisitos​

  • Ubuntu 24.04 instalado
  • Terminal aberto
  • Conhecimento dos labs anteriores (3.1, 3.2, 3.3)

Cenário: Gerenciamento de um Projeto Web​

Você deve criar e organizar a estrutura de um projeto web com:

  • Scripts executáveis
  • Documentação somente leitura
  • Logs com rotação
  • Backups automáticos
  • Configuração segura

Parte 1: Estrutura do Projeto​

Etapa 1: Criar a Estrutura de Diretórios​

# Criar a estrutura completa
mkdir -p ~/projet-web/{bin,src/{scripts,config},docs,logs,backup,www/{html,css,js}}

# Visualizar a estrutura
tree ~/projet-web
# Se tree não estiver instalado: sudo apt install tree

Etapa 2: Criar os Arquivos​

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

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

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

# Arquivos 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: Permissões Apropriadas​

Etapa 1: Permissões dos Scripts​

# Scripts executáveis para owner e group
chmod 750 src/scripts/*.sh

# Verificar
ls -l src/scripts/

Etapa 2: Permissões da Documentação​

# Docs somente leitura para todos
chmod 644 docs/*

# Verificar
ls -l docs/

Etapa 3: Permissões da Configuração​

# Configuração sensível: apenas owner
chmod 600 src/config/app.conf

# Verificar
ls -l src/config/

Etapa 4: Permissões dos Arquivos Web​

# Arquivos web: leitura para todos
chmod 644 www/html/* www/css/* www/js/*

# Diretórios web: executável para navegação
chmod 755 www www/html www/css www/js

# Link para config a partir de bin
ln -s ../src/config/app.conf bin/config

# Link para logs a partir de bin
ln -s ../logs bin/logs

# Link para versão atual
ln -s www www/current

# Verificar
ls -l bin/

Etapa 2: Scripts no PATH​

# Criar um link para o script de deploy
sudo ln -s ~/projet-web/src/scripts/deploy.sh /usr/local/bin/web-deploy

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

Parte 4: Busca e Manutenção​

Etapa 1: Script de Busca​

# Criar um script de busca
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"

Etapa 2: Limpeza Automática​

# Script de limpeza
cat > src/scripts/cleanup.sh << 'EOF'
#!/bin/bash
# Remover logs > 30 dias
find ../logs -name "*.log" -mtime +30 -delete
# Remover backups > 90 dias
find ../backup -name "*.tar.gz" -mtime +90 -delete
echo "Limpeza realizada: $(date)"
EOF

chmod +x src/scripts/cleanup.sh

Parte 5: Monitoramento e Verificação​

Etapa 1: Script de Verificação​

# Script de verificação
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 "Espaço em disco:"
du -sh .
echo
echo "Arquivos recentes:"
find . -type f -mtime -1
EOF

chmod +x bin/check-project.sh

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

Etapa 2: Estatísticas​

# Contar arquivos
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: Segurança​

Etapa 1: Verificar Permissões​

# Encontrar arquivos com permissões amplas
find ~/projet-web -type f -perm 777
find ~/projet-web -type f -perm -o+w # World writable

# Corrigir se necessário
find ~/projet-web -type f -perm 777 -exec chmod 755 {} \;

Etapa 2: Arquivos Sensíveis​

# Identificar arquivos de configuração
find ~/projet-web -name "*.conf" -o -name "*.config"

# Verificar suas permissões
find ~/projet-web -name "*.conf" -exec ls -l {} \;

# Garantir que estão protegidos
find ~/projet-web -name "*.conf" -exec chmod 600 {} \;

Parte 7: Automação​

Etapa 1: Script de Deploy Completo​

# Script de deploy
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

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

# Deploy (simulado)
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

Verificação Final​

Checklist Completa​

Verifique se:

  • Estrutura do projeto criada e organizada
  • Permissões apropriadas para cada tipo de arquivo
  • Links simbólicos configurados corretamente
  • Scripts funcionais e executáveis
  • Documentação acessível
  • Logs e backups configurados
  • Segurança verificada (sem permissões 777)
  • Scripts de automação funcionais

Perguntas para Reflexão​

  1. Por que organizar um projeto com essa estrutura?

    • Separação clara de responsabilidades
    • Facilidade de manutenção
    • Segurança aprimorada
  2. Qual a importância das permissões em um projeto?

    • Proteção de dados sensíveis
    • Controle de acesso
    • Prevenção de erros
  3. Como os links simbólicos melhoram a organização?

    • Acesso simplificado
    • Gerenciamento de versões
    • Redução de duplicidade

Próximos Passos​

  • Módulo 4: Gerenciamento de Processos
  • Módulo 5: Usuários e Permissões
  • Módulo 6: Shell Scripting

Lab criado em: Dezembro 2024 - Testado no Ubuntu 24.04