FTP架构图
- ftp含义:ftp是一种文件传输协议:用来上传和下载,实现远程共享文件,和统一管理文件
- 工作原理:用于互联网上的控制文件的双向传输 是一个应用程序。工作在TCP/IP协议簇的,其传输协议是TCP协议提高文件传输的共享性和可靠性,使用C/S模式的工作方式连接时同时处理服务器和客户端的连接命令和数据传输,FTP将命令和数据分开传输,提高传输效率
- 两种传输模式:文本模式:ASCII模式美国信息交换信息标准码 这种模式传输文件使用ASCII标准字符序列,一般只用于传输文件文件的传输
- 二进制模式:又称为Binary这种模式不会转换文件中的字符序列,跟适合传输程序图片等非文本文件
- FTP的两种模式:
主动模式:客户端使用随即端口与服务器的21好端口建立控制连接,服务器端主动的使用20号端口向客户端的随机端口建立据连接,经过三次握手完成
被动模式:客户端使用随即端口向服务器的21号端口建立管理连接,服务器使用建立好的管理通道向客户端发送一个随机的端口号, 然后客户端随机的向服务器端发过来的端口经过三次握手后建立好这个数据连接
使用两个端口:分别时控制端口和数据端口,控制端口使用21,数据端口主动模式先是20.被动模式下是一个随机的端口号
- 概要:FTP连接方式:两个阶段--》管理连接,数据连接
管理连接:客户端使用随机端口(大于1024,高位端口)连接服务器的21端口。
数据连接:建立在管理连接之上
主动模式:服务器(20端口)主动的向客户端(随机端口)发起连接(服务器连接客户端)
客户端的防火墙会拦截服务器发起的拦截
被动模式:服务器(随机端口)等待客户端(随机端口)向自己发起连接(客户端连服务器) 服务器需要处理防火墙(关闭,设置策略)
- 三种用户登陆方式
普通本地用户模式
Local_enable=YES ###允许本地用户访问
Write_enable=YES ##本地用户的可写权限
Local_umask=022 ##本地用户上传文件的权限减去这个umask值 --反掩码
Userlist_deny=YES ##是否禁用user_list列表中的用户账号 若启用必须等于===NO
Userlist_enable=YES ##是否启用user_list列表中的用户账号
黑名单和白名单:ftpusers黑名单文件,存在该文件中的用户无法登陆
User_list 白名单文件,如果设置
userlist_deny=NO Userlist_enable=YES则只允许该列表中的用户登录
若一个用户同时存在两个文件中,黑名单生效,该用户不能登陆
- 虚拟用户模式
使用虚拟用户可以将用户的登录名和密码不相同,提高服务器的安全性
第一步:创建文本格式的用户名和密码 奇数行为用户名,偶数行为密码
第二步:建立虚拟FTP用户的数据库文件
第三步:添加虚拟用户的映射账号
第三步:为虚拟用户建立PAM认证文件
第四步:修改配置文件添加虚拟用户的支持
Local_enable=YES #需要映射本地用户所以启用
Write_enable=YES ##启用上传写入权限
Guest_enable=YES ##开启虚拟用户
Anon_umask=022 ### 指定上次权限掩码
Guest_username=* ###指定映射的本地系统用户
Pam_serrivce_name=vsftpd.vu ##指定新的pam认证文件
User_config_dir=///*/ ###为不同的虚拟用户设置不同的权限
- 匿名用户模式:
anonymous_enabled=YES ##允许匿名访问模式。默认开的
Anonumask=022 ##匿名用户上传文件或目录权限,所上传的文件或目录的权限减去022文件默认权限是644 目录的755
Anon_upload_enable=YES ##允许匿名用户上传文件
Anon_mkdir_write_enable=YES ##允许匿名用户创建目录
Anon_other_ write_enable=YES ##允许匿名用户有其他的写入权限 (删除或者修改)
实验环节(在Linux的环境下)
1.开启两个主机,模拟服务器和客户端。再分别在服务器端和客户端下载FTP服务,在服务端开启ftp服务,在客户端进行访问测试:ftp 192.168.10.101
2.查看vsftpd的配置文件
二.匿名访问FTP服务
1.准备匿名访问FTP访问目录
touch /var/ftp/text
chown ftp /var/ftp/pub
chmod 755 /var/ftp/pub
cd /var/ftp/pub
ls
2.开放匿名用户
在配置文件中添加以下内容
vim /etc/vsftpd/vsftpd.conf
anon_umask=022 是否启用匿名用户
anon_upload_enable=yes #控制匿名用户对文件(非目录)上传权限
anon_mkdir_write_enable=yes #控制匿名用户对文件夹的创建权限
anon_other_write_enable=yes #控制匿名用户对文件和文件夹的删除和重命名
systenctl restart vsftpd
nststat -anpt | grep vsftpd 追踪vsftp服务
3.测试匿名FTP服务器
1.测试访问
(2)wget测试
4.用户验证的FTP服务
修改配置文件信息
systemctl restart vsftpd
useradd zhangsan
passwd zhangsan
(2)客户端测试
touch aaa 创建一个空文件
ftp 192.168.10.101
(3)开启root访问权限
默认root等内置的账户不许访问FTP服务
[root@localhost ~]# vi /etc/vsftpd/user_list
在root账号前价格注释符
#root
[root@localhost ~]# vi /etc/vsftpd/ftpusers
在root账号前价格注释符
#root
客户端用root账号登录测试
(4)使用user_list用户列表
vim /etc/vsftpd/user_list
添加几个账号
zhangsan
lisi
wangwu
vim /etc/vsftpd/vsftpd.conf
添加下面两句
在客户端用列表中的账号登录(登录成功)
用列表中不存在的账号登录(无法登录)
5.其他配置
(1)修改监听地址与端口
vim /etc/vsftpd/vsftpd.conf
开启监听服务
添加监听地址
添加监听端口
关闭监听ipv6服务
systenctl restart vsftpd
(2)客户端测试
ftp 192.168.10.101
(3)使用ftp被动模式
vim /etc/vsftpd/vsftpd.conf
添加如下语句
pasv_enable=yes 开启被动模式
pasv_min_port=24500 被动模式最小端口值为24500
pasv_max_port=24600 被动模式最大端口值为24600
1:修改匿名用户的目录
注意:默认的ftp匿名用户的目录在/var/ftp下
[root@localhost ~]# mkdir -p /opt/ftp/myftp
[root@localhost ~]# chown ftp /opt/ftp/myftp
2:修改系统用户的ftp根目录
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
添加以下字段:
#anon_root=/opt/ftp
local_root=/opt/ftp