Ftp协议详解及vsftpd服务器搭建

前言

这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题

于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。

微信小程序搜索:Python面试宝典

或可关注原创个人博客:https://lienze.tech

也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习

FTP协议

FTP(File Transfer Protocol)文件传输协议,是TCP/IP协议组中的协议之一

FTP为C/S架构,需要同时具备客户端和服务端才可以进行工作。其中FTP服务器用来存储文件。用户可以通过FTP客户端访问位于FTP服务器的资源。FTP传输效率也非常高,因此也常用于传输一些较大文件。

默认情况下FTP协议使用20/21这两个端口,其中20用于传输数据,21用于传输FTP控制的命令信息

Python实现FTP的功能主要是使用ftplib模块来实现的,在我们所使用的3.x版本Python中,属于内置模块,不需要额外安装即可使用

传输模式

FTP主动模式(PORT):客户端从一个任意端口N(N>1024)连接到FTP服务器的21端口之后,如服务器有效响应,则客户端继续监听N+1端口,并通过命令端口21向服务器发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口20连接到客户端所提供的N+1端口。

FTP被动模式(PASV):客户端从一个任意端口N(N>1024)连接到FTP服务器的21端口之后,客户端开始监听端口N+1,客户端提交PASV命令,服务器从本机的一个大于1024的端口P想客户端发送响应命令(PORT P)。客户端从本机端口N+1发起连接向服务器的P端口。

  • 主动模式:服务器在确认响应后主动连接客户端

    • 服务器:21端口传输命令,20端口传输数据。
    • 客户端:N(N>1024)端口发送命令,N+1端口传输数据。
  • 被动模式:客户端在确认服务器端口后主动连接服务器。

    • 服务器:21端口传输命令,P(P>1024)端口传输数据。

      客户端:N(N>1024)端口发送命令,N+1端口传输数据。

搭建FTP服务器

目前关于ftp服务器,主流有如下:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等软件。其中较为常用的linux下ftp服务器软件为Vsftpd

在这里也会首先搭建Vsftpd服务来进行Python有关ftp的操作。

Vsftpd全称为非常安全的ftp服务进程(Very Secure Ftp Daemon),Vsftpd是在众多类unix操作系统下最主流的ftp服务器。Vsftpd是一款完全免费、开放源码的ftp服务器软件,并且他有良好的可伸缩性、可以通过创建虚拟用户来管理ftp服务。并且也具有非常高的安全性,可以基于MySQL数据库提供安全验证保护

  • 在centos7版本下进行Vsftpd的安装
yum install vsftpd
  • 启动服务
systemctl start vsftpd

Vsftpd服务配置

Vsftpd通过Yum安装之后默认配置文件路径在/etc/vsftpd/vsftpd.conf,其中默认开启的配置项内容为

配置项 解释
anonymous_enable=YES 开启匿名用户访问
local_enable=YES 启用本地系统用户访问
write_enable=YES 本地系统用户写入权限
local_umask=022 本地用户创建文件及目录权限码
dirmessage_enable=YES 打印目录显示信息,通常用于用户首次访问目录时
xferlog_enable=YES 开启上传/下载日志记录
connect_from_port_20=YES 开启20端口数据传输
xferlog_std_format=YES 启用xferlog格式写入日志
listen=NO Vsftpd服务不以独立服务启动
listen_ipv6=YES 启用ipv6监听
pam_service_name=vsftpd 登录ftp服务器时,根据/etc/pam.d/vsftpd中内容进行认证
userlist_enable=YES /etc/vsftpd/user_list /etc/vsftpd/ftpusers 禁止以上两个配置文件中用户访问ftp服务
tcp_wrappers=YES 开启Vsftpd服务于Tcp Wrapper结合进行服务器控制访问

之后在浏览器或者资源管理器中使用ftp协议路由即可访问

ftp://127.0.0.1:21

你可能感兴趣的:(Python学习,服务器,运维,ftp,vsftpd,python)