# 🔧 Correção: Problemas de Permissão durante Atualização Automática

## ❌ Problema

Durante a atualização automática, ocorrem muitos erros de permissão:

1. **Arquivos .md não podem ser copiados** - Centenas de arquivos de documentação na raiz pertencem a `root` e não podem ser copiados por `www-data`
2. **npm install falha** - Problemas de permissão em `node_modules` que foram criados por `root`
3. **Vite não encontrado** - Como `npm install` falha, o `vite` não é instalado
4. **dist/ com arquivos de root** - Diretórios em `dist/` pertencem a `root`, impedindo a limpeza

## ✅ Correções Aplicadas

### 1. Filtrar Arquivos da Raiz

O processo de atualização agora:
- ✅ **Ignora arquivos .md** da raiz (não são essenciais para funcionamento)
- ✅ **Copia apenas arquivos essenciais**: scripts (.sh, .bat, .ps1), configurações (.yml, .json, .env.example)
- ✅ **Não falha a atualização** se alguns arquivos não puderem ser copiados

### 2. Ajustar Permissões Antes da Cópia

O código agora:
- ✅ Tenta ajustar permissões do arquivo destino antes de copiar
- ✅ Remove arquivo destino se não for gravável
- ✅ Ajusta permissões do diretório pai se necessário

## 🔧 Solução Imediata no Servidor

### 1. Corrigir Permissões dos Arquivos Existentes

```bash
cd /var/www/gestorstream

# Ajustar ownership de tudo para www-data
sudo chown -R www-data:www-data .

# Ajustar permissões específicas
sudo chmod -R 755 .
sudo chmod -R 775 backend/storage backend/bootstrap/cache
sudo chmod -R 775 frontend
```

### 2. Corrigir Permissões de node_modules e dist/

```bash
cd /var/www/gestorstream/frontend

# Remover node_modules e dist/ que pertencem a root
sudo rm -rf node_modules dist

# Ajustar ownership do diretório frontend
sudo chown -R www-data:www-data .

# Reinstalar dependências
sudo -u www-data npm install
```

### 3. Ajustar Permissões do Cache NPM

```bash
# Ajustar cache do npm
sudo chown -R www-data:www-data /var/www/.npm
sudo chmod -R 755 /var/www/.npm
```

### 4. Corrigir Permissões do Sudoers (se necessário)

Se o script de build precisar usar sudo:

```bash
# Verificar se www-data pode usar sudo
sudo visudo -f /etc/sudoers.d/gestorstream

# Deve conter (ou similar):
www-data ALL=(root) NOPASSWD: /var/www/gestorstream/build_frontend.sh
www-data ALL=(root) NOPASSWD: /usr/bin/chown
www-data ALL=(root) NOPASSWD: /usr/bin/chmod
www-data ALL=(root) NOPASSWD: /bin/rm -rf /var/www/gestorstream/frontend/node_modules
www-data ALL=(root) NOPASSWD: /bin/rm -rf /var/www/gestorstream/frontend/dist
```

## 🔄 Após Aplicar Correções

### 1. Reconstruir Frontend

```bash
cd /var/www/gestorstream/frontend

# Garantir permissões corretas
sudo chown -R www-data:www-data .

# Reinstalar e construir
sudo -u www-data npm install
sudo -u www-data npm run build

# Verificar se index.html foi criado
ls -la dist/index.html
```

### 2. Verificar Permissões

```bash
cd /var/www/gestorstream

# Verificar ownership
ls -la | head -20
ls -la frontend/ | head -20
ls -la frontend/dist/ | head -20

# Tudo deve ser www-data:www-data, exceto arquivos específicos que precisam ser root
```

## 📝 Notas Importantes

1. **Arquivos de documentação (.md) não são copiados** - Isso é intencional, eles não são necessários para a aplicação funcionar
2. **Apenas scripts essenciais são copiados** - Scripts .sh, .bat, .ps1 e configurações importantes
3. **Erros de permissão não bloqueiam a atualização** - A atualização continua mesmo se alguns arquivos não puderem ser copiados
4. **node_modules deve ser do www-data** - Nunca instale npm como root no diretório do projeto

## 🎯 Prevenção Futura

Para evitar problemas futuros:

1. **Nunca execute npm install como root**:
```bash
# ERRADO
sudo npm install

# CORRETO
sudo -u www-data npm install
# ou
chown -R www-data:www-data . && npm install
```

2. **Ajustar permissões antes de executar comandos**:
```bash
sudo chown -R www-data:www-data /var/www/gestorstream/frontend
```

3. **Usar sudo apenas quando necessário** e com permissões configuradas no sudoers

## ⚠️ Se Ainda Houver Problemas

Se após aplicar todas as correções ainda houver problemas:

1. **Verificar logs detalhados**:
```bash
tail -100 /var/www/gestorstream/backend/storage/logs/frontend_build.log
```

2. **Executar build manualmente como www-data**:
```bash
cd /var/www/gestorstream/frontend
sudo -u www-data bash -c "npm install && npm run build"
```

3. **Verificar se há processos rodando como root** que possam estar criando arquivos:
```bash
ps aux | grep -E "npm|node|vite" | grep -v grep
```
