c++ ftp服务端_FTP文件传输协议

会不会有那么一天,生活可以简单到每天清早踏上一辆载着鲜花的脚踏车,微笑着穿过窄窄的街巷,为爱花的人送去芬芳,为需要知识的你送去帮助

今天给大家带来ftp文件传输服务的详解以及相关服务搭建

** FTP(File Transfer Protocol,文件传输协议)**是典型的C/S结构的应用层协议,需要由服务器端软件、客户端软件两个部分共同实现文件传输功能。关于FTP服务器,可以从以下几个方面进行了解。

一,FTP连接及传输模式

1.ftp连接模式

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。20端口用于建立数据连接,并传输文件数据;21端口用于建立控制连接,并传输FTP控制命令。根据FTP服务器在建立数据连接过程中的主、被动关系,FTP数据连接分为主动模式和被动模式,两者的含义及主要区别如下。

主动模式:服务器主动发起数据连接。首先由客户端向服务器端的21端口建立FTP控制连接,当需要传输数据时,客户端以PORT命令告知服务器“我打开了某端口,你过来连接我;于是服务器从20端口向客户端的该端口发送请求并建立数据连接。 被动模式:服务器被动等待数据连接。如果客户机所在网络的防火墙禁止主动模式连接,通常会使用被动模式。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,服务器以PASV命令告知客户端“我打开了某端口,你过来连接我”于是客户端向服务器的该端口(非20)发送请求并建立数据连接。

2.ftp传输模式

客户端与服务器建立数据连接以后,就可以根据从控制连接中发送的FTP命令上传或下载文件了。在传输文件时,根据是否进行字符转换,分为文本模式和二进制模式。

文本模式:又称为ASCI(American Standard Code for Information Interchange,美国信息交换标准码)模式,这种模式在传输文件时使用ASCI标准字符序列,一般只用于纯文本文件的传输。

二进制模式:又称为Binary模式,这种模式不会转换文件中的字符序列,更适合传输程序、图片等非纯文本字符的文件。使用二进制模式比文本模式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式,无须用户手工指定。

二,FTP用户的类型

匿名用户:使用FTP客户端软件访问服务器时,通常要用到一类特殊的用户账号,其用户名为tp或anonymous,提供任意密码(包括空密码)都可以通过服务器的验证,这样的用户称为匿名用户,匿名用户一般用于提供公共文件的下载,如提供一些免费软件、学习资料下载的站点。 本地用户:除了不需要密码验证的匿名用户以外,FTP服务器还可以直接使用本机的系统用户账号来进行验证,这些用户通常被称为“本地用户”。在CentOS系统中,匿名用户也有对应的本地系统用户账号“ftp”,但对于vsftpd服务来说,本地用户指的是除了匿名用户以外的其他系统用户。

虚拟用户:有些FTP服务器软件还可以维护一份独立的用户数据库文件,而不是直接使用系统用户账号。这些位于独立数据库文件中的FTP用户账号,通常被称为虚拟用户。通过使用虚拟用户,将FTP账户与Linux系统账户的关联性降至最低,从而为系统提供更好的安全性。

三.常见服务器类型的种类

在Windows操作系统中,常见的FTP服务器软件包括FileZilla Sener、Serv-U等,而在Linux操作系统中,vsftpd是目前在Linux/UNX领域应用十分广泛的一款FTP服务软件,本课程将以vsftpd进行讲解。

Vsftpd 服务的名称来源于“Very Secure FTPDaemon”,该软件针对安全特性方面做了大量的设计。除了安全性以外,vsftpd在速度和稳定性方面的表现也相当突出。根据ftp.redhat.com服务器反映的数据,vsftpd可以支持15000个用户并发连接。

四.FTP客户端工具的类型

