I use pure-ftpd as my FTP server, mostly because it was on the first server I managed and I got used to it. I've been having a little difficultly with setting it up on two new cloud computers and I came across this helpful note.
I set up new linux users and then when I tried to connect via FTP I would get a 530 Login authentication failed.
For whatever reason, if you create a new user and want to use it for FTP, the user must have a shell assigned. You can check the shell by looking at the /etc/passwd file and looking at the last parameter. If the user has no valid shell assigned, you can set this with a command like this:
chsh -s /bin/bash theusername