Se você gerencia seus próprios servidores e precisa isolar o acesso FTP de usuários específicos — apontando cada um para um diretório raiz personalizado e permitindo a visualização de arquivos ocultos (dotfiles) —, o vsftpd oferece diretivas nativas para isso sem complicações.
Neste artigo, vamos direto ao ponto configurando um ambiente seguro e flexível utilizando arquivos de configuração individuais por usuário.
1. Configurando diretórios raiz por usuário (user_config_dir)
Para evitar alterar o comportamento global de todos os usuários do sistema, o ideal é utilizar a diretiva user_config_dir.
Abra o arquivo de configuração principal do serviço (geralmente em /etc/vsftpd.conf) e adicione ou certifique-se de que a linha abaixo está ativa:
Plaintext
user_config_dir=/etc/vsftpd/users
Em seguida, crie o diretório que armazenará os arquivos de configuração individuais:
Bash
sudo mkdir -p /etc/vsftpd/users
2. Definindo o local_root para um usuário específico
Crie um arquivo dentro da pasta recém-criada com o exato nome do usuário que deseja modificar:
Bash
sudo nano /etc/vsftpd/users/nome_do_usuario
Adicione a diretiva apontando para o caminho desejado:
Plaintext
local_root=/caminho/para/o/diretorio/desejado
A regra de segurança do Chroot (writable root)
Por padrão, o vsftpd bloqueia o acesso caso o diretório raiz (chroot) do usuário tenha permissão de escrita para ele mesmo (evitando falhas de segurança estruturais). Para contornar isso mantendo a capacidade de upload:
- Remova a permissão de escrita da raiz principal do usuário:
Bashsudo chown root:root /caminho/para/o/diretorio/desejado sudo chmod a-w /caminho/para/o/diretorio/desejado - Crie um subdiretório dedicado para envio de arquivos com permissão para o usuário:
Bashsudo mkdir /caminho/para/o/diretorio/desejado/upload sudo chown nome_do_usuario:nome_do_usuario /caminho/para/o/diretorio/desejado/upload
Garanta também que as diretivas globais de isolamento estejam ativadas em /etc/vsftpd.conf:
Plaintext
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=NO
3. Exibindo arquivos ocultos (dotfiles)
Por padrão, o vsftpd oculta arquivos e pastas iniciados por ponto (como .htaccess, .gitignore, etc.). Para forçar a exibição deles via servidor, utilize a diretiva force_dot_files=YES.
Você pode aplicá-la de duas formas:
- Para um usuário específico: Abra o arquivo de configuração individual do usuário (
/etc/vsftpd/users/nome_do_usuario) e adicione:
Plaintextforce_dot_files=YES - Globalmente: Adicione a mesma linha no final do arquivo principal
/etc/vsftpd.confpara valer para todos.
4. Aplicando as alterações
Por fim, reinicie o daemon do vsftpd para carregar as novas configurações:
Bash
sudo systemctl restart vsftpd
Pronto! Agora o usuário possui seu próprio ambiente isolado, estruturado com segurança e com total visibilidade sobre arquivos de configuração ocultos.
