FTP服务器的工作原理

来自CloudWiki
112.38.217.44讨论2019年7月1日 (一) 08:46的版本 FTP服务器练习题
跳转至: 导航搜索

FTP服务

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层


根据服务的对象不同,可分为:匿名服务器与系统FTP服务器


Linux8-1.png

两种连接方式:

控制连接

控制连接主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应。

数据连接

数据连接是等到传输文件时才临时建立的

FTP的工作体系

服务器与客户机之间利用TCP的21号端口建立控制连接;利用20号端口建立数据连接

具体工作过程如下:

  • 客户机启动客户端程序,请求建立服务器的连接
  • 服务器对客户机进行身份验证
  • 进行相应目录操作和数据传输
  • 断开连接

FTP的数据传输模式

主动传输模式 (Active FTP)

FTP的数据连接和控制连接的方向是相反的。 也就是说,当客户机发出请求之后,是服务器向客户端发起一个用于数据传输的连接。

在FTP主动模式中,服务器端从20端口发起数据连接请求

被动传输模式 (Passive FTP)

FTP的数据连接和控制连接的方向是一致的。 也就是说,当客户机发出请求之后,是客户端向服务器发起一个用于数据传输的连接。

被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况。

FTP服务的使用者

本地用户(real用户)

本地用户既可以登录Shell,又可以FTP登录。
本地用户可以通过输入自己的账号和口令来进行授权登录。
当授权访问的本地用户登录系统后,其登录目录为用户自己的家目录($HOME)。

虚拟用户(guest用户)

如果用户在远程FTP服务器上拥有账号, 且此账号只能用于文件传输服务,则称此用户为虚拟用户或Guest用户。
虚拟用户可以通过输入自己的账号和口令来进行授权登录。
当授权访问的虚拟用户登录系统后,其登录目录为服务器为其指定的目录。
eg:adduser  -s /sbin/nologin  -g  ftp  username

匿名用户(anonymous用户)

如果用户在远程FTP服务器上没有账号,则称此用户为匿名用户。
若FTP服务器提供匿名访问功能,则匿名用户可以通过输入账号(anonmous或ftp) 和口令(用户自己的E-Mail地址)来进行登录。
当匿名用户登录系统后,其登录目录为匿名FTP服务器的根目录(/var/ftp)。


Linux下常见的FTP软件

Vsftpd

Red Hat 中自带了一个高安全性的FTP服务器

Proftp

一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发、发布的免费软件

Wu-ftp

WashingtonUniversity FTP,它是一个著名的FTP服务器软件,它功能强大,能够很好地运行于众多的UNIX操作系统

参考文档: https://www.aliyun.com/zixun/content/2_6_518621.html

vsftpd的配置文件

vsftpd的主配置文件

/etc/vsftpd/vsftpd.conf

vsftpd的PAM配置文件

/etc/pam.d/vsftpd(用户身份验证配置文件)

vsftpd的用户访问控制配置文件

/etc/vsftpd.ftpusers
指定哪些用户不能访问FTP服务器
/etc/vsftpd.user_list
文件中指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。


/etc/vsftpd.ftpusers

设置不允许登录的用户名单

注:/etc/hosts.deny文件用于指定不能访问ftp服务器的用户列表

主配置文件 /etc/vsftpd/vsftpd.conf

#vi  /etc/vsftpd/vsftpd.conf
功能:设置FTP服务器相关选项
文件格式:
		#说明语句
         ……
         配置选项
         ……


默认配置:

anonymous_enable=YES
			//允许匿名用户登录
local_enable= YES
			//允许本地用户登录
write_enable= YES
			//全局写设置
guest_enable=yes/no    
                     //是否允许虚拟用户登录;

   注:虚拟用户只能登录FTP服务器

local_mask=022
			//设置本地用户的文件生成掩码为			  022,默认值为077
dirmessage_enable= YES
		//设置切换到目录时显示.message	  	  隐含文件的内容
xferlog_enable= YES
		//激活上传和下载日志

connect_from_port_20= YES
		//启用FTP数据端口连接
pam_service_name=vsftpd
			//设置PAM认证服务的配置文件名称, 该文件存放在/etc/pam.d目录下
userlist_enable= YES
			//决定vsftpd.user_list文件是否有效
userlist_deny= YES
			//拒绝vsftpd.user_list文件中的用户

访问服务器
listen= YES
			//是否使用独占启动方式
tcp_wrappers= YES
			//使用tcp_wrappers作为主机访问控制方式
