vsftpd(very secure FTP,非常安全的FTP)是一个基于GPL发布的类unix系统上使用的ftp服务器软件,目前

已经被许多大型企业的ftp站点采用.
   vsftpd除了这与生俱来的安全性以外,高速与高稳定性也是vsftpd的两个重要的特点,在速度方面,千兆以太
网上的下载速度可达86Mbit/s ,在稳定方面,单机可支持4000个以上的并发用户同时连接.
   vsftpd的用户认证方式有一下几种
         匿名用户
         授权用户  ->系统用户  
                           ->虚拟用户 ->本地db库文件
                                                ->mysql数据库
                                                ->LDAP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
目录
一,vsftpd的安装
二,vsftpd.conf配置文件详解
三,基于本地db库文件认证的vsftpd
四,基于mysql数据库认证的vsftpd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

一.使用yum的方式安装vsftpd
1. 安装vsftpd
  1. #yum -y install vsftpd 
2.启动vsftpd服务,并下次开机自动启动
  1. #service vsftpd restart 
  2. #chkconfig vsftpd on 

二.vsftpd.conf配置文件详解
      默认使用rpm安装的vsftpd主配置文件在/etc/vsftpd/vsftpd.conf 这个文件里有诸多的选项,下面来介绍下它们其中的妙意
1.匿名用户类
  1. Anonymous_enable=yes 是否允许匿名用户访问 
  2.  
  3. Anon_umask=022 设置匿名用户所上传文件的默认权限掩码
  4.  
  5. Anon_root=/var/ftp 设置匿名用户的ftp根目录(不设置默认在/var/ftp目录下) 
  6.  
  7. Anon_upload_enable=yes 是否允许匿名用户上传文件 
  8.  
  9. Anon_mkdir_write_enable=yes 是否允许匿名用户创建目录的写入权限 
  10.  
  11. Anon_other_write_enable=yes 是否允许匿名用户有其它写入权限如:对文件 改名 覆盖 及删除
  12.  
  13. Anon_max_rate=0 限制匿名用户最多传输速率0为不限制 
2.本地用户类
  1. Local_enable=yes 是否允许本地系统访问 
  2.  
  3. Local_umask=022 设置本地用户所上传的文件默认权限掩码 
  4.  
  5. Local_root=/var/ftp 设置本地用户的ftp跟目录 
  6.  
  7. Chroot_local_user=yes 是否将ftp本地用户禁锢在宿主目录里 
  8.  
  9. Local_max_rate=0 限制本地用户最大的传输速率0为不限制 (单位为字节) 
3.全局配置类
  1. Listen=yes  是否以独立运行的方式监听服务 
  2.  
  3. Listen_port=21 设置监听ftp服务的端口 
  4.  
  5. Write_enable=yes 启用任何形式的写入权限(如上传 删除文件等) 都需要开启此项 
  6.  
  7. Download_enable=yes 是否允许下载文件(建立仅限于浏览,上传的ftp服务器是此项可设为NO) 
  8.  
  9. Dirmessage_enable=yes 用户切换进入目录时显示message文件(如果存在)的内容 
  10.  
  11. Xferlog_enable=yes 启用xferlog日志 默认记录到/var/log/xferlog文件 
  12.  
  13. Xferlog_std_format=yes 启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
  14.  
  15. Connect_from_Port_20=yes 允许服务器主动模式(从20端口建立数据连接) 
  16.  
  17. Pasv_enable=yes 允许被动模式连接 
  18.  
  19. Pasv_max_port=24600 设置用于被动模式的服务器的最大端口号 
  20.  
  21. Pasv_ min_port=24500 设置用于被动模式的服务器的最小端口号 
  22.  
  23. Pam_Service_name=vsftpd 设置用于用户认证的PAM文件位置 
  24.  
  25. Userlist_enable=yes 是否启用use_list用户列表文件 
  26.  
  27. Userlist_deny=yes 是否禁止user_list用户列表中的用户 
  28.  
  29. Max_clients=0 最多允许多少个客户端同时连接(0为无限制) 
  30.  
  31. Max_per_ip=0 对来自相同ip地址的客户端最多允许多少个并发连接数(0 为无限制) 
  32.  
  33. Tcp_wrappers=yes 是否启用tcp_wrappers 机制 

三,配置虚拟用户,使用本地db库作为认证来源
1,安装相关软件包
  1. #yum -y install db4-utils 
2.创建虚拟用户映射的本地用户
  1. #useradd -d /ftp -s /sbin/nologin vuser 
  2. #chmod o=rwx /ftp 
3,修改vsftpd的主配置文件,
  1. #vim /etc/vsftpd/vsftpd.conf 内容如下 
  2. anonymous_enable=YES 
  3. local_enable=YES 
  4. write_enable=YES 
  5. local_umask=022 
  6. dirmessage_enable=YES 
  7. xferlog_enable=YES 
  8. connect_from_port_20=YES 
  9. xferlog_std_format=YES 
  10. listen=YES 
  11.  
  12. pam_service_name=vsftpd 
  13. userlist_enable=YES 
  14. tcp_wrappers=YES 
  15. guest_enable=yes    #启用用户映射功能 
  16. guest_username=vuser  #虚拟用户映射的系统用户 
  17. user_config_dir=/etc/vsftpd/vuser_conf  #虚拟用户的权限目录 
4.修改PAM认证
  1. #vim /etc/pam.d/vsftpd #注释或删除文件里的内容,内容如下 
  2. auth required pam_userdb.so db=/etc/vsftpd/ftpuser 
  3. account required pam_userdb.so db=/etc/vsftpd/ftpuser 
5,建立虚拟用户的用户名密码文件
  1. vim /etc/vsftpd/user.txt #内容如下 
  2. test          #用户名 
  3. 1111          #test的密码 
  4. tech          #用户名 
  5. 2222          #tech的密码 
6,生成虚拟用户的db库文件
  1. #db_load -T -t hash -f /etc/vsftpd/user.txt  /etc/vsftpd/ftpuser.db 
  2. #chmod 600 /etc/vsftpd/ftpuser.db 
7,给虚拟用户配置访问权限
  1. 给test用户配置权限  
  2. #vim /etc/vsftpd/vuser_conf/test 内容如下 
  3. local_root=/ftp    #设置ftp用户的根目录 
  4. anon_upload_enable=yes       #可以上传文件 
  5. anon_mkdir_write_enable=yes  #可以创建目录及写入权限   
  6. anon_other_write_enable=yes  #用户有其他的权限(如对文件改名覆盖及删除 
  7.  
  8.  
  9. 给tech用户设置权限 
  10. #vim /etc/vsftpd/vuser_conf/tech  内容如下 
  11. local_root=/ftp     #设置根目录 
  12. anon_upload_enable=yes       #可以上传文件 
  13. anon_mkdir_write_enable=yes  #可以创建目录及写入权限   
  14. anon_other_write_enable=yes  #用户有其他的权限(如对文件改名覆盖及删除 
8,重启vsftpd服务
  1. #service vsftpd restart