参考资料:
Pure-ftpd服务安装设置 at Ubuntu Wiki
Debian自带PureFTPd配置文件在哪里

按照下面的步骤安装配置puretftpd:
安装
sudo apt-get install pure-ftpd

配置
ubuntu 的 pure-ftpd 的配置文件很特别,都是放到 “/etc/pure-ftpd/conf” 目录下,而且是以选项为文件名,选项值为文件内容。
下面介绍的配置请把选项名作为文件名在 “/etc/pure-ftpd/conf” 下新建一个文本文件,然后内容就写选项的值。
匿名登录功能
默认情况下不开启匿名登录功能的,把 /etc/pure-ftpd/conf/NoAnonymous 的内容改为 no 在“系统->系统管理->用户名和组”新建一个叫“ftp”的用户名(一定要是这个名字),“高级”里面的主组的话可以新建一个叫“ftpgroup”的组来方便管理,如果不想“ftp”具备登录本地系统的功能,可以在账户属性的“高级”里的“高级设置”的“Shell”里选“/bin/false”,主目录就选一个你想要匿名用户登录是所在的目录就可以了,我是设置了“/var/ftp/public”。
到这里设置完毕后,重启 ftp 服务(最好重启系统)
sudo /etc/init.d/pure-ftpd restart
匿名用户应该就能登录了
虚拟用户设置
在“系统->系统管理->用户名和组”新建一个叫“ftpuser”的用户名(ftpuser可以是你自己喜欢的一个名字),主组的话可以推荐选“ftpgroup”来方便管理,如果不想“ftpuser”具备登录本地系统的功能,可以在账户属性的“高级”里的“高级设置”的“Shell”里选“/bin/false”,主目录就选一个你想要该用户登录是所在的目录就可以了(其实是我没有测试如果虚拟用户和实际用户的主目录设置了不同的目录的结果),我是设置了“/var/ftp”。
然后
sudo pure-pw useradd ftpuser -u ftpuser -d /var/ftp
会提示你设置一个密码的。
这个命令就是用本地系统中的 “ftpuser” 用户登录,虚拟用户名为“ftpuser”,“ftpuser” 的主目录在 “/var/ftp”
虚拟用户和本地用户的名字可以不一样的,自己改,其实ftpuser不建立也行,可以直接用“ftp”这个用户的。用户登录 ftp 后的主目录是以这条命令所指定的主目录为准的。
添加完之后,让 pure-ftpd 建立虚拟用户数据

pure-pw mkdb
生成的文件在 “/etc/pure-ftpd/pureftpd.pdb”

但是并不能登陆ftp,具体错误是,user ok,require password,但当输入之前设置的密码时,提示530鉴权错误,网上搜了很多都得不到解决。
在水木Linux系统应用版发现了这篇回复Debian自带PureFTPd配置文件在哪里,按照说明进行设置一切ok
出现问题时曾想到直接下载源码进行重新编译安装,现在看来这样子也是能够解决问题的。
debian带的pure-ftpd的配置方式有一些特殊的地方:

首先debian带的pure-ftpd默认是用pure-ftpd-wrapper来处理选项的
这样在/etc/pure-ftpd/conf目录里每一个文件名代表一个选项
比如建立一个/etc/pure-ftpd/conf/Bind,在里面写上 地址,端口保存好
然后运行/etc/init.d/pure-ftpd restart你就能看到新加的选项和参数起作用了
可以man pure-ftpd-wrapper来看看具体的参数

再有就是认证方式的选项,也都作为单独的文件放在/etc/pure-ftpd/conf目录中
在/etc/pure-ftpd/auth目录中建立符号链接指向关于认证的conf文件就启用该认证方式
比如你要启用pure-ftpd自带的虚拟用户功能,新加一个test用户,就只需要以下几步:

1. 建立选项文件
   # cat > /etc/pure-ftpd/conf/PureDB
   /etc/pure-ftpd/pureftpd.pdb
   Ctrl-D
2. 链接到auth目录启用认证方式
   # cd /etc/pure-ftpd/auth
   # ln -s ../conf/PureDB 65puredb

3. 加一个test用户,这会生成/etc/pure-ftpd/pureftpd.pdb
   # pure-pw useradd test -u ftp -d /home/ftp -m
   输密码
4. # /etc/init.d/pure-ftpd restart

就启用test虚拟用户了