Configuração de Servidor FTP no Ubuntu: Um Guia Prático para Compartamento de Arquivos (Edição EUA)

目次

1. Introdução

Configurar um servidor FTP no Ubuntu é uma abordagem altamente prática para desenvolvedores e administradores que precisam enviar e receber arquivos de eficiente. Especialmente ao desejar montar um servidor doméstico ou um ambiente simples de compartilhamento interno de arquivos, o FTP (File Transfer Protocol) destaca‑se como uma opção direta e fácil de implementar.

O que é um Servidor FTP?

Um servidor FTP é um software dedicado projetado para transmitir e receber arquivos pela internet ou por uma rede local. Os usuários podem conectar‑se ao servidor usando um cliente FTP para fazer upload e download de arquivos.

Embora alternativas seguras como SFTP e SCP tenham ganhado popularidade em algumas áreas, o FTP continua sendo uma escolha preferida para muitas aplicações devido à sua simplicidade e leveza. Ele permanece um protocolo altamente prático, especialmente para uso em redes limitadas ou para tarefas básicas.

O Papel de um Servidor FTP no Ubuntu

O Ubuntu é uma distribuição Linux apreciada por muitos usuários e amplamente utilizada para fins de servidor. Ao montar um servidor FTP em um ambiente Ubuntu, o compartilhamento de arquivos entre múltiplos dispositivos e usuários torna‑se simples.

Ele é particularmente eficaz em casos como:

  • Transferência de arquivos para servidores web
  • Integração com dispositivos IoT como Raspberry Pi
  • Compartilhamento de documentos internos

Assim, a combinação de Ubuntu e um servidor FTP permite um gerenciamento de arquivos flexível e eficiente.

Propósito e Público‑Alvo deste Artigo

Este artigo explicará como configurar um servidor FTP no Ubuntu, fornecendo instruções passo a passo de fácil compreensão para iniciantes. Ele é direcionado especificamente a leitores que:

  • Estão familiarizados com operações básicas do Ubuntu, mas são novos no FTP.
  • Desejam montar um servidor FTP para uso local ou em pequenos negócios.
  • Também querem conhecer considerações importantes, como segurança e nomes de arquivos japoneses corrompidos.

Seguindo as etapas apresentadas aqui na ordem, você será capaz de criar um ambiente de servidor FTP seguro e prático. Na próxima seção, começaremos explicando como instalar o vsftpd, um servidor FTP particularmente popular.

2. Instalando o vsftpd

Ao montar um servidor FTP no Ubuntu, o software mais usado é o vsftpd (Very Secure FTP Daemon). Como o nome sugere, trata‑se de um servidor FTP com uma filosofia de design “muito segura”. Ele é leve e estável, o que o torna amplamente adotado em ambientes corporativos e educacionais.

Esta seção explica os passos para instalar o vsftpd no Ubuntu e como configurar a inicialização do serviço e o início automático.

Instalando o vsftpd

Primeiro, use o sistema de gerenciamento de pacotes do Ubuntu (APT) para instalar o vsftpd. Execute as etapas a seguir na ordem indicada:

sudo apt update
sudo apt install vsftpd
  • sudo apt update – Atualiza as informações dos pacotes para a versão mais recente.
  • sudo apt install vsftpd – Instala o pacote vsftpd.

Ao final da instalação, o vsftpd será iniciado automaticamente.

Verificando o Status do Serviço

Para confirmar que o vsftpd foi instalado corretamente e está em execução, use o comando a seguir:

sudo systemctl status vsftpd

Se este comando exibir “active (running)”, o servidor FTP está operando normalmente.

Verificando e Habilitando a Inicialização Automática

O vsftpd costuma ser configurado para iniciar automaticamente logo após a instalação, mas é recomendável confirmar.

sudo systemctl enable vsftpd

Executar este comando garante que o vsftpd será iniciado automaticamente nas próximas inicializações do sistema.

Não Esqueça de Configurar o Firewall (UFW)

Se você tem o UFW (Uncomplicated Firewall) habilitado no seu sistema Ubuntu, será necessário abrir as portas do FTP.

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp

Isso permite o acesso externo às portas padrão do FTP: porta 20 (dados) e porta 21 (comando).

Após a configuração, recarregue o UFW para aplicar as alterações.

sudo ufw reload

3. Configuração Básica

Uma vez que o vsftpd esteja instalado, o próximo passo é personalizar o comportamento do servidor FTP para atender às suas necessidades editando o arquivo de configuração. Embora o arquivo de configuração do vsftpd permita um controle muito detalhado, ele tem muitas restrições em seu estado inicial, então você precisa habilitar explicitamente os recursos necessários.

Esta seção explica os itens de configuração básicos típicos.

Localização do Arquivo de Configuração

O arquivo de configuração principal do vsftpd está localizado em:

/etc/vsftpd.conf

Para fazer alterações na configuração, edite o arquivo da seguinte forma:

sudo nano /etc/vsftpd.conf

Após fazer as alterações, você precisa reiniciar o serviço vsftpd.

sudo systemctl restart vsftpd

Permitir Acesso de Escrita (para Uploads, etc.)

Na configuração padrão do vsftpd, uploads de arquivos e modificações no servidor FTP não são permitidos. Para permitir acesso de escrita, habilite a seguinte linha:

write_enable=YES

Essa configuração permite que os usuários façam upload, exclusão e modificação de arquivos dentro de seus diretórios iniciais.

Permitir Logins de Usuários Locais

Para permitir login FTP usando contas de usuário do Ubuntu, a seguinte configuração é necessária:

local_enable=YES

Com essa configuração, usuários locais (usuários do sistema) registrados em /etc/passwd poderão fazer login via FTP.

Habilitar a Recuperação de Listagem de Diretórios

Se o cliente FTP não conseguir recuperar uma lista de arquivos e diretórios, verifique as seguintes configurações:

listen=YES
listen_ipv6=NO

Especialmente em ambientes onde o IPv6 está desabilitado, ter listen_ipv6=YES pode causar problemas de conexão.

Definir um Banner de Login (Opcional)

Você também pode definir uma mensagem (banner) que é exibida ao conectar ao servidor FTP.

ftpd_banner=Welcome to your custom Ubuntu FTP server!

Isso pode ser útil em contextos empresariais para transmitir informações de contato ou avisos importantes aos usuários.

Permitir Transferência em Modo ASCII (Se Necessário)

Se você precisar transferir corretamente arquivos de texto específicos (por exemplo, scripts contendo quebras de linha do Windows), configure o seguinte:

ascii_upload_enable=YES
ascii_download_enable=YES

Normalmente, a transferência binária é suficiente, mas considere habilitar isso dependendo do seu ambiente.

Assim, a configuração básica do vsftpd é caracterizada por especificar explicitamente “o que é permitido”. Após editar o arquivo de configuração, certifique-se de reiniciar o serviço vsftpd para aplicar as alterações.

A próxima seção mergulhará em configurações de segurança mais avançadas. Medidas de segurança são indispensáveis, especialmente ao operar um servidor FTP em uma rede pública.

4. Melhorando a Segurança

Embora o FTP seja um protocolo conveniente, sua característica de transmitir dados sem criptografia levanta preocupações de segurança. Especialmente ao operar pela internet, configurações de segurança robustas são essenciais.

Esta seção apresenta medidas de segurança típicas que podem ser implementadas com o vsftpd.

Restringir o Alcance de Acesso de Usuários com chroot

Permitir que usuários FTP acessem diretórios além dos seus próprios é altamente arriscado. Portanto, é crucial configurar o chroot, que confina cada usuário ao seu diretório inicial.

Habilite as seguintes duas configurações:

chroot_local_user=YES
allow_writeable_chroot=YES
  • chroot_local_user=YES impede que usuários locais naveguem acima de seu diretório inicial.
  • allow_writeable_chroot=YES é uma configuração para relaxar as restrições de segurança do vsftpd e é necessária quando o diretório inicial tem permissões de escrita.

* Sem isso, você encontrará o erro “500 OOPS: vsftpd: refusing to run with writable root inside chroot”.

