For me work it:
1) Install pure-ftpd
sudo apt-get install pure-ftpd
2) Add group for virtual users
sudo groupadd ftpgroup
3) Add ftp user for virtual user
sudo useradd -g ftpgroup -d /dev/null -s /etc
4) Enable ChrootEveryone option
sudo echo on > /etc/pure-ftpd/conf/ChrootEveryone
5) Enable the virtual user authentication
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/40PureDB
6) And restart pure-ftpd
sudo /etc/init.d/pure-ftpd restart
7) Create the user dir
mkdir /home/ftp/joe
8) Change the owner/group to the ftp user
sudo chown ftpuser:ftpgroup /home/ftp/joe
9) Create user joe with home directory /home/ftp/joe
pure-pw useradd joe -u ftpuser -d /home/ftp/joe
10) Write changes to the database
pure-pw mkdb
UPDATE:
How to change an existing pure-ftpd Virtual username:
1) Go to password file (in my case - ubuntu server):
sudo nano /etc/pure-ftpd/pureftpd.passwd
2) Change the user name for example:
An existing (user name josecarlosold):
josecarlosold:$1$ITkf2XA0$imFzCWux1rsnPieBlEttQ0:1001:1001::/home/josecarlos/./::::::::::::
NEW (user name josecarlosnew):
josecarlosnew:$1$ITkf2XA0$imFzCWux1rsnPieBlEttQ0:1001:1001::/home/josecarlos/./::::::::::::
3) Re-make the pure-ftpd DB:
sudo pure-pw mkdb
4) Open your ftp client and try connect with the new username josecarlosnew
and the same password that josecarlosold
. Remember josecarlosold
and josecarlosnew
are user to explant.
Reference