----基于本地配置文件的VSFTPD
环境:CentOS6.3 64
软件:vsftpd-2.2.2
端口:控制端口21
     数据交互端口20或者随机port

对于服务器端来说,分主动模式、被动模式,
他们在交互时会都建立TCP链接,通常称为TCP的3次握手;
结束时断开TCP链接,通常成为TCP的4次挥手,这里不做详细解释,请看下图:
基于本地配置文件的vsftpd_vsftpd

安装启动vsftpd:
# yum -y install vsftpd
# service vsftpd start
# chkconfig vsftpd on        //开机启动

默认配置:
1. 支持匿名用户ftp,anonymous,访问后根目录为:/var/ftp,只能下载根目录下的内容;
2. 支持系统用户,访问后根目录为系统用户的$HOME目录,可下载任何能读取到的系统文件,可上传文件到任何可以写的系统目录;
3. 支持虚拟用户;

--------主配置文件:vsftpd.conf
基本配置参数:
anonymous_enable=YES    //默认开启匿名访问;
local_enable=YES        //允许本地用户访问;
local_root=/data/vsftpd    //指定本地用户访问的默认目录;
write_enable=YES        //支持所有用户可写;
local_umask=022            //上传的文件权限设置;
xferlog_enable=YES        //默认启用日志:/var/log/xferlog;
chroot_local_user=YES    //锁定本地用户的家目录,本地用户只能访问自己的家目录,安全策略;
anon_max_rate=200000    //匿名用户最大的下载速率为200k
local_max_rate=1000000    //本地用户最大下载速率1M
max_clients=1500        //最大允许1500用户同时访问
max_per_ip=2            //每个独立IP最大连接数(下载线程数)

下面两个参数用来限制被动模式打开的数据端口范围:
pasv_min_port=1024
pasv_max_port=2048

更多的配置参数可以man vsftpd.conf查看。


--------不同的本地帐号有不同的访问权限

目录树:
/data/vsftpd/
├── HR
├── IT
├── NEWS
└── SPORTS
   ├── CBA
   └── NBA
要求:
   admin:        vsftpd管理员,可以上传下载vsftpd根(/data/vsftpd,后面简称根)目录下任何文件;
   hr_admin:    只能管理HR目录下的文件
   it_admin:    只能管理IT目录下的文件
   news_admin:    只能管理NEWS目录下的文件
   sports_admin:    管理SPORTS目录下的文件
   cba_admin:    管理CBA目录下的文件
   nba_admin:    管理NBA目录下的文件
   nba01:        可访问NBA目录下的文件
写的挺多,其实最重要的是实现本地用户管理策略:

创建相关帐号:
   # useradd admin
   # useradd it_admin
   # useradd sports_admin
   # useradd nba_admin
   # useradd nba01
为上面帐号创建密码:
   # passwd 帐号名                //这里不写了,可以写个脚本去更快的创建密码。

全局配置(主配置文件):
   # vim /etc/vsftpd/vsftpd.conf
   user_config_dir=/etc/vsftpd/user_conf_dir        //启用用户私有配置支持,并指定存储的位置;
   local_max_rate=50000
   max_per_ip=2
   write_enable=NO

   # service vsftpd restart        //主配置文件被修改必须重启vsftpd;

策略实现(每个用户独立配置文件):
   # mkdir /etc/vsftpd/user_conf_dir    //创建用户的私有配置文件存放目录;
   # cd !$
   # cat admin                     //配置文件名必须跟用户名相同,不然会找不到用户独立配置文件;
   write_enable=YES
   local_root=/data/vsftpd
   local_max_rate=0
   max_per_ip=1024

   # cat sports_admin
   write_enable=YES
   local_root=/data/vsftpd/SPORTS
   local_max_rate=0
   max_per_ip=512

   # cat nba_admin
   write_enable=YES
   local_root=/data/vsftpd/SPORTS/NBA
   local_max_rate=0
   max_per_ip=512

   # cat nba01
   local_root=/data/vsftpd/SPORTS/NBA

///// 注: 配置修改用户独立配置文件可以不用重启vsftpd。