Limitar Usuários Acessíveis

Permitir que todos os usuários locais façam login no FTP pode levar a vazamentos de informação inesperados. Portanto, controle os usuários acessíveis via FTP usando uma abordagem de lista branca.

Primeiro, adicione as seguintes configurações ao vsftpd.conf:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Em seguida, liste os usuários que você deseja permitir o login, um por linha, no arquivo /etc/vsftpd.userlist.

sudo nano /etc/vsftpd.userlist

(Exemplo)

ftpuser1
ftpuser2

Com esta configuração, apenas os usuários explicitamente listados poderão fazer login.

Implementando Comunicação Criptografada com FTPS (SSL/TLS)

O FTP padrão transmite dados em texto plano, representando um risco de escuta em IDs, senhas e dados. Para evitar isso, use FTPS (FTP sobre SSL/TLS) para criptografar a comunicação.

Primeiro, crie um certificado SSL (ou use um existente).

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Em seguida, adicione as seguintes configurações ao vsftpd.conf:

ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Agora, você pode conectar usando “FTPS (SSL Explícito)” no lado do cliente FTP.

Desabilitando Recursos Desnecessários

Para aprimorar a segurança, também é importante desabilitar ativamente recursos que não são usados.

Exemplo:

anonymous_enable=NO

Isso desabilita logins de usuários anônimos (está desabilitado por padrão, mas configurá-lo explicitamente fornece segurança extra).

Com essas configurações, o servidor FTP vsftpd no Ubuntu terá medidas de segurança básicas implementadas.
Especialmente quando usado pela internet, implementar FTPS é essencial.

O próximo capítulo explicará em detalhes como lidar com nomes de arquivos japoneses corrompidos. Este é um ponto frequentemente negligenciado na operação FTP, mas crucial para prevenir problemas.

5. Lidando com Nomes de Arquivos Japoneses

Ao enviar e receber arquivos usando FTP, você pode encontrar o problema de nomes de arquivos japoneses se tornando corrompidos. Isso é especialmente comum ao trocar arquivos entre Windows e Ubuntu via FTP, onde incompatibilidades de codificação podem levar a “???” ou strings ininteligíveis.

Esta seção introduz medidas para prevenir nomes de arquivos japoneses corrompidos no vsftpd.

Principais Causas de Caracteres Corrompidos

Nomes de arquivos japoneses corrompidos ocorrem principalmente devido aos seguintes três fatores:

  1. A configuração de locale do Ubuntu não é UTF-8.
  2. A configuração de codificação do cliente FTP está incorreta.
  3. vsftpd não está operando com suporte a UTF-8.

É importante verificar e ajustar esses em ordem.

Verificando e Configurando o Locale do Ubuntu

Primeiro, confirme que a codificação de caracteres no lado Ubuntu é UTF-8. Exiba o locale atual usando o seguinte comando:

locale

Exemplo de saída:

LANG=ja_JP.UTF-8

Se LANG ou LC_ALL não estiver definido para UTF-8, altere e reconfigure da seguinte forma:

sudo update-locale LANG=ja_JP.UTF-8
source /etc/default/locale

Além disso, gere o locale se necessário:

sudo locale-gen ja_JP.UTF-8

Isso unificará o processamento de nomes de arquivos dentro do servidor para UTF-8.

Verificando a Configuração UTF-8 do vsftpd

vsftpd suporta UTF-8 por padrão, mas é bom confirmar a seguinte configuração por precaução:

utf8_filesystem=YES

Mesmo se este item de configuração não existir, não deve haver problema particular se o sistema estiver operando em UTF-8. No entanto, este item pode não ser suportado em algumas versões do vsftpd.

Configurações do Cliente FTP (Exemplo com FileZilla)

As configurações do cliente FTP também são extremamente importantes. Por exemplo, ao conectar usando FileZilla, configure da seguinte forma:

  1. Abra o Gerenciador de Sites.
  2. Abra as configurações para sua conexão.
  3. Selecione a aba “Charset”.
  4. Selecione “Use custom charset” e insira UTF-8 .