关于被动模式的数据连接
pasv_enable=Yes/NO(默认值为yes,处于被动模式下)

设置用户登陆后所在目录
local_root=/var/ftp(设置本地用户登陆所在目录,默认为该用户的用户主目录)
anon_root=/var/ftp(匿名用户登陆所在目录)

默认配置文件功能说明:

1)允许匿名用户登录/var/ftp,但不能离开主目录
2)允许本地用户登录,且可离开主目录
3)匿名用户只能下载,不能上传
4)本地用户允许上传/下载
5)写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录
6)服务器使用独占方式启动,且无限制连接数

FTP服务器练习题

1. /etc/pam.d/vsftpd是()。 A. vsftpd的主配置文件 B. 用户身份验证配置文件 C. vsftpd的用户访问控制配置文件 D. 以上都不对

2. 关于FTP,下面的描述中不正确的是()。 A. FTP使用多个端口号 B. FTP可以上传文件,也可以下载文件 C. FTP报文通过UDP报文传送 D. FTP是应用层协议

3. 在使用匿名登录ftp时,用户名为() A. guest B. user C. root D. anonymous

4. FTP使用者不包括()。 A. 本地用户 B. 虚拟用户 C. 匿名用户 D. VIP用户

5. Linux下常见的FTP软件不包括()。 A. Vsftpd B. Proftp C. Wu-ftp D. IIS

6. 在FTP软件vsftp配置文件/etc/vsftpd/vsftpd.conf中,write_enable的作用是()。 A. 允许匿名用户登录 B. 允许本地用户登录 C. 全局写设置 D. 是否允许虚拟用户登录

7. 接入 INTERNET 并且支持 FTP 协议的两台计算机,对于它们之间的文件传输,下列说法正确的是()。 A. 只能传输文本文件 B. 不能传输图形文件 C. 所有文件均能传输 D. 只能传输几种类型的文件

8. FTP传输中使用哪两个端口()。 A. 23和24 B. 21和22 C. 20和21 D. 22和23

9. vsftpd的主配置文件是()。 A. /etc/vsftpd/vsftpd.conf B. /etc/pam.d/vsftpd C. /etc/vsftpd.ftpusers D. 以上都不对

10. vsftpd的PAM配置文件是()。 A. /etc/vsftpd/vsftpd.conf B. /etc/pam.d/vsftpd C. /etc/vsftpd.ftpusers D. 以上都不对

11. 在FTP软件vsftp配置文件/etc/vsftpd/vsftpd.conf中,nonymous_enable的作用是()。 A. 允许匿名用户登录 B. 允许本地用户登录 C. 全局写设置 D. 是否允许虚拟用户登录

12. 在FTP软件vsftp配置文件/etc/vsftpd/vsftpd.conf中,guest_enable的作用是()。 A. 允许匿名用户登录 B. 允许本地用户登录 C. 全局写设置 D. 是否允许虚拟用户登录

13. 下面文件中,是vsftpd的用户访问控制配置文件的是()。 A. /etc/vsftpd/vsftpd.conf B. /etc/pam.d/vsftpd C. /etc/vsftpd.ftpusers D. 以上都不对

14. 停止vsftpd服务的命令是()。 A. #service vsftpd start B. #service vsftpd stop C. #service vsftpd restart D. #service vsftpd status

15. 在FTP软件vsftp配置文件/etc/vsftpd/vsftpd.conf中,local_enable的作用是()。 A. 允许匿名用户登录 B. 允许本地用户登录 C. 全局写设置 D. 是否允许虚拟用户登录

16. FTP站点主要应用在哪些方面?() A. 不同类型计算机之间的文件交换 B. 文件的高速下载 C. web站点维护和更新 D. 以上都是

17. /etc/vsftpd.ftpusers是()。 A. vsftpd的主配置文件 B. vsftpd的PAM配置文件 C. vsftpd的用户访问控制配置文件 D. 以上都不对

18. 文件传输协议的英文缩写为()。 A. FTP B. SQL C. DNS D. WWW

19. vsftpd的特点中错误的是()。 A. 是一个安全、高速、稳定的FTP服务器 B. 支持虚拟用户,且支持每个虚拟用户具有独立的配置 C. 可以设置为从inetd启动 D. 可以执行任何外部程序,从而减少了安全隐患

20. 重启vsftpd服务的命令是()。 A. #service vsftpd start B. #service vsftpd stop C. #service vsftpd restart D. #service vsftpd status