Resumindo, a v3.2.5 do vsftpd não funcionará com uma raiz gravável dentro do chroot (), então você precisa tornar a pasta raiz do usuário não gravável, atualizar para uma nova versão (e definir algumas configurações conf) ou downgrade para uma versão mais antiga.
Detalhes
OK, o problema veio de mim usando o vsftpd versão 2.3.5 (o último pacote disponível para o meu servidor). Esta versão do vsftpd requer que o diretório home dos usuários do ftp NÃO tenha privilégios de gravação. Sim, você leu corretamente. Então, no meu caso, eu queria que o usuário fosse capaz de fazer o ftp em uma raiz da web e começar a editar. Não pode fazer isso. Eu tive que criar outro diretório acima da raiz da web, fazer o diretório home do usuário, torná-lo não gravável e, em seguida, o usuário poderia ftp, navegar até a raiz da web e editar / carregar conforme o esperado.
Esta solução é uma droga no meu caso, pois eu tenho um número de usuários operando em diferentes profundidades em vários diretórios virtuais, mas pelo menos funciona (e estou usando reescrevendo para evitar que as pessoas fiquem confusas). Agora preciso sempre ter certeza de que existe um diretório "wrapper" em torno de qualquer coisa que eu queira designar a um usuário em particular.
As principais sugestões que encontrei on-line:
add 'allow_writeable_chroot=YES' to your conf file
(isso não apenas não funcionou, mas causou problemas no daemon. Eu suspeito que isso funcione SE você tiver uma versão posterior (3.0+) do vsftpd)
downgrade to a previous version of vsftpd
(removi a versão atual e comecei a tentar obter uma versão mais antiga para trabalhar com o meu servidor, mas encontrei tantas dependências ausentes e com falha que desisti. Outros on-line tiveram alguma sorte com a versão 2.3. 2 ou até 3.x se você puder compilar o seu próprio)
Algumas outras soluções sugeridas por uma das pessoas por trás do vsftpd que encontrei on-line:
Define option local_root= in configuration file. must by /home or other path to directory with users folders. In this way vsftpd chrooting to /home directory.
(para mim isso não funcionaria porque eu não poderia ter uma única raiz local)
Define option passwd_chroot_enable=yes in configuration file and change in /etc/passwd file user home directory from "/home/user" to "/home/./user" (w/o quotes). In this way vsftpd chrooting to /home directory.
(isso simplesmente não funcionaria no meu servidor.)
Download sources of vsftpd-ext, compile and overwrite exist vsftpd binaries or take it from repositories and add to configuration file
option allow_writeable_root=yes.
(não consigo compilar neste servidor.)