一、FTP工作原理
FTP是一种文件传输协议,用来上传和下载,实现远程共享文件。
工作原理 : 端口号21号端口,用于互联网上的控制文件的双向传输 是一个应用程序。工作在TCP/IP。
连接时同时处理服务器和客户端的连接命令和数据传输,FTp将命令和数据分开传输,提高传输效率。
FTP连接方式包括管理连接和数据连接
管理连接:客服端使用随机端口(>1024,高段位端口),服务器21号端口。
数据连接:包括主动模式和被动模式
主动模式:客户端使用随机端口与服务器的21号端口建立控制连接,服务器端主动的使用20号端口向客户端的随机端口建立据连接,(服务器连接客户端,客户端防火墙拦截服务器发起的连接)经过三次握手完成)
被动模式:客户端使用随机端口向服务器的21号端口建立管理连接,服务器使用建立好的管理通道向客户端发送一个随机的端口号,然后客户端随机的向服务器端发过来的端口经过三次握手后建立好这个数据连接。服务器(随机端口)等待客户端(随机端口)向自己发起连接(客户端连接服务器)服务器处理防火墙关闭或添加策略。
二、实验步骤
101服务器
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd
102客户端
[root@localhost ~]# yum -y install ftp
[root@localhost ~]# ftp 192.168.10.101 (102连接101服务器)
(1)匿名用户FTP访问
101服务器
[root@localhost ftp]# sed -i '/^#/d' /etc/vsftpd/vsftpd.conf
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022 (反掩码)
anon_upload_enable=yes (匿名用户对文件的上传权限)
anon_mkdir_write_enable=yes (控制匿名用户文件创建的权限)
anon_other_write_enable=yes (控制匿名用户文件删除和重命名的权限)
[root@localhost ftp]# systemctl restart vsftpd
[root@localhost ftp]# netstat -anpt | grep ftp (检查该程序是否运行)
[root@localhost ~]# chown ftp /var/ftp/pub (安全前提下不可以将权限直接给ftp,应传达下一级)
[root@localhost ~]# chmod 755 /var/ftp/pub (更改读写权限)
(2)授权用户
服务器
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
#anon_upload_enable=yes
#anon_mkdir_write_enable=yes
#anon_other_write_enable=yes
chroot_local_user=yes (禁锢在home目录下)
allow_writeable_chroot=yes (允许可写的权限)
客户端检测
[root@localhost ~]# ftp 192.168.10.101
Connected to 192.168.10.101 (192.168.10.101).
220 (vsFTPd 3.0.2)
Name (192.168.10.101:root): zhangsan (zhangsan用户登录)
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/" (home目录,即zhangsan的home)
ftp> put aaa
local: aaa remote: aaa
227 Entering Passive Mode (192,168,10,101,153,206).
150 Ok to send data.
226 Transfer complete.
(3)开启root访问权限
默认root等内置的账户不许访问FTP服务
[root@localhost ~]# vim /etc/vsftpd/ftpusers (注释root)
[root@localhost ~]# vim /etc/vsftpd/user_list (注释root)
(4)修改监听地址和端口
服务器
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
listen=yes
listen_address=192.168.10.101 (监听自己的地址)
listen_port=2121 (监听的端口号)
listen_ipv6=no
pasv_enbale=yes (添加端口号范围)
pasv_min_port=20000
pasv_max-port=20010
客户端
[root@localhost ~]# ftp 192.168.10.101 2121 (要添加端口号)