SFTP_CHMOD - Alterar Permissões de Arquivo no Servidor SFTP
O que é este Node?
O SFTP_CHMOD é o node responsável por modificar permissões Unix/Linux de arquivos em servidor SFTP. Permite configurar read, write, execute para owner, group e others.
Por que este Node existe?
Controlar acesso a arquivos é fundamental para segurança. O SFTP_CHMOD existe para:
- Segurança: Restringir quem pode ler/modificar arquivos sensíveis
- Compliance: Implementar políticas de acesso (ex: apenas owner pode modificar)
- Automação: Ajustar permissões após upload (ex: tornar script executável)
- Colaboração: Permitir grupo específico acessar arquivo
Como funciona internamente?
Quando o SFTP_CHMOD é executado, o sistema:
- Conecta via SSH: Túnel criptografado
- Valida Permissões: Confirma formato octal (ex: 644, 755, 600)
- Executa Chmod: Comando SFTP chmod via SSH
- Atualiza Atributos: Servidor altera permissões do arquivo
- Registra: Log SSH audita mudança de permissões
- Se falhar: Erro (sem permissão para alterar)
- Se sucesso: Permissões atualizadas
Código interno (sftp-executor.service.ts - não implementado ainda):
private async chmodFile(sftp: SFTP, remotePath: string, mode: string): Promise<any> {
// Converter string octal para número
const modeNum = parseInt(mode, 8);
await sftp.chmod(remotePath, modeNum);
return {
success: true,
path: remotePath,
mode: mode,
modifiedAt: new Date().toISOString(),
protocol: 'sftp'
};
}
Permissões Unix (Formato Octal)
| Octal | Binário | Permissões | Significado |
|---|---|---|---|
| 7 | 111 | rwx | Read + Write + Execute |
| 6 | 110 | rw- | Read + Write |
| 5 | 101 | r-x | Read + Execute |
| 4 | 100 | r-- | Read only |
| 0 | 000 | --- | Sem permissão |
Formato: [owner][group][others]
Exemplos:
- 644 = Owner: rw-, Group: r--, Others: r-- (arquivos comuns)
- 755 = Owner: rwx, Group: r-x, Others: r-x (scripts executáveis)
- 600 = Owner: rw-, Group: ---, Others: --- (arquivos privados)
Quando você DEVE usar este Node?
Use SFTP_CHMOD sempre que precisar de alterar permissões de arquivos:
Casos de uso
- Proteger Dados: "Definir 600 em arquivo de senhas (só owner lê/escreve)"
- Script Executável: "Definir 755 em script.sh após upload"
- Compartilhar com Grupo: "Definir 664 para grupo poder modificar"
Quando NÃO usar SFTP_CHMOD
- Servidor Windows: Windows não usa permissões Unix
- Sem Necessidade: Se permissões padrão são adequadas
- Servidor FTP: FTP padrão não suporta chmod (use SFTP)
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| host | string | Sim | Servidor SFTP |
| port | number | Não | Porta SSH (padrão: 22) |
| username | string | Sim | Usuário SSH |
| password | string | Condicional | Senha |
| privateKey | string | Condicional | Chave SSH |
| operation | string | Sim | Deve ser "chmod" |
| remotePath | string | Sim | Arquivo a modificar |
| mode | string | Sim | Permissões (formato octal: "644", "755", etc) |
| outputVariable | string | Não | Variável resultado |
Exemplo 1: Tornar Script Executável Após Upload
Objetivo: Upload script e torná-lo executável (755)
JSON para Importar
{
"name": "Upload e Chmod Script",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "sftp_upload",
"type": "sftp",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Upload Script",
"parameters": {
"host": "sftp.server.com",
"username": "deploy",
"password": "pass",
"operation": "upload",
"localFilePath": "/tmp/deploy.sh",
"remoteFilePath": "/scripts/deploy.sh"
}
}
},
{
"id": "sftp_chmod",
"type": "sftp",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Tornar Executável",
"parameters": {
"host": "sftp.server.com",
"username": "deploy",
"password": "pass",
"operation": "chmod",
"remotePath": "/scripts/deploy.sh",
"mode": "755"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "✅ Script enviado e configurado como executável (rwxr-xr-x)"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "sftp_upload" },
{ "source": "sftp_upload", "target": "sftp_chmod" },
{ "source": "sftp_chmod", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: ✅ Script enviado e configurado como executável (rwxr-xr-x)
Exemplo 2: Proteger Arquivo de Configuração
Objetivo: Definir permissões 600 (só owner acessa)
JSON para Importar
{
"name": "Proteger Arquivo Sensível",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "sftp_chmod",
"type": "sftp",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Proteger Config",
"parameters": {
"host": "sftp.app.com",
"username": "admin",
"privateKey": "/home/admin/.ssh/id_rsa",
"operation": "chmod",
"remotePath": "/etc/app/database.conf",
"mode": "600"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "🔒 Arquivo protegido! Apenas owner pode ler/escrever (rw-------)"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "sftp_chmod" },
{ "source": "sftp_chmod", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: 🔒 Arquivo protegido! Apenas owner pode ler/escrever (rw-------)
Resposta do Node
{
"success": true,
"data": {
"sftp_result": {
"success": true,
"path": "/scripts/deploy.sh",
"mode": "755",
"modifiedAt": "2025-01-15T11:30:00.000Z",
"protocol": "sftp"
}
}
}
Boas Práticas
✅ SIM:
- Use 600 para arquivos com senhas/chaves
- Use 644 para arquivos de leitura geral
- Use 755 para scripts executáveis
- Use 700 para diretórios privados
❌ NÃO:
- Não use 777 (todos podem ler/escrever/executar - inseguro!)
- Não altere permissões de arquivos de sistema
- Não use 000 (ninguém acessa, nem owner)
Dicas
💡 Dica 1: Permissões Unix: primeiro dígito = owner, segundo = group, terceiro = others.
💡 Dica 2: 7=rwx, 6=rw-, 5=r-x, 4=r--, 0=---
💡 Dica 3: Após upload de script, sempre faça SFTP_CHMOD com "755" para torná-lo executável.
💡 Dica 4: Para arquivos com credenciais, use "600" (rw-------). Evita vazamento.
Próximos Nodes
→ SFTP_UPLOAD - Upload antes de chmod → SFTP_LIST - Listar para ver permissões atuais → SFTP_EXISTS - Verificar se arquivo existe antes de chmod