運行機制編輯
FTP伺服器
簡單地說,支持FTP協定的伺服器就是FTP伺服器。
與大多數Internet服務一樣,FTP也是一個客戶機/伺服器系統。用戶通過一個支持FTP協定的客戶機程式,連線到在遠程主機上的FTP伺服器程式。用戶通過客戶機程式向伺服器程式發出命令,伺服器程式執行用戶所發出的命令,並將執行的結果返回到客戶機。比如說,用戶發出一條命令,要求伺服器向用戶傳送某一個檔案的一份拷貝,伺服器會回響這條命令,將指定檔案送至用戶的機器上。客戶機程式代表用戶接收到這個檔案,將其存放在用戶目錄中。
匿名FTP
使用FTP時必須首先登錄,在遠程主機上獲得相應的許可權以後,方可下載或上傳檔案。也就是說,要想同哪一台計算機傳送檔案,就必須具有哪一台計算機的適當授權。換言之,除非有用戶ID和口令,否則便無法傳送檔案。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可能要求每個用戶在每一台主機上都擁有帳號。匿名FTP就是為解決這個問題而產生的。
匿名FTP是這樣一種機制,用戶可通過它連線到遠程主機上,並從其下載檔案,而無需成為其註冊用戶。系統管理員建立了一個特殊的用戶ID,名為anonymous, Internet上的任何人在任何地方都可使用該用戶ID。
通過FTP程式連線匿名FTP主機的方式同連線普通FTP主機的方式差不多,只是在要求提供用戶標識ID時必須輸入anonymous,該用戶ID的口令可以是任意的字元串。習慣上,用自己的E-mail地址作為口令,使系統維護程式能夠記錄下來誰在存取這些檔案。
值得注意的是,匿名FTP不適用於所有Internet主機,它只適用於那些提供了這項服務的主機。
當遠程主機提供匿名FTP服務時,會指定某些目錄向公眾開放,允許匿名存取。系統中的其餘目錄則處於隱匿狀態。作為一種安全措施,大多數匿名FTP主機都允許用戶從其下載檔案,而不允許用戶向其上傳檔案,也就是說,用戶可將匿名FTP主機上的所有檔案全部拷貝到自己的機器上,但不能將自己機器上的任何一個檔案拷貝至匿名FTP主機上。即使有些匿名FTP主機確實允許用戶上傳檔案,用戶也只能將檔案上傳至某一指定上傳目錄中。隨後,系統管理員會去檢查這些檔案,他會將這些檔案移至另一個公共下載目錄中,供其他用戶下載,利用這種方式,遠程主機的用戶得到了保護,避免了有人上傳有問題的檔案,如帶病毒的檔案。
用戶分類編輯
Real帳戶
這類用戶是指在FTP服務上擁有帳號。當這類用戶登錄FTP伺服器的時候,其默認的主目錄就是其帳號命名的目錄。但是,其還可以變更到其他目錄中去。如系統的主目錄等等。
Guest用戶
在FTP伺服器中,我們往往會給不同的部門或者某個特定的用戶設定一個帳戶。但是,這個賬戶有個特點,就是其只能夠訪問自己的主目錄。伺服器通過這種方式來保障FTP服務上其他檔案的安全性。這類帳戶,在Vsftpd軟體中就叫做Guest用戶。擁有這類用戶的帳戶,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的檔案。
Anonymous(匿名)用戶
這也是我們通常所說的匿名訪問。這類用戶是指在FTP伺服器中沒有指定帳戶,但是其仍然可以進行匿名訪問某些公開的資源。
在組建FTP伺服器的時候,我們就需要根據用戶的類型,對用戶進行歸類。默認情況下,Vsftpd伺服器會把建立的所有帳戶都歸屬為Real用戶。但是,這往往不符合企業安全的需要。因為這類用戶不僅可以訪問自己的主目錄,而且,還可以訪問其他用戶的目錄。這就給其他用戶所在的空間帶來一定的安全隱患。所以,企業要根據實際情況,修改用戶所在的類別。
使用方式編輯
TCP/IP協定中,FTP標準命令TCP連線埠號為21,Port方式數據連線埠為20。FTP的任務是從一台計算機將檔案傳送到另一台計算機,不受作業系統的限制。
需要進行遠程檔案傳輸的計算機必須安裝和運行ftp客戶程式。在windows作業系統的安裝過程中,通常都安裝了tcp/ip協定軟體,其中就包含了ftp客戶程式。但是該程式是字元界面而不是圖形界面,這就必須以命令提示符的方式進行操作,很不方便。
啟動ftp客戶程式工作的另一途徑是使用ie瀏覽器,用戶只需要在ie地址欄中輸入如下格式的url地址:ftp://[用戶名:口令@]ftp伺服器域名:[連線埠號]
(在CMD命令行下也可以用上述方法連線,通過put命令和get命令達到上傳和下載的目的,通過ls命令列出目錄,除了上述方法外還可以在cmd下輸入ftp回車,然後輸入open IP來建立一個連線,此方法還適用於linux下連線ftp伺服器)
通過ie瀏覽器啟動ftp的方法儘管可以使用,但是速度較慢,還會將密碼暴露在ie瀏覽器中而不安全。因此一般都安裝並運行專門的ftp客戶程式。
1.在本地電腦上登入到國際網際網路。
2.搜尋有檔案共享主機或者個人電腦(一般有專門的FTP伺服器網站上公布的,上面有進入該主機或個人電腦的名稱,口令和路徑).
3.當與遠程主機或者對方的個人電腦建立連線後,用對方提供的用戶名和口令登入到該主機或對方的個人電腦。
4.在遠程主機或對方的個人電腦登入成功後,就可以上傳你想跟別人分享的東西或者下載別人授權共享的東西(這裡的東西是指能放到電腦里去又能在顯示屏上看到的東西).
5.完成工作後關閉FTP下載軟體,切斷連線。
傳輸方式編輯
FTP的傳輸有兩種方式:ASCII、二進制。
ASCII傳輸方式
假定用戶正在拷貝的檔案包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當檔案傳輸時ftp通常會自動地調整檔案的內容以便於把檔案解釋成另外那台計算機存儲文本檔案的格式。
但是常常有這樣的情況,用戶正在傳輸的檔案包含的不是文本檔案,它們可能是程式,資料庫,字處理檔案或者壓縮檔案。在拷貝任何非文本檔案之前,用binary 命令告訴ftp逐字拷貝。
二進制傳輸模式
在二進制傳輸中,保存檔案的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的檔案是沒意義的。例如,macintosh以二進制方式傳送執行檔到Windows系統,在對方系統上,此檔案不能執行。
如在ASCII方式下傳輸二進制檔案,即使不需要也仍會轉譯。這會損壞數據。(ASCII方式一般假設每一字元的第一有效位無意義,因為ASCII字元組合不使用它。如果傳輸二進制檔案,所有的位都是重要的。)
支持模式編輯
FTP支持兩種模式:Standard (PORT方式,主動方式),Passive (PASV,被動方式)。
Port模式
FTP客戶端首先和伺服器的TCP 21連線埠建立連線,用來傳送命令,客戶端需要接收數據的時候在這個通道上傳送PORT命令。PORT命令包含了客戶端用什麼連線埠接收數據。在傳送數據的時候,伺服器端通過自己的TCP 20連線埠連線至客戶端的指定連線埠傳送數據。FTP server必須和客戶端建立一個新的連線用來傳送數據。
Passive模式
建立控制通道和Standard模式類似,但建立連線後傳送Pasv命令。伺服器收到Pasv命令後,打開一個臨時連線埠(連線埠號大於1023小於65535)並且通知客戶端在這個連線埠上傳送數據的請求,客戶端連線FTP伺服器此連線埠,然後FTP伺服器將通過這個連線埠傳送數據。
很多防火牆在設定的時候都是不允許接受外部發起的連線的,所以許多位於防火牆後或區域網路的FTP伺服器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP伺服器的高端連線埠;而許多區域網路的客戶端不能用PORT模式登入FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連線,造成無法工作。
命令參數編輯
簡介
1.FTP伺服器的登入
匿名用戶:FTP 口令:FTP
用戶:ANONYMOUS 口令:任何電子郵件
2.顯示檔案信息:DIR/LS
3.下載檔案:GET 檔案名稱(下載到當前目錄)
4.上傳檔案:PUT 檔案名稱
5.多檔案下載:MGET
6.多檔案上傳:MPUT
7.退出:BYE
8.幫助:HELP
用途
在本地主機和遠程主機之間傳送檔案。
語法
ftp [ -d] [ -g ] [ -i ] [ -n ] [ -v] [ -f ] [ -k realm] [-q[-C]][ HostName [ Port ] ]
描述
-C 允許用戶指定:通過 send_file 命令發出的檔案必須在網路高速緩衝區(NBC)中經過快取處理。此標誌必須在指定了-q 標誌的情況下使用。只有當檔案在無保護的情況下以二進制方式傳送時此標誌才適用。
-d 將有關 ftp 命令操作的調試信息傳送給 syslogd 守護進程。如果您指定-d 標誌,您必須編輯/etc/syslog.conf 檔案並添加下列中的一項:
OR
user.debug FileName
請注意: syslogd 守護進程調試級別包含信息級別訊息。
如果不編輯/etc/syslog.conf 檔案,則不會產生訊息。變更了/etc/syslog.conf 檔案之後,請運行 refresh -s syslogd 或 kill -1 SyslogdPID 命令,以通知 syslogd 守護進程其配置檔案的變更。關於調試級別的更多信息,請參考/etc/syslog.conf 檔案。也請參考 debug 子命令。
-g 禁用檔案名稱中的元字元拓展。解釋元字元可參考為擴展(有時叫做檔案名稱匹配替換)檔案名稱。請參考 glob 子命令。
-i 關閉多檔案傳送中的互動式提示。請參考 prompt、mget、mput 和 mdelete 子命令,以取得多檔案傳送中的提示的描述。
-n 防止在起始連線中的自動登錄。否則, ftp 命令會搜尋$HOME/.netrc 登錄項,該登錄項描述了遠程主機的登錄和初始化過程。請參考 user 子命令。
-q 允許用戶指定: send_file 子例程必須用於在網路上傳送檔案。只有當檔案在無保護的情況下以二進制方式傳送時此標誌才適用。
-v 顯示遠程伺服器的全部回響,並提供數據傳輸的統計信息。當 ftp 命令的輸出是到終端(如控制台或顯示)時,此顯示方式是預設方式。
如果 stdin 不是終端,除非用戶調用帶有-v 標誌的 ftp 命令,或傳送 verbose 子命令,否則 ftp 詳細方式將禁用。
-f 導致轉發憑證。如果Kerberos 5 不是當前認證方法,則此標誌將被忽略。
-k realm 如果遠程站的域不同於本地系統的域,系統將允許用戶指定遠程站的域。因此,域和DCE 單元是同義的。如果Kerberos 5 不是當前認證方法,則此標誌將被忽略。
處理規則
ftp 命令使用“檔案傳送協定”(FTP) 在本地和遠程主機或遠程主機之間傳送檔案。
FTP 協定允許在使用不同檔案系統的主機之間進行數據傳送。儘管協定在傳送數據中提供了很高的靈活度,它仍然不會嘗試保留特定於某個檔案系統的檔案屬性(如檔案保護模式或修改時間)。而且,FTP 協定為檔案系統的整體結構做了少許假設,且不提供或不允許諸如循環地複製子目錄這樣的函式。
請注意:如果您正在系統之間傳送檔案,且需要保存檔案屬性或遞歸地複製子目錄,請使用 rcp 命令。
您可以在 ftp> 提示符中輸入子命令,執行類似這樣的任務:列出遠程目錄、更改當前的本地和遠程目錄、在單一請求中傳送多個檔案、創建和除去目錄,以及轉義到本地 shell 執行 shell 命令。
如果您執行 ftp 命令而不為遠程主機指定HostName 參數,ftp 命令會立即顯示 ftp> 提示符,等待 ftp 子命令。要連線遠程主機,請執行 open 子命令。當 ftp 命令連線到遠程主機時,ftp 命令在再次顯示提示符 ftp> 之前會提示輸入登錄名和密碼。如果遠程主機中未定義登錄名的密碼,ftp 命令將不成功。
ftp 命令解釋器(處理在 ftp> 提示符處輸入的全部子命令),會提供大多數檔案傳送程式沒有的性能,如:
* 對 ftp 子命令處理檔案名稱參數
* 將一組子命令集中成一個單一的子命令宏
* 從$HOME/.netrc 檔案中裝入宏
這些性能會幫助您簡化重複的任務,並允許您在 unattended 方式使用 ftp 命令。
命令解釋器將按照下列規則處理檔案名稱參數:
* 如果為此參數指定了-(連字元),則標準輸入 (stdin) 將用於讀取操作,而標準輸出用於寫入操作。
* 如果未套用前面的檢查,且檔案名稱擴展已啟用(請參考-g 標誌或 glob 子命令),則解釋器將根據C shell 的規則擴展檔案名稱。啟用了檔案名稱匹配替換以及在期待單一檔案名稱的子命令中使用了模式匹配字元時,結果可能與期待的不一樣。
例如,append 和 put 子命令將拓展檔案名稱,然後僅使用所生成第一個檔案名稱。其它 ftp 子命令,如 cd、delete, get、mkdir、rename 和 rmdir 不會執行檔案名稱拓展,並從字面上接受模式匹配字元。
* 對於 get、put、mget 和 mput 子命令,解釋器有能力在不同的本地和遠程檔案名稱語法樣式之間進行翻譯和映射(請參考 case、ntrans 和 nmap 子命令),並且在本地檔案名稱不是唯一的情況下有修改它的能力(請參考 runique 子命令)。另外,如果遠程檔案名稱不是唯一的,則 ftp 命令可將指令傳送到遠程 ftpd 伺服器,以修改遠程的檔案名稱(請參考 sunique 子命令)。
* 使用雙引號(" ") 指定包含空字元的參數。
請注意:ftp 命令解釋器不支持管道。也無需支持所有多位元組字元檔案名稱。
要在互動地運行的時候結束 ftp 會話,請使用 quit 或 bye 子命令或 ftp> 提示符處的End of File (Ctrl-D) 按鍵順序。要在檔案傳送未完成之前結束它,請按中斷按鍵順序。其預設“中斷鍵”序列是Ctrl-C。stty 指令能用於重新定義該鍵系列。
ftp 命令在正常情況下會立即暫停正在傳送(從本地主機到遠端主機)的傳輸。ftp 命令通過將FTP ABOR 指令傳送到遠程FTP 伺服器,來暫停正在接收的傳輸(從遠程主機到本地主機),並廢棄所有傳入的檔案傳送包(直到遠程伺服器停止傳送它們為止)。如果遠程伺服器不支持ABOR 指令,在遠程伺服器未傳送所有請求的檔案之前,ftp 命令不會顯示 ftp> 提示符。另外,如果遠程伺服器執行未期望的操作時,可能需要結束本地 ftp 進程。