FTP服务-----用来传输文件的协议
FTP (File Transfer Protocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。
FTP服务器默认使用TCP协议的20、21端口与客户段进行通信
20端口用于建立数据连接,并传输文件按数据
21 端口用于建立控制连接,并传输FTP控制命令
FTP工作模式
主动模式:服务器主动发起数据连接
FTP客户端首先和FTP Server 的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
被动模式:服务器被动等待数据连接
在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV命令的时候,FTP server打开一个位于1024和5000之间的随机高位端口并且通知客户端在这个端口上传送数据的请求,然后FTP server将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
FTP服务安装和配置
1.检查软件包并安装
[root@xiayan ~]# rpm -q vsftp #查询软件是否已安装
未安装软件包 vsftp
[root@xiayan ~]# yum install -y vsftpd #安装软件
[root@xiayan ~]# systemctl start vsftpd #开启服务
[root@xiayan ~]# systemctl enable vsftpd #设置开机自启动
2.配置备份
[root@xiayan ~]# cd /etc/vsftpd/
[root@xiayan vsftpd]# cp vsftpd.conf vsftpd.conf.bak #备份配置文件
匿名用户登录
修改配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //开启匿名用户访问,默认开启
write_enable=YES //开放服务器的写权限,默认开启
anon_umask=022 //设置匿名用户上传数据的权限(反掩码)
anon_upload_enable=YES //允许匿名用户上传文件,默认注释
anon_mkdir_write_enable=YES //允许匿名用户创建(上传)目录,默认注释
anon_other_write_enable=YES //允许删除、重命名、覆盖等操作,需自行添加
[root@xiayan ~]# chmod 777 -R /var/ftp/pub/ //更改pub权限,否则匿名用户无法进行读写
#为匿名访问ftp的根目录下的 pub子目录设置最大权限,以便匿名用户上传数据
chmod 777 /var/ftp/pub/
#开启服务,关闭防火墙和增强型安全功能
systemctl start vsftpd
systemctl stop firewalld
setenforce 0
从服务器下载文件到客户端成功
注意:匿名用户访问的服务器端创建的文件要在/var/ftp/目录下
用户登录
设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录)
修改配置文件
vim /etc/vsftpd/vsftpd.conf
local_enable=Yes #启用本地用户
anonymous_enable=NO #关闭匿名用户访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
local_umask=077 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)
chroot_local_user=YES #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限重启服务
systemctl restart vsftpd
修改匿名用户、本地用户登录的默认根目录
anon_root=/var/www/html #anon_root 针对匿名用户
local_root=/var/www/html #local_root 针对系统用户(手动添加)
使用user_list 用户列表文件
vim /etc/vsftpd/user_list
//末尾添加zhangsan用户
zhangsanvim /etc/vsftpd/vsftpd.conf
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=NO#设置白名单,仅允许user_list用户列表文件的用户访问。
userlist_deny=YES
#默认为YES,为黑名单,禁止user_list用户列表文件的用户访问
创建两个用户 cx www,用户cx加入到/etc/vsftpd/user_list中
1.当userlist_enable=YES,userlist_deny=NO时,仅允许/etc/vsftpd/user_list中用户登录
2.当userlist_enable=YES,userlist_deny=YES时,设置/etc/vsftpd/user_list为黑名单
3. userlist_enable=NO,userlist_deny=NO时,都可以
4.userlist_enable=NO,userlist_deny=YES时,都可以