Como personalizar o diretório raiz (chroot) e exibir dotfiles por usuário no vsftpd

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:

  1. 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
  2. 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.conf para 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.

Rolar para cima