当前位置:首页 > 科技数码

Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍

介绍Linux环境下FTP服务器的构建和Python实现FTP客户端交互。

FTP是基于传输层协议TCP的文件传输协议(File Transfer Protocol)的英文缩写,用于在internet上双向传输(上载和下载)文件。与大多数internet服务一样,FTP是需要FTP服务器和FTP客户端合作才能完成文件传输的客户端/服务器系统。

FTP协议使用两个TCP连接。一个是在FTP客户端和服务器之间传递命令的命令链接。另一个是可以上传或下载数据的数据链接。FTP服务器/客户端体系结构如下:

FTP协议有两种工作方式:端口主动和PASV被动。无论这两种工作方式如何,客户端都必须主动与远程主机的FTP服务器建立命令链接。

端口连接过程:客户端将连接请求从未经授权的端口M (M1023,0至1023用于绑定特定服务)发送到FTP服务器上的命令端口(默认值为21),服务器接受连接,并建立命令链接。需要传输数据时,客户端在命令链中向FTP服务器发送FTP命令“port M 1”。然后,客户端开始侦听端口M 1,服务器从自己的数据端口(默认值为20)连接到客户端指定的数据端口(M 1),以建立发送数据的数据链路。

在PASV方法中,命令连接和数据连接均由客户端启动,打开FTP连接后,客户端将打开两个未经授权的本地端口(M 1023和M 1)。第一个端口连接到服务器上的21个端口,并以与PORT相同的方式建立命令链路,而第二个端口以与PORT不同的方式建立数据链路。需要传输数据时,客户端向服务器提交PASV命令,以打开服务器未授权的端口(N 1023),并将PASV N命令发送给客户端。因此,客户端开始从本地端口M 1到服务器端口N的连接,为数据传输建立数据链路。

使用FTP传输文件时,必须先登录,因此必须在远程主机上授予相应的权限,才能上载和下载文件。没有用户ID和密码,文件无法传输。互联网上的FTP主机有数千个,不可能要求所有用户都在所有主机上拥有帐户。这违背了网络的开放性。所以通过制作匿名FTP解决了这个问题。

匿名FTP机制允许用户连接到远程主机进行文件上传和下载,而无需注册帐户。系统管理员创建了一个名为Anonymous的特殊用户ID,internet上的所有人都可以在任何地方使用。

Linux平台构建FTP服务器。

一般来说,各种Linux发行版中内置的FTP软件是vsftp。VsFTPd(Very Secure FTP Daemon)是在UNIX操作系统上运行的FTP服务器程序。在Linux平台Ubuntu发行版中,使用vsftp构建了可与Python实施客户端一起测试的ftp服务器。

(1)使用#rpm -qa |grep vsftpd命令检查是否安装了vsftpd软件;如果未安装,请使用#sudo apt-get install vsftpd命令安装vsftpd软件

(2)使用#netstat -tnl命令确认端口服务已打开,FTP服务器默认打开21个端口。

(3)使用# servicevsFTPdstart | stop | restart命令启动、停止和重新启动FTP。

(4)FTP配置文件位于/etc/vsftpd/目录中,包含禁止用户登录列表ftpusers和user_list以及主配置文件v。必须使用#sudo gedit /etc/v命令修改配置文件v,删除配置条目前面的#符号以打开配置,修改配置文件,然后重新启动服务。

与匿名登录相关的配置如下:

ANOnymous_enable=YES #控制是否允许匿名用户登录。YES允许匿名登录,no不允许。默认值为YES。

Write_enable=YES #是否允许登录用户具有写权限。属于全局设置,默认值为YES。

No_anon_password=YES #如果启用此功能,则在使用匿名登录时不会提示输入密码。默认值为“否”。

Ftp_username=ftp#定义匿名登录用户名。默认值为FTP。

Anon_root=/var/ftp

#匿名登录时登录的目录。默认值为/var/ftp。Ftp目录不能是777权限属性。

Anon_upload_enable=YES

如果设置为# YES,匿名注册者可以上载文件(不是目录)。仅当write_enable=YES时有效。匿名用户必须对父目录具有写权限。默认值为“否”。

Anon_world_readable_only=YES

如果设置为# YES,则可以下载匿名注册者可以读取的文件(可以在本地下载,但不能直接在FTP服务器上打开)。默认值为YES。

Anon_mkdir_write_enable=YES

如果设置为# YES,匿名注册者将有权添加目录。仅当write_enable=YES时有效。匿名用户必须对父目录具有写权限。默认值为“否”。

Anon_other_write_enable=YES

如果设置为# YES,匿名注册者可以授予除上传或创建目录之外的更多权限(例如,删除或重命名)。(anon_upload_enable=NO时,匿名用户不能