最简单的FTP客户端工具莫过于ftp命令程序了。Windows操作系统和Linux操作系统都默认自带ftp命令程序,可以连接到FTP服务器进行交互式的上传、下载通信。除此以外,还有大量的图形化FTP客户端工具。Windows中较常用的包括CuteFTP、FlashFXP LeapFTP、Filezilla等,在图形化的客户端程序中,用户通过鼠标和菜单即可访问、管理FTP资源,而不需要掌握FTP交互命令,从而使用户的操作更加简单、易于使用。还有一些下载工具软件,如FlashGet、Wget等,包括大多数网页浏览器程序,都支持通过FTP协议下载文件,但因不具备FTP上传等管理功能,所以通常不称为FTP客户端工具。

五.vsftpd的配置文件

本章将以CentOS系统中RPM(RPM Package Manager,RPM软件包管理器)方式安装的

vsftpd-3.0.2-21.el7.×86_64.rpm软件包为例来学习FTP服务器的构建过程。vsftpd的官方网站位于

http://vsftpd.beasts.org/.若希望获取最新的源码安装版本,用户可以从该站点中下载。通过RPM方式安装的vsftpd软件包,将自动添加名为vsftpd的系统服务,因此启动、停止vsftpd服务变得非常方便。构建vsftpd服务的关键在于熟悉相关的配置文件。vsftpd服务的配置文件位于/etc/vsftpd/目录下,包括用户列表文件(ftpusers、user_list)和主配置文件(vsftpd.conf)等。下面主要介绍这两类配置文件。

1.用户列表文件ftpusers和user_list

在ftpusers、user_list文件中,各自记录了若干个FTP用户的账号名称,两个列表文件都用于FTP登录控制,但是控制方式存在一些差别。

ftpusers文件:此文件中列出的用户将禁止登录vsftpd 服务器,不管该用户是否在user_list文件中出现。该文件默认包括root、bin、daemon等用于系统运行的特殊用户。

          user_list文件:此文件中包含的用户可能被禁止登录,也可能被允许登录,具体取决于主配置文件vsftpd.conf 中的设置。当存在“userlist_enable=YES”的配置项时,user_list列表文件方可生效;若指定“userlist_deny=YES",则仅禁止此列表中的用户登录;若指定“userlist_deny=NO",则仅允许列表中的用户登录。

ftpusers文件相当于黑名单,为vsftpd 服务器提供了一份禁止登录的用户列表;而user_list文件提供了一份可以灵活控制的用户列表。二者相互结合,为FTP账号的登录控制提供了便捷的途径。

2.主配置文件vsftpd.conf

在vsftpd的主配置文件中,配置行采用“配置项=参数”的格式。

vsftpd.conf文件中常见的配置项及含义说明

6b926f7bc61dfdc4a04e56033510c61e.png

7404e6213cebec40a1af42666aacb16c.png

上述表中列出的都是搭建vsftpd服务器时常用到的配置项,理解并掌握这些配置项的含义,将更有利于快速部署和优化vsftpd服务器。在本章后面的内容中,将通过具体的配置实例来展现其中常见的配置项部分。关于vsftpd.conf文件中的更多配置项,可以执行“man vsftpd.conf”命令查阅相关帮助。

六,实验案例

1)安装vsftp服务

f22d40dd9d7b59dd43fe63fe7dda2ee8.png

2)启动服务并设置为开机自启

be8940756dfae4f70245cb9235f01a17.png

3)测试

bb5e189ae8df44e847b76702e556c7ed.png

用户访问及文件权限控制。

1.配置允许支持虚拟用户访问ftp

1)创建存储虚拟账户的账号和密码文件

2bb98d3e861ec9c84bd7dd84078ca3d7.png

bba3834972e3a6e1c8104f7e51575a04.png

2)生成验证数据库

06d6237ef94e7f1eb17e857bde5e4697.png

3)创建虚拟账户需要映射到的系统账户

5486a9d434040da12f5dec40b823ae9f.png

这里需要修改/ftproot目录的权限方便后续测试

