vsftpd 的作用:
 提供各主机之间文件共享服务,可以应用在互联网中
 能支持上传下载目录,安全性比tftp高,功能更强大,双向传输,不受操作系统限制,只要支持vsftpd协议,就是vsftpd服务器。

 ftp协议 文件传输协议

 ftp的工作模式:
 1.主动模式
 2.被动模式

 两个端口
 ftp端口 21(连接端口) 20(数据端口)

 主动
 c s
 c 1025-------------------------连接通道--------------> 21 (连接端口) s
 预先开启1025(数据端口)
 s 20(数据端口)-------数据通道--------------> c 1026

 客户端使用1024以上的端口连接服务器的21号端口,并且会事先开启一个1026的端口准备让服务器连接,服务器得知客户端准备的端口后,就用20端口与客户端连接,创建数据链路时server端处于主动连接客户端的状态故称为主动传输模式。

 被动
 c 1025-------------------------连接通道--------------> 21 (连接端口) s
 接受后预先开启1026
 c 1028---------------------------> 1026 s

 客户端使用1024以上的端口连接服务器的21号端口,服务器接到连接请求后开启1026端口等待客户端来连接,再通知客户端这个等待连接的端口号是1026
 客户端接受到服务器的信息后,开启一个新的端口1028与1026进行连接,创建数据连接时,server端处于被客户端连接的状态,故称为被动传输模式



 数据传输模式
 ascii
 二进制

 ftp服务端
 vsftpd

 客户端
 lftp
 ftp
  服务端:
 准备工作
 1.关闭防火墙
 /etc/init.d/iptables stop
 chkconfig iptables off

 2.关闭selinux
 vim /etc/sysconfig/selinux
 SELINUX=disabled | permissive

 setenforce 0

 3.配置固定ip地址

 搭建vsftpd服务
 vsftpd-2.2.2-11.el6_4.1.x86_64

 1.查看软件是否安装
 # rpm -qa |grep vsftpd
 vsftpd-2.2.2-11.el6_4.1.x86_64

 2.安装软件包
 # yum install vsftpd -y

 3.查看软件包产生的文件
 # rpm -ql vsftpd
 /etc/logrotate.d/vsftpd 做日志切割
 /etc/pam.d/vsftpd 认证相关的
 /etc/rc.d/init.d/vsftpd 启动脚本
 /etc/vsftpd 配置文件的主目录
 /etc/vsftpd/ftpusers 做访问控制
 /etc/vsftpd/user_list 做访问控制
 /etc/vsftpd/vsftpd.conf 配置文件
 /etc/vsftpd/vsftpd_conf_migrate.sh 配置文件的脚本
 /usr/sbin/vsftpd vsftpd相关命令
 ...
 /var/ftp 通过客户端进去的家目录 即匿名用户家目录 (权限很严格,只有root账户有权限,是ftp的根目录)<-----ftp的特点
 /var/ftp/pub 默认上传下载的目录

 # /etc/init.d/vsftpd restart 启动服务 临时
 chkconfig vsftpd on 开机启动 2 3 4 5
 chkconfig --level 5 vsftpd on 只在5级别开机启动

 提供三类用户访问:本地用户,匿名用户,虚拟用户
 本地用户:服务器上存在的用户
 匿名用户:实际上有一个与之对应的系统账户,ftp这个用户默认就是匿名用户所对应的用户,匿名用户被映射为ftp
  客户端:
 lftp
 ftp

 1. # yum install lftp ftp -y

 2. # lftp 192.168.1.17

 ? 查看帮助
 help [<cmd>] 查看帮助

 ls [<args>] 查看文件列表

 cd <rdir> 切换服务器上目录
 lcd <ldir> 切换本地目录 等同与 !cd

 pwd [-p] 显示当前绝对路径

 exit [<code>|bg] 退出

 cat [-b] <files> 查看文件的内容
 more <files> 查看文件内容

 put [OPTS] <lfile> [-o <rfile>] 上传
 mput [OPTS] <files> 批量上传

 get [OPTS] <rfile> [-o <lfile>] 下载 把服务器上的文件下再到本地某个位置
 get a.txt -o /tmp/b.txt 下载且重命名
 mget [OPTS] <files> 批量下载

 mirror [OPTS] [remote [local]] 上传或下载目录
 mirror 目录名 下载目录到本地
 mirror -R 本地目录 上传本地目录到服务器

 mkdir [-p] <dirs> 创建目录

 rm [-r] [-f] <files> 删除文件

 !<shell-command>
 !ls
 !pwd
 查看本地当前目录有哪些文件
 无!的命令都表示在服务器上执行


 ftp 192.168.1.17
 ? 帮助
 help
 ! 本地命令
 get 下载
 mget 批量下载
 put 上传
 mput 批量上传
 mkdir 创建目录
 pwd 显示当前绝对路径
 exit 退出 quit bye
 cd 切换目录
 lcd 切换本地目录
 ls 查看当前目录列表
 rmdir 删除目录
 delete 删除文件
 mdelete 删除多个文件

 --------------------------------------------------------
 # vim /etc/vsftpd/vsftpd.conf----------------------------匿名用户----------------------------------
 注:默认支持下载,无需设置下载权限

 允许匿名用户访问ftp
 anonymous_enable=YES

 允许匿名用户上传文件
 anon_upload_enable=YES
 chmod o+w /var/ftp/pub

 匿名用户可以创建目录
 anon_mkdir_write_enable=YES

 支持匿名用户删除文件和目录 (只可以删除空目录rmdir rm)
 anon_other_write_enable=YES

 匿名用户只可以下载可读的文档 想下载必须有读权限
 anon_world_readable_only 默认开启

 更改匿名用户默认上传下载的路径
 anon_root=/pub

 当匿名用户上传文件的时候可以改变上传文件的拥有人
 chown_uploads=YES
 chown_username=root
  ----------------------------全局配置-----------------------------------
 进入目录的时候有消息提示
 dirmessage_enable=YES
 如果想切换到ftp指定的路径下有消息提示需要在指定的目录创建一个.message
 vim /var/ftp/.message
 --welcome to ftp

 日志相关的设置
 xferlog_enable=YES //启用日志 上传下载的信息会记录在日志中
 xferlog_file=/var/log/xferlog //设置日志文件的路径名称
 xferlog_std_format=YES //启用 日志的记录格式 日志将会写成xferlog标准格式

 主动模式端口
 connect_from_port_20=YES

 空间会话超时时间,连接后600s内无任何操作就强制退出,做控制连接
 idle_session_timeout=600

 数据连接超时 限制下载过大的文件 下载文件的时间不能超过120s
 data_connection_timeout=120

 修改默认的安全用户 之前的安全用户是ftp
 nopriv_user=ftpsecure 最开始的 可以改为:nopriv_user=tom

 ascii_upload_enable=YES
 ascii_download_enable=YES

 定义登录ftp服务器的欢迎信息
 ftpd_banner=Welcome to blah FTP service.

 拒绝邮件
 deny_email_enable=YES
 banned_email_file=/etc/vsftpd/banned_emails

 递归显示 ls -R
 ls_recurse_enable=YES

 监听ipv4地址
 listen=YES
  -----------------------------本地用户---------------------------------
 local_enable=YES

 本地用户可以上传
 write_enable=YES

 本地用户上传下载文件的umask
 local_umask=022

 更改本地用户默认上传下载的路径 创建/localroot目录
 local_root=/localroot

 所有人都不能切换
 chroot_local_user=YES 开启禁锢功能 开启后下面两条不需要设置,所有人不能切换
 chroot_list_enable=NO
 chroot_list_file=/etc/vsftpd/chroot_list

 黑名单 在清单里面的人不可以切换
 chroot_local_user=NO
 chroot_list_enable=YES 禁锢用户列表
 chroot_list_file=/etc/vsftpd/chroot_list 在此文件中的用户都被禁锢 此文件事先不存在自己创建

 白名单 所有在此清单里面的人可以切换目录
 chroot_local_user=YES
 chroot_list_enable=YES
 chroot_list_file=/etc/vsftpd/chroot_list

 vim /etc/vsftpd/chroot_list
 tom