FTP

O que é FTP?

FTP significa File Transfer Protocol.

Ele é um protocolo de comunicação usado para transferir arquivos entre computadores através de uma rede, como a Internet ou uma rede local, também chamada de LAN.

O FTP foi desenvolvido para ser simples e eficiente, permitindo que usuários ou sistemas compartilhem, enviem, baixem e gerenciem arquivos remotamente.


Para que o FTP é usado?

O FTP é usado para transferir arquivos entre um cliente e um servidor.

Exemplos comuns:

Enviar arquivos de um site para uma hospedagem.
Baixar arquivos de um servidor remoto.
Compartilhar arquivos dentro de uma rede local.
Gerenciar arquivos em servidores antigos.
Enviar backups para outro servidor.
Transferir arquivos entre sistemas automatizados.


Como o FTP funciona?

O FTP funciona com uma conexão entre um cliente FTP e um servidor FTP.

Fluxo básico:

O cliente se conecta ao servidor FTP.
O servidor solicita autenticação.
O usuário informa nome de usuário e senha.
Após autenticar, o usuário pode listar pastas e arquivos.
Arquivos podem ser enviados ou baixados.
A conexão é encerrada ao final do uso.

Exemplo:

ftp servidor.com

Depois de conectar:

Name: usuario
Password: senha

Características principais do FTP

O FTP possui algumas características importantes:

Permite transferência de arquivos.
Permite envio e download de arquivos.
Funciona entre cliente e servidor.
Pode usar autenticação com usuário e senha.
Pode permitir acesso anônimo.
Pode operar em modo ativo ou passivo.
Não criptografa os dados por padrão.
Pode ter problemas com firewall e NAT se mal configurado.


FTP é seguro?

Por padrão, não.

O FTP tradicional envia dados sem criptografia.

Isso significa que informações como:

Usuário.
Senha.
Nome dos arquivos.
Conteúdo dos arquivos.

Podem trafegar em texto claro pela rede.

Por isso, para uso na internet, o FTP tradicional não é recomendado. O ideal é usar alternativas seguras, como SFTP ou FTPS.


FTP é a mesma coisa que SFTP?

Não.

Apesar dos nomes parecidos, FTP e SFTP são protocolos diferentes.

O FTP é o protocolo tradicional de transferência de arquivos e não usa criptografia por padrão.

O SFTP usa SSH e criptografa a comunicação.

Resumo:

ProtocoloSegurançaPorta comumObservação
FTPNão criptografado21Antigo e inseguro
FTPSUsa TLS/SSL21 ou 990FTP com criptografia
SFTPUsa SSH22Mais comum em servidores Linux

FTP usa TCP ou UDP?

O FTP usa TCP.

Ele precisa de uma conexão confiável para transferir arquivos corretamente.

Por padrão, o FTP usa a porta:

21/TCP

A porta 21 é usada para controle da conexão.

A transferência de dados pode usar outras portas, dependendo do modo ativo ou passivo.


Qual porta o FTP usa?

Por padrão, o FTP usa:

21/TCP

No modo ativo, o servidor geralmente usa a porta:

20/TCP

No modo passivo, o servidor abre uma faixa de portas para transferência de dados.

Resumo:

UsoPorta comum
Controle FTP21/TCP
Dados no modo ativo20/TCP
Dados no modo passivoFaixa configurada no servidor

O que é modo ativo no FTP?

No modo ativo, o cliente se conecta ao servidor pela porta 21.

Depois, o servidor tenta se conectar de volta ao cliente para transferir os dados.

Fluxo básico:

O cliente abre conexão com o servidor.
O servidor recebe o comando.
O servidor tenta abrir uma conexão de volta para o cliente.
A transferência de dados acontece nessa conexão.

Esse modo pode causar problemas quando o cliente está atrás de firewall ou NAT.

Exemplo de problema comum:

O cliente consegue conectar, mas não consegue listar diretórios ou transferir arquivos.


O que é modo passivo no FTP?

No modo passivo, o cliente se conecta ao servidor pela porta 21.

Depois, o servidor informa uma porta de dados, e o próprio cliente abre a conexão para essa porta.

Fluxo básico:

O cliente conecta no servidor.
O cliente solicita modo passivo.
O servidor abre uma porta para dados.
O cliente se conecta nessa porta.
A transferência acontece.

O modo passivo costuma funcionar melhor com firewall e NAT.

Por isso, ele é muito usado em hospedagens e conexões pela internet.


Diferença entre modo ativo e modo passivo

ModoComo funcionaProblema comum
AtivoServidor conecta de volta ao clienteBloqueio por firewall/NAT no cliente
PassivoCliente conecta nas portas abertas pelo servidorPrecisa liberar faixa de portas no servidor

Em servidores modernos, geralmente o modo passivo é mais recomendado.


FTP permite login anônimo?

Sim.

