新闻资讯
Linux情况搭建FTP服务器与Python实现FTP客户端的交互先容
发布时间:2021-07-15 00:36
  |  
阅读量:
字号:
A+ A- A
本文摘要:Linux情况搭建FTP服务器与Python实现FTP客户端的交互先容FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建设,用于Internet上文件的双向传输(上传和下载)。与大多数Internet服务一样,FTP也是一个客户端/服务器系统,要想完成文件传输需要FTP服务端和FTP客户端的配合。

欧洲杯线上买球

Linux情况搭建FTP服务器与Python实现FTP客户端的交互先容FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建设,用于Internet上文件的双向传输(上传和下载)。与大多数Internet服务一样,FTP也是一个客户端/服务器系统,要想完成文件传输需要FTP服务端和FTP客户端的配合。FTP协议使用了两条TCP毗连,一条是下令链路,用于在FTP客户端与服务器之间通报下令;另一条是数据链路,用来上传或下载数据。FTP服务器/客户端架构如图所示:FTP协议有两种事情方式:PORT主动方式和PASV被动方式。

无论哪种事情方式,首先都需要客户端主动与远程主机上的FTP 服务器建设下令链路。PORT方式的毗连历程:客户端从一个任意的非特权端口M(M>1023,0到1023用于绑定特定的服务)向FTP服务器的下令端口(默认是21)发送毗连请求,服务器接受毗连,建设一条下令链路。当需要传送数据时,客户端在下令链上发送FTP下令“port M+1”到FTP服务器。接着客户端开始监听端口M+1,服务器会从它自己的数据端口(默认是20)毗连到客户端指定的数据端口(M+1),建设一条数据链路来传送数据。

在PASV方式中,下令毗连和数据毗连都由客户端提倡,当开启一个 FTP毗连时,客户端打开两个任意的非特权当地端口( M > 1023和M +1)。第一个端口毗连服务器的21端口建设一条下令链路,与PORT方式相同,但第二个端口建设数据链路的方式与PORT方式有所差别。

当需要传送数据时,客户端提交PASV下令至服务器,这样做的效果是服务器会开启一个任意的非特权端口(N > 1023),并发送 PASV N下令给客户端。于是客户端提倡从当地端口M+1到服务器的端口N的毗连,建设一条数据链路用来传送数据。

由于使用FTP传送文件时必须先登录,在远程主机上获得相应的权限以后,才可上传和下载文件。除非有用户ID和口令,否则便无法传送文件。Internet上的FTP主机成千上万,不行能要求每个用户在每一台主机上都拥有帐号,这违背了Internet的开放性。

于是发生了匿名FTP来解决这个问题。通过匿名FTP机制,用户无需注册帐号就可以毗连到远程主机上举行文件的上传和下载。

系统治理员建设了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。Linux平台搭建FTP服务器一般在种种Linux的刊行版中,默认带有的FTP软件是vsftp。Vsftpd(Very Secure FTP Daemon)是一款运行在类Unix操作系统的FTP服务端法式。

此处在Linux平台ubuntu刊行版上使用vsftp搭建一个FTP服务器,可配合Python实现的客户端举行测试。(1)使用#rpm -qa |grep vsftpd下令检查是否安装vsftpd软件,未安装则使用#sudo apt-get install vsftpd下令安装vsftpd软件(2)使用#netstat -tnl下令检查端口服务是否打开,FTP服务器默认打开的是21端口。(3)使用#service vsftpd start |stop|restart下令启动、停止、重启FTP。(4)FTP的设置文件位于/etc/vsftpd/目录下,包罗用户克制登陆列表ftpusers和user_list、主设置文件vsftpd.conf。

使用#sudo gedit /etc/vsftpd.conf下令修改设置文件vsftpd.conf,去除设置项前的#号以开启该项设置,修改设置文件后需要重启服务。与匿名登陆相关的设置如下:anonymous_enable=YES # 控制是否允许匿名用户登入,YES 为允许匿名登入,NO 为不允许。

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

no_anon_password=YES #若启动这项功效,使用匿名登入时,不会询问密码。默认值为NO。ftp_username=ftp#界说匿名登入的使用者名称。

默认值为ftp。anon_root=/var/ftp#使用匿名登入时,所登入的目录。

默认值为/var/ftp。注意ftp目录不能是777的权限属性。anon_upload_enable=YES#如果设为YES,则允许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。

前提是匿名用户必须要有对上层目录的写入权。默认值为NO。anon_world_readable_only=YES#如果设为YES,则允许匿名登入者下载可阅读的档案(可以下载到本机阅读,不能直接在FTP服务器中打开阅读)。

默认值为YES。anon_mkdir_write_enable=YES#如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效。前提是匿名用户必须要有对上层目录的写入权。

默认值为NO。anon_other_write_enable=YES#如果设为YES,则允许匿名登入者更多于上传或者建设目录之外的权限,譬如删除或者重命名。(如果anon_upload_enable=NO,则匿名用户不能上传文件,但可以删除或者重命名已经存在的文件;如果anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但可以删除或者重命名已经存在的文件夹。

)默认值为NO。chown_uploads=YES #设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。

