Para administradores que precisam isolar usuários SFTP em pastas específicas sem comprometer a estrutura do servidor web ou enfrentar erros de permissão do OpenSSH, a técnica de Bind Mount é a solução definitiva.
O Desafio
O OpenSSH exige que a raiz do ChrootDirectory pertença estritamente ao root e tenha permissões 755 (não graváveis pelo usuário). Isso impede que o usuário tenha permissão de escrita diretamente na raiz da sua home, o que costuma gerar conflitos ao tentar montar pastas de sites.
A Solução: Bind Mount
O mount --bind projeta o conteúdo de uma pasta existente (como /var/www/...) dentro do diretório isolado do usuário. Diferente de um link simbólico, o kernel trata isso como um diretório real, respeitando as restrições do SSH e permitindo que o usuário trabalhe nos arquivos sem sair do ambiente confinado.
1. Preparação da Raiz (Segura para o SSH)
Bash
sudo chown root:root /home/masterplan
sudo chmod 755 /home/masterplan
2. Criação do Ponto de Montagem e Bind
Crie a pasta dentro da home e monte o diretório real do site nela:
Bash
sudo mkdir -p /home/masterplan/site
sudo mount --bind /var/www/masterplan.com.br /home/masterplan/site
3. Persistência no Boot
Para garantir que a montagem ocorra automaticamente após reiniciar o servidor, adicione ao seu /etc/fstab:
Plaintext
/var/www/masterplan.com.br /home/masterplan/site none bind 0 0
4. Configuração do SSH
No /etc/ssh/sshd_config, force o usuário a entrar direto no ponto montado. Isso elimina a necessidade de navegar pela raiz do chroot:
Plaintext
Match User masterplan
ChrootDirectory /home/masterplan
ForceCommand internal-sftp -d /site
X11Forwarding no
AllowTcpForwarding no
5. Reinicie o serviço
Bash
sudo systemctl restart ssh
Dica de Ouro
Se a pasta site não aparecer na listagem do seu cliente SFTP, não se preocupe: basta configurar o seu cliente (FileZilla, WinSCP, etc.) para abrir o caminho remoto /site por padrão ou garantir que a pasta montada tenha permissão de leitura (755) para o usuário, permitindo que o ls a enxergue sem comprometer a segurança da raiz do chroot.
