父文件夹 子文件夹 拥有者(上传) 所属组(下载) umask
zjyw ftp_zhqz ftp_hxxt 027
ylhx ftp_zhqz ftp_hxxt 027
zhqz qtdz ftp_zhqz ftp_hxxt 027
dsf ftp_zhqz ftp_yl 027
yl ftp_yl ftp_zhqz 027
xg ftp_hxxt ftp_xg 027
cw ftp_hxxt ftp_cw 027
hxxt nxy ftp_hxxt ftp_nxy 027
dx ftp_hxxt ftp_dx 027
sj ftp_hxxt ftp_sj 027
xgcg ftp_xg ftp_cw 027

1、安装vsftpd
#rpm -ivh vsftpd-******.rpm
2、设定自动启动
#chkconfig vsftpd on
3、建立虚拟用户初始文件(用户名和密码)
#touch /etc/vsftpd/vsftpd_login.txt                       vsftpd_login为文件名,可以任意命名
#echo zhqz>>/etc/vsftpd/vsftpd_login.txt             用户名
#echo zhqz>>/etc/vsftpd/vsftpd_login.txt             密码
#echo hxxt>>/etc/vsftpd/vsftpd_login.txt
#echo hxxt>>/etc/vsftpd/vsftpd_login.txt
#echo yl>>/etc/vsftpd/vsftpd_login.txt
#echo yl>>/etc/vsftpd/vsftpd_login.txt
#echo xg>>/etc/vsftpd/vsftpd_login.txt
#echo xg>>/etc/vsftpd/vsftpd_login.txt
#echo cw>>/etc/vsftpd/vsftpd_login.txt
#echo cw>>/etc/vsftpd/vsftpd_login.txt
#echo nxy>>/etc/vsftpd/vsftpd_login.txt
#echo nxy>>/etc/vsftpd/vsftpd_login.txt
#echo dx>>/etc/vsftpd/vsftpd_login.txt
#echo dx>>/etc/vsftpd/vsftpd_login.txt
#echo sj>>/etc/vsftpd/vsftpd_login.txt
#echo sj>>/etc/vsftpd/vsftpd_login.txt
#echo admin>>/etc/vsftpd/vsftpd_login.txt
#echo admin>>/etc/vsftpd/vsftpd_login.txt
4:、将虚拟用户文件转换为可识别的数据库文件
此处需用到三个rpm包(db4、db4-level、db4-utils)
#db-load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db
  数据库命令            原虚拟用户文件            新虚拟用户数据库文件
注意:此处数据库文件需更改权限
#chmod 600 /etc/vsftpd/vsftpd_login.db
5、编辑pam使用该数据库文件
注释掉原有全部代码,添加以下代码
#auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
#account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
6、此处为方便,我先建立相关文件夹
#mdkri /ftp
#mkdir /ftp/zhqz /ftp/hxxt
#mkdir zjyw ylhx qtdz dsf yl
#mkdir xg cw nxy dx sj xgcg
7、建立虚拟用户对应系统用户
#useradd -d /ftp/zhqz -s /sbin/nologin ftp_zhqz
 useradd  建立用户命令
 /ftp/zhqz  指定用户主目录
 /sbin/nologin  指定用户不可登陆系统
 ftp_zhqz  用户名
#useradd -d /ftp -s /sbin/nologin ftp_hxxt
#useradd -d /ftp/zhqz -s /sbin/nologin ftp_yl
#useradd -d /ftp/hxxt -s /sbin/nologin ftp_xg
#useradd -d /ftp/hxxt/cw -s /sbin/nologin ftp_cw
#useradd -d /ftp/hxxt/nxy -s /sbin/nologin ftp_nxy
#useradd -d /ftp/hxxt/dx -s /sbin/nologin ftp_dx
#useradd -d /ftp/hxxt/sj -s /sbin/nologin ftp_sj
#useradd -d /ftp -s /sbin/nologin ftp_admin
8、改变文件夹拥有者及属组
#chown ftp_admin ftp    改变ftp文件夹拥有者为ftp_admin
#chgrp ftp_admin ftp      改变ftp文件夹属组为ftp_admin组
9、限定任何用户上传的文件均与文件夹拥有者和属组相同
#chmod 3750 /ftp
修改后权限为drwxr_s__T
那么上传到ftp文件夹下的文件拥有者均为ftp_admin,属组也均为ftp_admin组
10、修改vsftpd.conf配置文件
anonymous_enable=no                                        禁止匿名用户登录
write_enable=yes                                                允许写权限
local_enable=yes                                                 允许系统用户登录
connect_form_port_20=no                                  不指定20端口
listen=yes                                                            
pam_service_name=vsftpd                                   pam指定名称
以下为手动添加
chroot_local_user=yes                                         限定用户主目录
user_config_dir=/etc/vsftpd/vsftpd_login               指定虚拟用户配置文件目录
max_clients=50                                                    最大连接客户端数
max_per_ip=1                                                      每ip最大连接数
port_enable=no                                                  
pasv_enable=yes                                                   允许pasv模式
pasv_min_port=65341
pasv_max_port=65242
11、建立每个虚拟用户的单独配置文件
#mkdir /etc/vsftpd/vsftod_login
12、建立上传文件权限
#vi zhqz
guest_enable=yes
guest_username=ftp_zhqz
anon_world_readable_only=no
anon_upload_enable=yes
anon_nkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=027
12、建立下载文件权限
#vi cw
guest_enable=yes
guest_username=ftp_cw
anon_world_readable_only=no