e78f2b6b419269a2cf8fae139024ee1d.png

4)配置pam验证

856b429e9ad3863094d36c93889dc0c0.png

9f05dc03f5fd0b72348dd4b245ddc660.png

5)配置主配置文件

a4a06ddde27dfb7bc99f9e2c4d5a4c9f.png

5a16005263dd51ae12cac7b3b103da88.png

6)创建虚拟用户的权限目录

83ffbf7e8183230b40f83fcc86cd63a3.png

7)创建虚拟用户的权限文件

40fe6fdc894b05ede4a448bd1fd0ed78.png

de01798fd58e1b3b25443de1ce07f4d3.png

6e66d67df838b61950482c1258a5d737.png

2.开放匿名访问,任何用户均可下载服务器/var/ftp/pub/目录中的软件资料。

1a8a5726a8e5124d41258e953313eaa2.png

在/var/ftp/pub创建测试文件:

47e82e8ff9d37e588e2d80b70824c4c6.png

测试匿名用户下载:

75cd3131ada16a9c99bfb5882af877d4.png

3.用户bob可以对服务器的/var/ftp/pub/目录进行上传、删除等操作。

    1)配置bob用户权限文件

55f7ed1c386297cdde7d28da571d08ab.png

17890dbc8f3aa161b9306ced95ba557c.png

    2)设置/var/ftp/pub目录的权限为757

3af3e633d34fb05da84dc96304e94110.png

    3)重启服务

f3a4ba389eb50288fb6bb8b9b4a7396c.png

    4)测试bob登录

810033093a0e2f0407e3f7f32e83366c.png

7b2ef62a373f2d2192c57ba33254fa07.png

        上传

b171290e9f153b045575b4e9efb0d6b8.png

        删除

86227ac25110a7ab5126c2a6014f098e.png

0999f42e69049eaed2f6e5a42c5400e8.png

4.用户tom可以下载服务器/ftproot/目录中的市场活动、销售方案等资料。

    测试(在排除权限的情况下,虚拟用户,匿名用户,本地用户是自带下载功能的,所以可以直接开始测试):

    1)创建测试文件

a83f6079ce984fa68b124e611cd98e69.png

    2)tom登录

9462bd23be602a064047841ef1872d2e.png

de46153869fc722f6010fe7c3be5bd07.png

    3)下载

a1b1c4420b9116ec536e9ecc328a5099.png

        删除(不能删除情况为对):

fd569fd823102b1e1a2754da54a68d4f.png

5524b8aadfde064a95060dcbbf86de5d.png

5.用户alice可以对服务器/ftproot/目录进行上传、删除等操作。

    1)配置alice虚拟用户的主配置文件

ebe0db1f1f98635088f35c3de5cd2e38.png

994a14ffa7b25f05bff56d12904e4b75.png

      2)重启服务

95833fa65003d0f8bb5170ff41bc5101.png

      3)alice登录

a7541e34475940beeccfcebfc79af272.png

       4)上传

79d36fd81b70773b06f23a9765222b90.png

           删除

3cf6828c72e05acc271d806cd1639f52.png

aa4ac509ba2f09472041623908dcb5ad.png

6.所有通过FTP上传的文件,均去除非属主位的写权限(即将权限掩码设为022)。

        1)打开主配置文件配置

9fd60a8f4dcaf789cb5a6b585545acab.png

d9dd6e3712c8a02d8b0c9de3a17bde20.png

故事很短,道理很长,学无止境,不忘初心,砥砺前行    

今天的杂谈就到这里,不一定对每个人有用,但是对有需要的人会有帮助,做不到人民币,人人喜欢

不是每场相遇都有结局,但是每场相遇都有意义

微信搜索 “徐阿马杂谈”  关注公众号,把你们想知道的,想提的意见发给我,我会采纳!期待你的关注!

b9aad292f215c53ad85312899813357a.png

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值