Esta configuração permite que o cliente interprete corretamente os nomes de arquivos do servidor como UTF-8, prevenindo caracteres corrompidos.

Nota sobre Upload de Outros SOs

Ao fazer upload de arquivos criados no Windows, etc., se o sistema usar uma codificação de caracteres diferente como Shift_JIS, o nome do arquivo pode ser corrompido no momento do upload.

Nesses casos, é mais seguro converter o nome do arquivo para UTF-8 antes do upload. Você pode usar ferramentas como convmv na linha de comando.

Resumo

Quando se lida com nomes de arquivos em japonês via FTP, a chave é que a codificação de caracteres no servidor e no cliente deve corresponder. No Ubuntu, definir UTF-8 como padrão e especificar explicitamente UTF-8 no lado do cliente FTP pode evitar a maioria dos problemas de distorção de caracteres.

O próximo capítulo explicará o modo passivo e as configurações de firewall. Essas são configurações importantes para evitar problemas de conexão, especialmente ao usar FTP através de um roteador ou em um ambiente de nuvem.

6. Modo Passivo e Configuração de Firewall

Um problema comum ao operar um servidor FTP pela internet ou em um ambiente NAT (atrás de um roteador) é o fenômeno de “conexão bem-sucedida, mas incapaz de recuperar a lista de arquivos” ou “falha na transferência de dados”.
Muitos desses problemas são causados pelo modo de operação FTP incorreto (ativo/passivo) e configurações de firewall.

Esta seção explica como ativar o modo passivo no vsftpd e configurar as portas necessárias no firewall.

O que é o Modo Passivo?

O FTP tem dois modos de comunicação: “modo ativo” e “modo passivo”.

  • Modo Ativo : O servidor tenta estabelecer uma conexão com o cliente.
  • Modo Passivo : A comunicação é concluída apenas com conexões do cliente para o servidor (mais robusto para comunicação através de NAT e firewalls).

Em ambientes de rede modernos, o modo passivo é recomendado. Você precisa configurar explicitamente as configurações de modo passivo no vsftpd.

Ativando o Modo Passivo no vsftpd

Adicione ou edite as seguintes configurações em /etc/vsftpd.conf:

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

Isso configura o vsftpd para operar em modo passivo e usar as portas 40000 a 50000 para transferência de dados. Esse intervalo é arbitrário, mas é comum reservar cerca de 20-30 portas.

Especificando o Endereço IP Externo (para Ambientes NAT)

Se o servidor estiver em um ambiente NAT, como atrás de um roteador, você precisa especificar explicitamente o endereço IP externo visível globalmente para que os clientes possam se conectar corretamente.

pasv_address=203.0.113.45

* O endereço IP acima é um exemplo. Por favor, substitua pelo seu endereço IP global real.

Com essa configuração, o cliente FTP pode tentar uma conexão de dados com base nas informações de endereço corretas enviadas pelo vsftpd.

Configuração de Firewall (UFW)

Abra as portas usadas pelo vsftpd no firewall do Ubuntu (UFW). Execute os seguintes comandos:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
  • 20/tcp : Canal de dados FTP (para modo ativo)
  • 21/tcp : Canal de comandos FTP (login e transmissão de comandos)
  • 40000:50000/tcp : Intervalo de portas para transferência de dados em modo passivo

Após configurar, recarregue o UFW para aplicar as alterações.

sudo ufw reload

Pontos a Considerar em Ambientes de Nuvem (AWS, GCP, Azure, etc.)

Ao operar FTP em uma instância de nuvem, você precisa abrir as mesmas portas não apenas no UFW de nível de SO, mas também no grupo de segurança (firewall) do provedor de nuvem.

Exemplo: Para AWS
→ Permitir portas TCP 21 e 40000-50000 no Grupo de Segurança.

Resumo

Para operar o FTP de forma prática, configurar o modo passivo do vsftpd e abrir portas de acordo com o seu ambiente de rede são essenciais. Especialmente ao conectar de uma rede externa, muitas falhas de comunicação e timeouts são causadas por essas configurações.

