Bom, estes dias estava precisando montar um ftp ( sim ainda tem gente que opta por ele ao invés de um sftp que é muito mais seguro ) e acabei dando uma barbeirada na configuração do vsftpd.
Como resolvi o problema rapidamente achei que era interessante dividir isto aqui com vocês.
E portanto, aí vai então 🙂
A primeira coisa que deve ser deixada clara é que a dica é para o vsftpd. A dica foi testada em dois tipos de ambiente. Um com o CentOS 7 e outro com o Fedora ( 23 ).
Portanto não garanto que vá funcionar em outras distros, mas a meu ver, duvido que não funcione.
Então vamos lá.
Primeiro método
Este erro ocorre quando se tenta conectar a um vsftpd que está configurado com o jail para cada usuário FTP. Ele é a melhor prática para este tipo de sistema principalmente quando não queremos liberar o SSH.
Uma boa prática, sempre, é não permitir um shell a um usuário ftp. E isto é feito com um comando bem tranquilo que nem vem ao caso nesta dica em especial, mas é sempre bom lembrar para quem monta ambientes FTP:
usermod -s /sbin/nologin foo
No entanto isto é somente uma dica e não vai resolver o problema completamente. Para que isto realmente seja resolvido você terá que tornar o diretório do usuário somente leitura.
Sendo o diretório do usuário /home/foo , execute o comando :
chmod a-w /home/foo
Logo depois reinicie o serviço de ftp :
# systemctl restart vsftpd
Segundo método
Este é o método que eu prefiro pois trabalha diretamente no arquivo de configuração do sistema operacional.
Ou seja, ele adiciona uma linha no arquivo de configuração e logo após, reiniciamos o mesmo e tudo já está resolvido :
# echo ‘allow_writeable_chroot=YES’ » /etc/vsftpd/vsftpd.conf
# systemctl restart vsfptd
E pronto, agora é só entregar o ftp para seus usuários :)