1. 客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路;
2. 然后客户端发出Port指令告诉服务器连接自己的N+1端口来建立一条数据通道;
3. 当FTP服务器接到这一指令时,会使用20端口连接用户在Port指令中指定的端口号N+1来发送数据。
-
被动模式工作过程:
- 客户端从自己的一个任意端口(N > 1024)和FTP服务器的21端口建立控制链路;
- 然后客户端发送Pasv指令,告诉服务器自己要连接服务器的某一个端口;
- 如果服务器上的这个端口是空闲可用的,那么服务器会返回确认信息,之后数据传输通道被建立;但如果服务器上的这个端口被另一个资源所使用,那么服务器返回不确认的信息,那么这是客户端会再次发送Pasv命令。
-
注意:
- 在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的;
- 主动模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端某一个大于1024的端口;
- 被动模式中建立数据传输通道是由客户端发起的,它使用一个大于1024的端口连接服务器的1024端口以上的某一个端口。
二、ftp服务器搭建
需求:在Linux中搭建一个ftp服务器在存储文件,创建一个ftp用户:test,主目录是:/home/test,设置该用户不允许登录服务器,并需要限制该用户不能离开自己的主目录。
【实现步骤】
1.查看系统有没有安装vsftpd
# rpm -qa | grep vsftpd
vsftpd-3.0.2-21.el7.x86_64
注:vsftp(Very Secure FTP)是Linux系统下使用最多的FTP服务端。
2.若没有安装vsftp,则进行安装
# 使用yum工具安装vsftp软件
# yum install -y vsftpd
3.查看vsftpd服务是否开机自启
# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3.建立一个新用户账户test,-d 参数指定用户登入时的主目录,参数-m 表示如果主目录不存在则自动创建
# useradd -d /home/test -m test
为用户设置密码,输入命令:
# passwd 密码
4.vsftpd的配置
安装完成后,执行命令【rpm -ql vsftpd】可以查看与vsftpd相关的配置文件和文档,其中在/etc/vsftpd目录下有三个主要配置文件:
- vsftpd.conf 主配置文件
- ftpusers 指定哪些用户不能访问FTP服务器
- user_list 指定的用户是否可以访问ftp服务器
查看vsftpd.conf配置文件,内容如下:
[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf | grep -v '^#'
#----匿名用户设置----
anonymous_enable=NO #禁止匿名用户登录
#----本地用户设置----
local_enable=YES #允许本地用户登录ftp服务器
write_enable=YES #允许用户想服务器执行写入操作
local_umask=022 #设置服务器上本地用户创建文件的权限掩码
#----欢迎语设置----
dirmessage_enable=YES #启用目录提示消息
#----日志文件设置----
xferlog_enable=YES #启用日志文件功能,记录于/var/log/xferlog
xferlog_std_format=YES #启用标准的日志格式
#----FTP工作方式与端口设置----
connect_from_port_20=YES #主动模式下,是否启用默认的20端口进行数据传输
#----与连接相关的设置----
listen=NO #vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制
listen_ipv6=YES
#----控制用户是否允许切换到上级目录----
chroot_list_enable=YES #开启限制用户在主目录的功能
chroot_list_file=/etc/vsftpd/chroot_list #在chroot\_list文件中加入你要限制的用户名,一行一个用户
#----虚拟用户设置----
pam_service_name=vsftpd #虚拟用户使用PAM认证方式
#----控制用户访问(通过vsftpd.user\_list和ftpusers文件来实现)----
userlist_enable=YES #是否启用userlist\_file文件
userlist_file=/etc/vsftpd/user_list #允许user\_list文件中加入的用户访问ftp服务器
#----控制主机访问----
tcp_wrappers=YES #vsftpd服务器检查/etc/hosts.allow和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器
#----其它设置----
allow_writeable_chroot=YES #去除用户主目录的写权限
在上述vsftpd.conf的相关选项的配置下,对ftpuser文件和user_list文件的配置如下:
- ftpusers文件:不添加test用户,表示该用户不能访问ftp服务器
- user_list文件:在/etc/vsftpd.conf主配置文件中设置了userlist_deny=YES(默认情况),则不添加test用户,表示该用户不能访问ftp服务器
5.开启vsftpd服务
#service vsftpd start
6.访问ftp服务器方法
- 浏览器:ftp://ip地址
- ftp客户端软件,比如FileZilla,输入ftp服务器IP,用户名,密码,端口:21
- 命令行终端:ftp 用户名@ftp服务器IP,或 ftp 127.0.0.1
注意:关闭ftp服务器上的防火墙及Selinux(防止端口限制)
三、补充知识点
(1)FTP日志功能配置
xferlog\_enable=YES //开启日志功能
xferlog\_file=/var/log/xferlog //日志文件的存放位置
xferlog\_std\_format=YES //使用标准格式记录日志
xferlog该日志文件记录了FTP会话,可以显示出用户向从FTP服务器拷贝了什么文件。其中一条记录如下:
最全的Linux教程,Linux从入门到精通
======================
-
linux从入门到精通(第2版)
-
Linux系统移植
-
Linux驱动开发入门与实战
-
LINUX 系统移植 第2版
-
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!