91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux環境如何搭建FTP服務器以及Python怎么實現FTP客戶端的交互

發布時間:2021-10-25 19:13:40 來源:億速云 閱讀:115 作者:柒染 欄目:編程語言

Linux環境如何搭建FTP服務器以及Python怎么實現FTP客戶端的交互,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,它基于傳輸層協議TCP建立,用于Internet上文件的雙向傳輸(上傳和下載)。與大多數Internet服務一樣,FTP也是一個客戶端/服務器系統,要想完成文件傳輸需要FTP服務端和FTP客戶端的配合。

FTP協議使用了兩條TCP連接,一條是命令鏈路,用于在FTP客戶端與服務器之間傳遞命令;另一條是數據鏈路,用來上傳或下載數據。FTP服務器/客戶端架構如圖所示:

Linux環境如何搭建FTP服務器以及Python怎么實現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 #此文件用來輸入email

address,只有在deny_email_enable=YES時,才會使用到此檔案。若是使用匿名登入,則會要求輸入email

address,若輸入的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 -R

sudo ls -l /home/

總用量 12

drwxr-xr-x 2 ftp root 4096 2月 15 19:09 ftp

drwxr-xr-x 2 uftp root 4096 2月 15 16:23 uftp

drwxr-xr-x 40 yuanxiao yuanxiao 4096 2月 15 19:22 yuanxiao

也可以在嵌入式Linux平臺LED發行版上使用vsftp搭建一個FTP服務器。

(1)將開發板連接至外網,通過opkg命令安裝vsftp。

root@Yuanxiao:/etc/init.d# opkg update

root@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 start

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

解決方法為設置/etc/vsftpd.conf文件的訪問用戶(當前為root用戶)

root@Yuanxiao:~# chown root /etc/vsftpd.conf

root@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 27
from ftplib import FTP
ftp = FTP() #創建FTP對象
timeout = 30 
port = 21
ftp.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怎么實現FTP客戶端的交互問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江都市| 永兴县| 贡山| 交口县| 普陀区| 吕梁市| 昭觉县| 闽清县| 辽源市| 新野县| 新乐市| 龙口市| 惠来县| 白河县| 康保县| 衡阳市| 建始县| 遵义市| 曲水县| 临漳县| 桃园市| 福贡县| 兴义市| 寿宁县| 遂川县| 靖宇县| 高尔夫| 金华市| 沿河| 宾阳县| 乾安县| 灵武市| 德阳市| 鹰潭市| 丰台区| 潍坊市| 阆中市| 淮安市| 五指山市| 徐汇区| 普宁市|