O FTP pode ser configurado para permitir acesso anônimo.

Nesse caso, o usuário acessa sem uma conta específica.

Exemplo comum de usuário:

anonymous

Em alguns servidores, a senha pode ser um e-mail ou pode ficar em branco.

Mas o acesso anônimo deve ser usado com cuidado, pois pode expor arquivos indevidamente.


Como instalar um servidor FTP?

Um servidor FTP comum no Linux é o vsftpd.

No Debian, Ubuntu e derivados:

sudo apt update
sudo apt install vsftpd

Verificar status:

sudo systemctl status vsftpd

Iniciar o serviço:

sudo systemctl start vsftpd

Habilitar na inicialização:

sudo systemctl enable vsftpd

Como configurar FTP no servidor?

A configuração principal do vsftpd fica no arquivo:

/etc/vsftpd.conf

Para editar:

sudo nano /etc/vsftpd.conf

Configurações comuns:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

Explicação:

anonymous_enable=NO desativa login anônimo.
local_enable=YES permite login de usuários locais.
write_enable=YES permite envio e alteração de arquivos.
chroot_local_user=YES limita o usuário à própria pasta.

Depois de alterar, reinicie:

sudo systemctl restart vsftpd

Como configurar modo passivo no FTP?

No arquivo:

/etc/vsftpd.conf

Adicione ou ajuste:

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100

Se o servidor estiver atrás de NAT ou firewall, também pode ser necessário informar o IP público:

pasv_address=SEU_IP_PUBLICO

Depois reinicie:

sudo systemctl restart vsftpd

Libere as portas no firewall:

sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcp

Como criar um usuário para FTP?

Criar usuário:

sudo adduser usuario_ftp

Definir senha:

sudo passwd usuario_ftp

Criar pasta para arquivos:

sudo mkdir -p /home/usuario_ftp/ftp

Ajustar permissões:

sudo chown usuario_ftp:usuario_ftp /home/usuario_ftp/ftp

Depois, o usuário poderá conectar usando um cliente FTP.


Como usar FTP pelo terminal?

Conectar ao servidor:

ftp ip_do_servidor

Ou:

ftp servidor.com

Depois informe usuário e senha.

Exemplo:

Name: usuario_ftp
Password: senha

Dentro do FTP, listar arquivos:

ls

Enviar arquivo:

put arquivo.txt

Baixar arquivo:

get arquivo.txt

Sair:

bye

Como enviar arquivos com FTP?

Conecte no servidor:

ftp servidor.com

Depois use:

put arquivo.txt

Para enviar vários arquivos:

mput *.txt

Em clientes gráficos, como FileZilla, basta arrastar os arquivos do computador para o servidor.


Como baixar arquivos com FTP?

Conecte no servidor:

ftp servidor.com

Depois use:

get arquivo.txt

Para baixar vários arquivos:

mget *.txt

Também é possível usar clientes gráficos, como FileZilla, WinSCP ou Cyberduck.


Como testar se o FTP está funcionando?

Testar porta 21:

nc -vz ip_do_servidor 21

Ou:

telnet ip_do_servidor 21

Verificar se o servidor está escutando:

sudo ss -tulpn | grep :21

Verificar status do serviço:

sudo systemctl status vsftpd

Testar conexão FTP:

ftp ip_do_servidor

FTP usa TLS ou SSL?

O FTP tradicional não usa TLS ou SSL por padrão.

Quando FTP usa TLS/SSL, ele passa a ser chamado de FTPS.

Existem dois modos comuns:

FTP explícito com TLS, geralmente na porta 21.
FTP implícito com TLS, geralmente na porta 990.

Resumo:

ProtocoloCriptografiaPorta comum
FTPNão21
FTPS explícitoSim21
FTPS implícitoSim990
SFTPSim, via SSH22

Diferença entre FTP, FTPS e SFTP

ProtocoloSegurançaComo funcionaPorta comum
FTPNão criptografadoProtocolo FTP tradicional21
FTPSUsa TLS/SSLFTP com criptografia21 ou 990
SFTPUsa SSHTransferência via SSH22

O FTP é mais antigo e simples.

O FTPS adiciona criptografia ao FTP.

O SFTP é outro protocolo, baseado em SSH.


Erros comuns no FTP

Login incorrect

Erro:

Login incorrect

Ou:

530 Login incorrect

Possíveis causas:

Usuário incorreto.
Senha incorreta.
Usuário não existe no servidor.
Login local desativado.
Conta bloqueada.

Verifique o usuário:

id usuario_ftp

Alterar senha:

sudo passwd usuario_ftp

Verificar configuração:

sudo nano /etc/vsftpd.conf

Confirme se existe:

local_enable=YES

Connection refused

Erro:

Connection refused

Possíveis causas:

Serviço FTP parado.
Porta 21 fechada.
Firewall bloqueando.
Servidor FTP não instalado.