上载文件,但可以删除或重命名现有文件。如果Anon_mkdir_write_enable=NO,匿名用户不能上载或创建新文件夹,但可以删除或重命名现有文件夹。)缺省值为NO。

Chown_uploads=YES #设置是否更改匿名用户上载文件(不是目录)的所有者。默认值为“否”。

Chown_username=username #设置匿名用户上载文件(不是目录)的所有者名称。建议不要设置为Root。

Anon_umask=022

#匿名注册者在添加或上载文件时设置掩码值。默认值为077。如果Umask为022,则创建权限666文件,实际权限为666-022=644。

Deny_email_enable=YES

#如果启用了此功能,则必须提供/etc/vsftpd/banner_emails文件(电子邮件地址)。如果以匿名方式登录,则必须输入电子邮件地址;如果输入电子邮件地址,则必须输入电子邮件地址

不能从这个文件进入。默认值为“否”。

banned _ email _ file=/etc/vsf tpd/banner _ emails #此文件用于输入电子邮件

只有在Address-deny_email_enable=YES时才使用此文件。如果使用匿名登录,系统会提示您输入电子邮件

Address,如果输入的电子邮件地址在此文件中,则无法进入。

其他主要配置包括:

Listen=NO #接收服务器,服务是否独立运行

Local_enable=YES #是否允许本地用户访问

Local_umask=022 # FTP的本地文件权限。默认值为077

#dirmessage_enable=YES #允许进入文件夹

Xferlog_enable=YES #允许FTP记录

Onnect _ from _ port _ 20=启用端口YES # 20作为数据传输端口

Xferlog_enable=yes #启用上传和下载的日志

#xferlog_std_format=yes #使用标准日志格式

#ftpd_banner=XXXXX #欢迎信息

Local_root=/var/www #使用本地登录时登录的目录。

Pasv_enable=YES #

如果设置为“是”,则使用PASV操作模式。如果设置为NO,则使用PORT模式。默认值为YES,使用PASV操作模式。

PASV_min_port=30000 #在PASV操作模式下,数据连接可用的端口范围的最大端口0表示所有端口。默认值为0。

PASV_max_port=30999 # pasv操作模式下数据连接可用的端口范围的最小端口,0表示所有端口。默认值为0。

(5)使用#sudo userdel uftp命令删除用户,使用# sudoapt-getremove - purgevsftpd命令完全删除软件和相关文件

(6)设置匿名登录目录的权限。默认情况下,匿名登录的根目录是/var/ftp(实际上由/home/ftp组成)。出于安全考虑,默认情况下,此目录不能设置为777权限。否则,FTP无法匿名访问。如果想匿名上传文件,必须设置其他用户的写入权限。

Sudo chmod o w /home/ftp

更改Ftp目录所有者权限默认根权限中的匿名FTP权限,而-root参数启动迭代处理,并修改一个目录中所有文件的权限,包括修改子目录中的文件权限。修改后,FTP帐户可以访问FTP文件夹。

Sudo chown FTP /home/ftp -R

Sudo ls -l /home/

总使用量12

Drwxr-xr-x2 FTP根4096 2月15日19:09 FTP

Drwxr-xr-x2 uftp根4096 2月15日16:23 uftp

Drwxr-xr-x40元小元小4096 2月15日19:22元小

在嵌入式Linux平台Linux发行版中,还可以使用vsftp创建ftp服务器。

(1)将开发板连接到外部网络,并通过opkg命令安装vsftp。

root @ yuanxiao :/etc opkgupdate

root @ yuanxiao :/etc opkg install vsf tpd

(2)配置/etc/v文件。配置选项的含义和方法与上述Ubuntu发行版中的vsftpd相同。需要通过匿名登录设置/etc/v文件映射选项。

(3)更改/etc/v文件的权限。

启动Vsftpd进程时,出现错误消息,指出配置文件不属于正确的用户。

Root@Yuanxiao:~# /etc start

500 oops : config file not owned by correct user,or not a file

解决方法是设置对/etc/v文件的访问用户(当前root用户)

Root @ yuanxiao:到# chownroot/etc/v

Root@Yuanxiao:到# ls -l /etc/v

-rwxrwxrwx1根根840 feb15 13:48/etc/v

(4)启动和停止vsftpd。

/etc start

/etc stop

基于python的客户端FTP程序示例

#-*-代码: utf-8-*-

# python 27

ftplib导入FTP

FTP=FTP() #创建FTP对象

Timeout=30

Port=21

(' 192.168.1.188 ',port,timeout) #连接到FTP服务器

(' username ',' 88888') #使用帐户登录