chown_username=username #设置匿名用户上传文件(非目录)的属主名。建议不要设置为root。anon_umask=022#设置匿名登入者新增或上传档案时的掩码值。

默认值为077。如umask是022,这时建立一个权限为666的文件,文件的实际权限为666-022=644。

deny_email_enable=YES#若是启动这项功效,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address在此档案内,则不允许进入。

默认值为NO。banned_email_file=/etc/vsftpd/banner_emails #此文件用来输入emailaddress,只有在deny_email_enable=YES时,才会使用到此档案。若是使用匿名登入,则会要求输入emailaddress,若输入的email 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 #若设置为YES,则使用PASV事情模式;若设置为NO,则使用PORT模式。默认值为YES,纵然用PASV事情模式。pasv_min_port=30000 # 在PASV事情模式下,数据毗连可以使用的端口规模的最大端口,0 表现任意端口。默认值为0。

pasv_max_port=30999 # 在PASV事情模式下,数据毗连可以使用的端口规模的最小端口,0 表现任意端口。默认值为0。

(5)使用#sudo userdel uftp下令删除用户,使用#sudo apt-get remove --purge vsftpd下令彻底删除该软件和相关文件(6)匿名登陆目录的权限设置。默认情况下,匿名登入的根目录为/var/ftp(实际设置为/home/ftp),为了宁静,这个目录默认不允许设置为777权限,否则ftp将无法匿名会见。当我们要匿名上传文件时,需要设置other用户的写权限。sudo chmod o+w /home/ftp更改ftp目录属主权限由默认的root权限为匿名的ftp权限,参数-R表现启动递归处置惩罚,修改某个目录下所有文件的权限,包罗修改子目录中的文件权限。

修改后ftp账户可以会见ftp文件夹。sudo chown ftp /home/ftp -Rsudo ls -l /home/总用量 12drwxr-xr-x 2 ftp root 4096 2月 15 19:09 ftpdrwxr-xr-x 2 uftp root 4096 2月 15 16:23 uftpdrwxr-xr-x 40 yuanxiao yuanxiao 4096 2月 15 19:22 yuanxiao也可以在嵌入式Linux平台LED刊行版上使用vsftp搭建一个FTP服务器。(1)将开发板毗连至外网,通过opkg下令安装vsftp。

root@Yuanxiao:/etc/init.d# opkg updateroot@Yuanxiao:/etc/init.d# opkg install vsftpd(2)设置/etc/vsftpd.conf文件,设置选项寄义和方式与上述ubuntu刊行版上的vsftpd相同。如果通过匿名登陆需要设置/etc/vsftpd.conf文件对应选项。

(3)更改/etc/vsftpd.conf文件的权限。在启动vsftpd 历程时会提示错误,讲明设置文件不属于正确的用户。root@Yuanxiao:~# /etc/init.d/vsftpd start500 OOPS: config file not owned by correct user, or not a file解决方法为设置/etc/vsftpd.conf文件的会见用户(当前为root用户)root@Yuanxiao:~# chown root /etc/vsftpd.confroot@Yuanxiao:~# ls -l /etc/vsftpd.conf-rwxrwxrwx 1 root root 840 Feb 15 13:48 /etc/vsftpd.conf(4)启动和停止vsftpd。/etc/init.d/vsftpd start/etc/init.d/vsftpd stop基于Python的客户端FTP 法式示例# -*- coding: utf-8 -*-#python 27from ftplib import FTPftp = FTP() #建立FTP工具timeout = 30 port = 21ftp.connect('192.168.1.188',port,timeout) # 毗连FTP服务器ftp.login('UserName','888888') # 使用帐号登录print ftp.getwelcome() # 获得接待信息ftp.cwd('file/test') # 设置FTP远程目录下当前路径list = ftp.nlst() # 获取目录下的文件列表 for name in list: print name#从FTP服务器下载文件bufsize=1024#设置的缓冲区巨细filename="/usr/share/app/uboot.bin" #需要下载的文件及当地的存放位置file_handle=open(filename,"wb").write #以写模式在当地打开文件ftp.retrbinary("RETR uboot.bin",file_handle,bufsize) #下载服务器上的文件并写入当地文件#删除远程文件ftp.delete("art.bin") # 删除FTP服务器文件#上传文件至FTP服务器bufsize=1024#设置的缓冲区巨细filename="/usr/share/app/main.py" #需要上传的文件及当地的存放位置file_handle=open(filename,"rb") #以读模式在当地打开文件ftp.storbinary("STOR main.py",file_handle,bufsize) #将当地文件上传到FTP服务器ftp.quit()# 退出FTP服务器大家在学的时候有什么不清楚的地方,记得留言哈!。


本文关键词:欧洲杯线上买球,Linux,情况,搭建,FTP,服务器,与,Python,实现,Linux

本文来源:欧洲杯线上买球-www.zk5g.com