O próximo capítulo explica como definir permissões de acesso individuais e restrições de diretórios para cada usuário FTP. Isso será útil para operação multiusuário e gerenciamento de permissões.

7. Configuração por Usuário

Ao usar um servidor FTP em um ambiente operacional real, há muitos casos em que você deseja atribuir permissões de acesso e diretórios diferentes a múltiplos usuários. Por exemplo, você pode precisar configurar pastas dedicadas para cada departamento ou usuário individual, ou restringir o acesso aos arquivos de outros usuários.

Esta seção apresenta como gerenciar configurações por usuário no vsftpd.

Criando Usuários FTP Dedicados

Primeiro, crie contas de usuário dedicadas para FTP. É comum criar novos usuários com diretórios home especificados.

sudo adduser ftpuser1

Este comando cria um diretório dedicado em /home/ftpuser1. Se você o usar apenas para fins de FTP, pode restringir o login desabilitando o shell.

sudo useradd -m -s /usr/sbin/nologin ftpuser2

Configurando Permissões do Diretório Home

Devido às especificações de segurança do vsftpd, diretórios chroot “graváveis” não são permitidos para diretórios home de FTP. Portanto, a seguinte configuração é recomendada:

/home/ftpuser1/
├── files/  ← Allow write access (for uploads, etc.)

Ajuste as permissões da seguinte forma:

sudo mkdir /home/ftpuser1/files
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/files
sudo chmod 755 /home/ftpuser1

Isso cria uma configuração segura onde o diretório raiz (/home/ftpuser1) não é gravável, mas uploads são possíveis no subdiretório files/.

Fixando Usuários a Diretórios com chroot

Definindo chroot_local_user=YES, como introduzido no capítulo anterior, você pode impedir que usuários de login FTP acessem diretórios acima de seu diretório home.

chroot_local_user=YES
allow_writeable_chroot=YES

Essa configuração ajuda a prevenir visualizações ou modificações acidentais de áreas de outros usuários.

Usando Arquivos de Configuração Por Usuário (Controle Detalhado)

O vsftpd também possui um recurso para aplicar configurações individuais para cada usuário. Isso permite controlar finamente políticas como restrições de acesso, logging e tempos de conexão.

Primeiro, configure da seguinte forma:

user_config_dir=/etc/vsftpd_user_conf

Em seguida, crie arquivos de configuração individuais no diretório especificado.

sudo mkdir /etc/vsftpd_user_conf
sudo nano /etc/vsftpd_user_conf/ftpuser1

Exemplo:

local_root=/home/ftpuser1/files
write_enable=YES

Isso permite limitar o diretório raiz de ftpuser1 a /home/ftpuser1/files e separar permissões de escrita de outros usuários.

Pontos a Notar Ao Usar SFTP Junto

Se você estiver usando SFTP (FTP baseado em SSH), que usa recursos do OpenSSH, além do vsftpd, é recomendado gerenciar as configurações separadamente porque shells de usuário e afiliações de grupo podem diferir.

Resumo

O vsftpd permite controle flexível de diretórios e configurações de permissões de acesso para cada usuário. Gerenciamento adequado de usuários permite um equilíbrio entre segurança e conveniência.

O próximo capítulo explica como verificar a operação do servidor FTP. Vamos conectar de um cliente e verificar se uploads e downloads de arquivos podem ser realizados normalmente.

8. Confirmação de Operação

Até agora, você completou a instalação, configuração e gerenciamento de usuários do servidor FTP. O passo final importante é verificar se o servidor FTP está operando corretamente de fato.
Esta seção introduz como verificar a conexão usando o ambiente local e um cliente FTP.

Verificação de Conexão no Ambiente Local (Linha de Comando)

Para testar se você pode conectar ao servidor FTP do próprio Ubuntu, use o comando ftp. Tente conectar da seguinte forma:

ftp localhost

Quando o prompt de login aparecer, insira o nome de usuário e senha de FTP que você criou anteriormente.

Name (localhost:username): ftpuser1
Password: ********

Após fazer login, você pode tentar operações básicas com comandos como:

ls          # Display file list
cd files    # Change directory
put test.txt  # Upload a file
get test.txt  # Download a file

Se funcionar com sucesso, o servidor FTP foi construído sem problemas.

* Nota: Em versões recentes do Ubuntu, o comando ftp está depreciado, então você pode instalar e usar clientes como lftp ou ncftp como alternativas.

Confirmação de Conexão de Cliente GUI (Exemplo FileZilla)

Para usuários gerais e verificação de estruturas de diretórios complexas, um cliente FTP GUI como FileZilla é conveniente. O procedimento de configuração é descrito abaixo.

Procedimento de Conexão com FileZilla:

  1. Inicie o FileZilla e abra o “Gerenciador de Sites”.
  2. Crie um “Novo Site”.
  3. Insira o seguinte:
Configuration ItemContent
HostServer’s IP address or domain name
ProtocolFTP – File Transfer Protocol
EncryptionExplicit FTP over TLS (if using FTPS)
Logon TypeNormal
Userftpuser1, etc. (created username)
PasswordPassword for the above user
  1. Clique no botão “Conectar”.

Se a lista de arquivos e a estrutura de diretórios forem exibidas após a conexão, o processo foi bem-sucedido. Tente também operações de upload/download.

Problemas Comuns e Pontos de Verificação Durante a Conexão FTP

ProblemCheckpoint
Cannot connectCheck if ports are open in the firewall and security group.
Login failed (530 Login incorrect)Verify username/password and check vsftpd.userlist.
Cannot display file listCheck if passive mode is enabled and the port range is open.
File names are garbledReconfirm UTF-8 settings and client character encoding.

Verificando o Status com Arquivos de Log

Se o problema persistir, verificar o arquivo de log do vsftpd pode ajudar a identificar a causa.

cat /var/log/vsftpd.log

Para outros logs de nível de sistema, use o seguinte:

sudo journalctl -u vsftpd

Essas informações facilitam a compreensão de “quando”, “quem”, “o que foi feito” e “onde a falha ocorreu”.

Dicas Adicionais

  • Se a conexão for instável: Suspeite de firewall ou antivírus no lado do cliente bloqueando a conexão.
  • Restrições devido a segurança aprimorada: SELinux ou AppArmor podem estar interferindo (AppArmor é frequentemente ativado no Ubuntu).

Resumo

Existem padrões comuns para erros que tendem a ocorrer durante a operação FTP. Verificando calmamente cada ponto e confirmando o arquivo de configuração, usuários, firewall e logs, a maioria dos problemas pode ser resolvida.

O próximo capítulo explicará em detalhes problemas comuns que ocorrem durante a operação FTP e como resolvê-los. Saber como lidar com erros melhorará significativamente sua capacidade de resposta durante a operação real.

9. Solução de Problemas

Mesmo após a configuração do servidor FTP ser concluída, vários erros e falhas podem ocorrer durante a operação real. Em particular, problemas com configuração de rede, configurações de permissões e restrições devido a configurações de segurança podem levar a problemas como incapacidade de conectar ou falha na transferência de arquivos.

Esta seção apresenta erros comuns e suas soluções caso a caso. Ela é organizada para ajudar iniciantes a identificar facilmente a causa e se recuperar rapidamente.

Erros Comuns e Métodos de Solução de Problemas

Erro: 530 Login incorrect

Causa:

  • Nome de usuário ou senha incorretos.
  • O usuário não está registrado em /etc/vsftpd.userlist (ao usar uma lista branca).

Solução:

  • Verifique duas vezes as informações inseridas.
  • Se userlist_deny=NO estiver definido, adicione o usuário que deseja permitir o login em /etc/vsftpd.userlist.

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

Causa:

  • O diretório inicial é gravável enquanto a função chroot está ativada.

Solução:

  • Adicione o seguinte ao vsftpd.conf:
    allow_writeable_chroot=YES
    
  • Alternativamente, não conceda permissões de escrita ao diretório inicial e, em vez disso, configure permissões de escrita para um subdiretório como files/.
侍エンジニア塾