Print () #收到欢迎信息

(' file/test') #设置FTP远程目录下的当前路径

从List=() #目录获取文件列表

For name in list:

Print name

#从FTP服务器下载文件

Bufsize=1024#设置的缓冲区大小

filename='/usr/share/a;#需要下载的文件和本地存储位置

File _ handle=open(文件名,' WB ')。以write #写模式在本地打开文件

(' retruboot.bin ',file _ handle,bufsize) #从服务器下载文件并将其写入本地文件

#删除远程文件

(' art.bin') #删除FTP服务器文件

#将文件上载到FTP服务器

Bufsize=1024#设置的缓冲区大小

filename='/usr/share/a;#需要上传的文件和本地存储位置

File _ handle=open (filename,' Rb') #以读模式在本地打开文件

(' stormain.py ',file _ handle,bufsize) #将本地文件上载到FTP服务器

()#关闭FTP服务器

大家学习的时候有什么不清楚的地方,请留言!

1.《Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1954899.html

上一篇

【bitlocker加密】专题微软将SSD加密更换到BitLocker软件加密

下一篇

markdown在线编辑器,干货看这篇!所见即所得的开源跨平台 Markdown 编辑器

ftp客户端专题之macOS High Sierra 10.13及以后系统安装FTP、SFTP命令行客户端

ftp客户端专题之macOS High Sierra 10.13及以后系统安装FTP、SFTP命令行客户端

ftp客户端相关介绍,网站防火墙 网站防火墙 您的请求带有不合法参数,已被网站管理员设置拦截! 可能原因:您提交的内容包含危险的攻击请求 如何解决: 1)检查提交内容; 2)如网站托管,请联系空间提供商; 3)普通网站访客...

ftp客户端专题之「python」使用Python编写、操作FTP客户端

  • ftp客户端专题之「python」使用Python编写、操作FTP客户端
  • ftp客户端专题之「python」使用Python编写、操作FTP客户端
  • ftp客户端专题之「python」使用Python编写、操作FTP客户端

关于ftp客户端我想说手机ftp下载,从手机用ftp客户端下载服务器中的文件

  • 关于ftp客户端我想说手机ftp下载,从手机用ftp客户端下载服务器中的文件
  • 关于ftp客户端我想说手机ftp下载,从手机用ftp客户端下载服务器中的文件
  • 关于ftp客户端我想说手机ftp下载,从手机用ftp客户端下载服务器中的文件

关于ftp客户端我想说Transmit 5 for Mac(强大的FTP客户端)

  • 关于ftp客户端我想说Transmit 5 for Mac(强大的FTP客户端)
  • 关于ftp客户端我想说Transmit 5 for Mac(强大的FTP客户端)
  • 关于ftp客户端我想说Transmit 5 for Mac(强大的FTP客户端)

关于ftp客户端我想说这6款专业FTP客户端工具,站长们必不可少的常用工具

  • 关于ftp客户端我想说这6款专业FTP客户端工具,站长们必不可少的常用工具
  • 关于ftp客户端我想说这6款专业FTP客户端工具,站长们必不可少的常用工具
  • 关于ftp客户端我想说这6款专业FTP客户端工具,站长们必不可少的常用工具
关于ftp客户端我想说跨平台FTP 客户端 FileZilla Client 3.47.2.1 发布

关于ftp客户端我想说跨平台FTP 客户端 FileZilla Client 3.47.2.1 发布

ftp客户端相关介绍,截至IT主页3月15日消息,Filezilla客户端发布了3.47.2.1版更新。FileZilla是一个快速、易于使用的界面和服务器端开放源代码程序,不仅支持FTP,还支持TLS上的FTP(FTPs...

关于ftp客户端我想说Transmit 我不要你觉得,我只要我觉得Mac最好用的FTP/SFTP客户端

关于ftp客户端我想说Transmit 我不要你觉得,我只要我觉得Mac最好用的FTP/SFTP客户端

ftp客户端相关介绍,文章末尾有获取方法,可以按照以下步骤获取。 我们不解密软件。所有优秀的软件都来自互联网。 我不想你想,我只要我想。传输是Mac的FTP客户端。站长认为Transmit是Mac上最好使用的FTP工具。无...

关于ftp客户端我想说为什么说FileZilla是最好的跨平台FTP客户端?

关于ftp客户端我想说为什么说FileZilla是最好的跨平台FTP客户端?

ftp客户端相关介绍,FTP客户端很多,但FileZilla必须是当前最成熟、最易于使用的FTP客户端。FileZilla跨平台和出色的图形用户界面。不仅要有好的FTP工具,还要有完整的功能。macOS中包含的FTP工具下...