O motivo é muito provável devido à conta ftp
ter /bin/false
ou semelhante ao seu shell padrão:
$ getent passwd ftp
ftp:x:116:127:ftp daemon,,,:/srv/ftp:/bin/false
Provavelmente não é uma boa idéia em termos de segurança, mas se você quiser definir o shell do usuário para algo válido, você pode usar chsh
, por exemplo:
# chsh ftp /bin/bash
chsh ftp
Changing the login shell for ftp
Enter the new value, or press ENTER for the default
Login Shell [/bin/false]: /bin/bash