Verificar serviço:

sudo systemctl status vsftpd

Iniciar serviço:

sudo systemctl start vsftpd

Verificar porta:

sudo ss -tulpn | grep :21

Liberar firewall:

sudo ufw allow 21/tcp

Connection timed out

Erro:

Connection timed out

Possíveis causas:

Firewall bloqueando.
Servidor fora do ar.
IP incorreto.
Porta não liberada no provedor.
Problema de rota.

Testar porta:

nc -vz ip_do_servidor 21

Verificar firewall:

sudo ufw status

Liberar FTP:

sudo ufw allow 21/tcp

Conecta, mas não lista arquivos

Erro comum:

Failed to retrieve directory listing

Possíveis causas:

Modo passivo não configurado.
Faixa de portas passivas bloqueada.
Firewall bloqueando portas de dados.
Servidor atrás de NAT sem pasv_address.

Solução:

Editar:

sudo nano /etc/vsftpd.conf

Adicionar:

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
pasv_address=SEU_IP_PUBLICO

Liberar firewall:

sudo ufw allow 40000:40100/tcp

Reiniciar:

sudo systemctl restart vsftpd

500 OOPS: cannot change directory

Erro:

500 OOPS: cannot change directory

Possíveis causas:

Permissões incorretas na pasta do usuário.
Diretório home inexistente.
SELinux bloqueando acesso.
Configuração de chroot incorreta.

Verificar pasta:

ls -ld /home/usuario_ftp

Corrigir dono:

sudo chown usuario_ftp:usuario_ftp /home/usuario_ftp

Corrigir permissões:

sudo chmod 755 /home/usuario_ftp

550 Permission denied

Erro:

550 Permission denied

Possíveis causas:

Usuário sem permissão de escrita.
Pasta pertence a outro usuário.
write_enable desativado.
Permissão do arquivo ou diretório incorreta.

Verificar configuração:

sudo nano /etc/vsftpd.conf

Confirme:

write_enable=YES

Verificar permissões:

ls -ld /caminho/da/pasta

Ajustar dono:

sudo chown usuario_ftp:usuario_ftp /caminho/da/pasta

500 OOPS: vsftpd: refusing to run with writable root inside chroot

Erro:

500 OOPS: vsftpd: refusing to run with writable root inside chroot

Possíveis causas:

O usuário está preso em chroot.
A pasta raiz do chroot está com permissão de escrita.
O vsftpd bloqueia essa configuração por segurança.

Solução recomendada:

Criar uma pasta interna para uploads:

sudo mkdir -p /home/usuario_ftp/uploads
sudo chown root:root /home/usuario_ftp
sudo chmod 755 /home/usuario_ftp
sudo chown usuario_ftp:usuario_ftp /home/usuario_ftp/uploads

O usuário fica preso em /home/usuario_ftp, mas grava dentro de /uploads.


Como testar se o FTP está funcionando?

Testar serviço:

sudo systemctl status vsftpd

Testar porta:

nc -vz ip_do_servidor 21

Conectar:

ftp ip_do_servidor

Listar arquivos:

ls

Enviar arquivo de teste:

put teste.txt

Verificar logs:

sudo tail -f /var/log/vsftpd.log

Ou:

sudo journalctl -u vsftpd -f

Comandos principais do FTP

ComandoFunção
ftp servidorConecta ao servidor FTP
lsLista arquivos remotos
pwdMostra pasta remota atual
cd pastaEntra em uma pasta remota
lcd pastaTroca a pasta local
put arquivoEnvia um arquivo
get arquivoBaixa um arquivo
mput *.txtEnvia vários arquivos
mget *.txtBaixa vários arquivos
mkdir pastaCria pasta remota
delete arquivoRemove arquivo remoto
rename antigo novoRenomeia arquivo remoto
passiveAlterna modo passivo
byeSai do FTP
quitSai do FTP

Exemplo completo de uso

Criar arquivo de teste:

echo "teste ftp" > teste.txt

Conectar ao servidor:

ftp 192.168.0.10

Informar usuário e senha:

Name: usuario_ftp
Password: senha

Dentro do FTP:

pwd
ls
put teste.txt
ls
bye

Esse exemplo conecta ao servidor FTP, lista a pasta atual, envia o arquivo teste.txt, lista novamente e encerra a sessão.


Boas práticas de segurança

Evitar FTP tradicional pela internet.
Preferir SFTP ou FTPS quando possível.
Não permitir login anônimo sem necessidade.
Usar senhas fortes.
Criar usuários separados para cada finalidade.
Limitar usuários ao próprio diretório com chroot.
Configurar corretamente o modo passivo.
Liberar no firewall apenas as portas necessárias.
Monitorar logs de acesso.
Remover usuários antigos sem uso.
Manter o servidor FTP atualizado.
Evitar usar FTP com usuário root.

Páginas relacionadas