1.system version
CentOS Linux release 7.2.1511 (Core)
2.install vsftpd
yum install -y vsftpd
3.create rootdir
mkdir /data/program/ftpdata && chmod a-w /data/program/ftpdata/
4.create local user(for map to virtualuser)
useradd -s /sbin/nologin -d /data/program/ftpdata ftpuser
5.install db(for auth)
yum install -y db*
6.create virtual users
cd /etc/vsftpd/
vim virtualuser.txt
user1 # this username
1234qwer # this password
user2 # this username
123.com # this password
7.create db
db_load -T -t hash -f virtualuser.txt /etc/vsftpd/virtualuser.db
8.create pam auth file
vim /etc/pam.d/vsftpd.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser
# if your system is centos6.x release so use this configure:
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtualuser
vim /etc/vsftpd.conf
anonymous_enable=NO
#allow_writeable_chroot # if your vsftpd version is 3.x
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO
listen_ipv6=YES
pam_service_name=ftpuser
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftp01
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/user_conf
10.create each user config dir
cd /etc/vsftpd/ && mkdir user_conf && cd user_conf
# for user1 config
# this user can upload、wirte、download
vim user1
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
/data/program/ftpdata/user1_home/ # virtual user's datadir
# for user2 config
# this user only can read、download, can't upload
vim user2
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
/data/program/ftpdata/user2_home # virtual user's datadir