運(yùn)行機(jī)制
FTP服務(wù)器
簡單地說,支持FTP協(xié)議的服務(wù)器就是FTP服務(wù)器。
與大多數(shù)Internet服務(wù)一樣,F(xiàn)TP也是一個客戶機(jī)/服務(wù)器系統(tǒng)。用戶通過一個支持FTP協(xié)議的客戶機(jī)程序,連接到在遠(yuǎn)程主機(jī)上的FTP服務(wù)器程序。用戶通過客戶機(jī)程序向服務(wù)器程序發(fā)出命令,服務(wù)器程序執(zhí)行用戶所發(fā)出的命令,并將執(zhí)行的結(jié)果返回到客戶機(jī)。比如說,用戶發(fā)出一條命令,要求服務(wù)器向用戶傳送某一個文件的一份拷貝,服務(wù)器會響應(yīng)這條命令,將指定文件送至用戶的機(jī)器上??蛻魴C(jī)程序代表用戶接收到這個文件,將其存放在用戶目錄中。
匿名FTP
使用FTP時必須首先登錄,在遠(yuǎn)程主機(jī)上獲得相應(yīng)的權(quán)限以后,方可下載或上傳文件。也就是說,要想同哪一臺計算機(jī)傳送文件,就必須具有哪一臺計算機(jī)的適當(dāng)授權(quán)。換言之,除非有用戶ID和口令,否則便無法傳送文件。這種情況違背了Internet的開放性,Internet上的FTP主機(jī)何止千萬,不可能要求每個用戶在每一臺主機(jī)上都擁有帳號。匿名FTP就是為解決這個問題而產(chǎn)生的。
匿名FTP是這樣一種機(jī)制,用戶可通過它連接到遠(yuǎn)程主機(jī)上,并從其下載文件,而無需成為其注冊用戶。系統(tǒng)管理員建立了一個特殊的用戶ID,名為anonymous,Internet上的任何人在任何地方都可使用該用戶ID。
通過FTP程序連接匿名FTP主機(jī)的方式同連接普通FTP主機(jī)的方式差不多,只是在要求提供用戶標(biāo)識ID時必須輸入anonymous,該用戶ID的口令可以是任意的字符串。習(xí)慣上,用自己的E-mail地址作為口令,使系統(tǒng)維護(hù)程序能夠記錄下來誰在存取這些文件。
值得注意的是,匿名FTP不適用于所有Internet主機(jī),它只適用于那些提供了這項服務(wù)的主機(jī)。
當(dāng)遠(yuǎn)程主機(jī)提供匿名FTP服務(wù)時,會指定某些目錄向公眾開放,允許匿名存取。系統(tǒng)中的其余目錄則處于隱匿狀態(tài)。作為一種安全措施,大多數(shù)匿名FTP主機(jī)都允許用戶從其下載文件,而不允許用戶向其上傳文件,也就是說,用戶可將匿名FTP主機(jī)上的所有文件全部拷貝到自己的機(jī)器上,但不能將自己機(jī)器上的任何一個文件拷貝至匿名FTP主機(jī)上。即使有些匿名FTP主機(jī)確實允許用戶上傳文件,用戶也只能將文件上傳至某一指定上傳目錄中。隨后,系統(tǒng)管理員會去檢查這些文件,他會將這些文件移至另一個公共下載目錄中,供其他用戶下載,利用這種方式,遠(yuǎn)程主機(jī)的用戶得到了保護(hù),避免了有人上傳有問題的文件,如帶病毒的文件。
用戶分類
Real帳戶
這類用戶是指在FTP服務(wù)上擁有帳號。當(dāng)這類用戶登錄FTP服務(wù)器的時候,其默認(rèn)的主目錄就是其帳號命名的目錄。但是,其還可以變更到其他目錄中去。如系統(tǒng)的主目錄等等。
Guest用戶
在FTP服務(wù)器中,我們往往會給不同的部門或者某個特定的用戶設(shè)置一個帳戶。但是,這個賬戶有個特點,就是其只能夠訪問自己的主目錄。服務(wù)器通過這種方式來保障FTP服務(wù)上其他文件的安全性。這類帳戶,在Vsftpd軟件中就叫做Guest用戶。擁有這類用戶的帳戶,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的文件。
Anonymous(匿名)用戶
這也是我們通常所說的匿名訪問。這類用戶是指在FTP服務(wù)器中沒有指定帳戶,但是其仍然可以進(jìn)行匿名訪問某些公開的資源。
在組建FTP服務(wù)器的時候,我們就需要根據(jù)用戶的類型,對用戶進(jìn)行歸類。默認(rèn)情況下,Vsftpd服務(wù)器會把建立的所有帳戶都?xì)w屬為Real用戶。但是,這往往不符合企業(yè)安全的需要。因為這類用戶不僅可以訪問自己的主目錄,而且,還可以訪問其他用戶的目錄。這就給其他用戶所在的空間帶來一定的安全隱患。所以,企業(yè)要根據(jù)實際情況,修改用戶所在的類別。
使用方式
TCP/IP協(xié)議中,F(xiàn)TP標(biāo)準(zhǔn)命令TCP端口號為21,Port方式數(shù)據(jù)端口為20。FTP的任務(wù)是從一臺計算機(jī)將文件傳送到另一臺計算機(jī),不受操作系統(tǒng)的限制。
需要進(jìn)行遠(yuǎn)程文件傳輸?shù)挠嬎銠C(jī)必須安裝和運(yùn)行ftp客戶程序。在windows操作系統(tǒng)的安裝過程中,通常都安裝了tcp/ip協(xié)議軟件,其中就包含了ftp客戶程序。但是該程序是字符界面而不是圖形界面,這就必須以命令提示符的方式進(jìn)行操作,很不方便。
啟動ftp客戶程序工作的另一途徑是使用ie瀏覽器,用戶只需要在ie地址欄中輸入如下格式的url地址:ftp://[用戶名:口令@]ftp服務(wù)器域名:[端口號]
(在CMD命令行下也可以用上述方法連接,通過put命令和get命令達(dá)到上傳和下載的目的,通過ls命令列出目錄,除了上述方法外還可以在cmd下輸入ftp回車,然后輸入openIP來建立一個連接,此方法還適用于linux下連接ftp服務(wù)器)
通過ie瀏覽器啟動ftp的方法盡管可以使用,但是速度較慢,還會將密碼暴露在ie瀏覽器中而不安全。因此一般都安裝并運(yùn)行專門的ftp客戶程序。
1.在本地電腦上登陸到國際互聯(lián)網(wǎng)。
2.搜索有文件共享主機(jī)或者個人電腦(一般有專門的FTP服務(wù)器網(wǎng)站上公布的,上面有進(jìn)入該主機(jī)或個人電腦的名稱,口令和路徑).
3.當(dāng)與遠(yuǎn)程主機(jī)或者對方的個人電腦建立連接后,用對方提供的用戶名和口令登陸到該主機(jī)或?qū)Ψ降膫€人電腦。
4.在遠(yuǎn)程主機(jī)或?qū)Ψ降膫€人電腦登陸成功后,就可以上傳你想跟別人分享的東西或者下載別人授權(quán)共享的東西(這里的東西是指能放到電腦里去又能在顯示屏上看到的東西).
5.完成工作后關(guān)閉FTP下載軟件,切斷連接。
傳輸方式
FTP的傳輸有兩種方式:ASCII、二進(jìn)制。
ASCII傳輸方式
假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠(yuǎn)程機(jī)器上運(yùn)行的不是UNIX,當(dāng)文件傳輸時ftp通常會自動地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺計算機(jī)存儲文本文件的格式。
但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募?,它們可能是程序,?shù)據(jù)庫,字處理文件或者壓縮文件。在拷貝任何非文本文件之前,用binary命令告訴ftp逐字拷貝。
二進(jìn)制傳輸模式
在二進(jìn)制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應(yīng)的。即使目的地機(jī)器上包含位序列的文件是沒意義的。例如,macintosh以二進(jìn)制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對方系統(tǒng)上,此文件不能執(zhí)行。
如在ASCII方式下傳輸二進(jìn)制文件,即使不需要也仍會轉(zhuǎn)譯。這會損壞數(shù)據(jù)。(ASCII方式一般假設(shè)每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果傳輸二進(jìn)制文件,所有的位都是重要的。)
支持模式
FTP支持兩種模式:Standard(PORT方式,主動方式),Passive(PASV,被動方式)。
Port模式
FTP客戶端首先和服務(wù)器的TCP21端口建立連接,用來發(fā)送命令,客戶端需要接收數(shù)據(jù)的時候在這個通道上發(fā)送PORT命令。PORT命令包含了客戶端用什么端口接收數(shù)據(jù)。在傳送數(shù)據(jù)的時候,服務(wù)器端通過自己的TCP20端口連接至客戶端的指定端口發(fā)送數(shù)據(jù)。FTPserver必須和客戶端建立一個新的連接用來傳送數(shù)據(jù)。
Passive模式
建立控制通道和Standard模式類似,但建立連接后發(fā)送Pasv命令。服務(wù)器收到Pasv命令后,打開一個臨時端口(端口號大于1023小于65535)并且通知客戶端在這個端口上傳送數(shù)據(jù)的請求,客戶端連接FTP服務(wù)器此端口,然后FTP服務(wù)器將通過這個端口傳送數(shù)據(jù)。
很多防火墻在設(shè)置的時候都是不允許接受外部發(fā)起的連接的,所以許多位于防火墻后或內(nèi)網(wǎng)的FTP服務(wù)器不支持PASV模式,因為客戶端無法穿過防火墻打開FTP服務(wù)器的高端端口;而許多內(nèi)網(wǎng)的客戶端不能用PORT模式登陸FTP服務(wù)器,因為從服務(wù)器的TCP20無法和內(nèi)部網(wǎng)絡(luò)的客戶端建立一個新的連接,造成無法工作。
命令參數(shù)
簡介
1.FTP服務(wù)器的登陸
匿名用戶:FTP口令:FTP
用戶:ANONYMOUS口令:任何電子郵件
2.顯示文件信息:DIR/LS
3.下載文件:GET文件名(下載到當(dāng)前目錄)
4.上傳文件:PUT文件名
5.多文件下載:MGET
6.多文件上傳:MPUT
7.退出:BYE
8.幫助:HELP
用途
在本地主機(jī)和遠(yuǎn)程主機(jī)之間傳送文件。
語法
ftp[-d][-g][-i][-n][-v][-f][-krealm][-q[-C]][HostName[Port]]
描述
-C允許用戶指定:通過send_file命令發(fā)出的文件必須在網(wǎng)絡(luò)高速緩沖區(qū)(NBC)中經(jīng)過緩存處理。此標(biāo)志必須在指定了-q標(biāo)志的情況下使用。只有當(dāng)文件在無保護(hù)的情況下以二進(jìn)制方式發(fā)送時此標(biāo)志才適用。
-d將有關(guān)ftp命令操作的調(diào)試信息發(fā)送給syslogd守護(hù)進(jìn)程。如果您指定-d標(biāo)志,您必須編輯/etc/syslog.conf文件并添加下列中的一項:
OR
user.debugFileName
請注意:syslogd守護(hù)進(jìn)程調(diào)試級別包含信息級別消息。
如果不編輯/etc/syslog.conf文件,則不會產(chǎn)生消息。變更了/etc/syslog.conf文件之后,請運(yùn)行refresh-ssyslogd或kill-1SyslogdPID命令,以通知syslogd守護(hù)進(jìn)程其配置文件的變更。關(guān)于調(diào)試級別的更多信息,請參考/etc/syslog.conf文件。也請參考debug子命令。
-g禁用文件名中的元字符拓展。解釋元字符可參考為擴(kuò)展(有時叫做文件名匹配替換)文件名。請參考glob子命令。
-i關(guān)閉多文件傳送中的交互式提示。請參考prompt、mget、mput和mdelete子命令,以取得多文件傳送中的提示的描述。
-n防止在起始連接中的自動登錄。否則,ftp命令會搜索$HOME/.netrc登錄項,該登錄項描述了遠(yuǎn)程主機(jī)的登錄和初始化過程。請參考user子命令。
-q允許用戶指定:send_file子例程必須用于在網(wǎng)絡(luò)上發(fā)送文件。只有當(dāng)文件在無保護(hù)的情況下以二進(jìn)制方式發(fā)送時此標(biāo)志才適用。
-v顯示遠(yuǎn)程服務(wù)器的全部響應(yīng),并提供數(shù)據(jù)傳輸?shù)慕y(tǒng)計信息。當(dāng)ftp命令的輸出是到終端(如控制臺或顯示)時,此顯示方式是缺省方式。
如果stdin不是終端,除非用戶調(diào)用帶有-v標(biāo)志的ftp命令,或發(fā)送verbose子命令,否則ftp詳細(xì)方式將禁用。
-f導(dǎo)致轉(zhuǎn)發(fā)憑證。如果Kerberos5不是當(dāng)前認(rèn)證方法,則此標(biāo)志將被忽略。
-krealm如果遠(yuǎn)程站的域不同于本地系統(tǒng)的域,系統(tǒng)將允許用戶指定遠(yuǎn)程站的域。因此,域和DCE單元是同義的。如果Kerberos5不是當(dāng)前認(rèn)證方法,則此標(biāo)志將被忽略。
處理規(guī)則
ftp命令使用“文件傳送協(xié)議”(FTP)在本地和遠(yuǎn)程主機(jī)或遠(yuǎn)程主機(jī)之間傳送文件。
FTP協(xié)議允許在使用不同文件系統(tǒng)的主機(jī)之間進(jìn)行數(shù)據(jù)傳送。盡管協(xié)議在傳送數(shù)據(jù)中提供了很高的靈活度,它仍然不會嘗試保留特定于某個文件系統(tǒng)的文件屬性(如文件保護(hù)模式或修改時間)。而且,F(xiàn)TP協(xié)議為文件系統(tǒng)的整體結(jié)構(gòu)做了少許假設(shè),且不提供或不允許諸如循環(huán)地復(fù)制子目錄這樣的函數(shù)。
請注意:如果您正在系統(tǒng)之間傳送文件,且需要保存文件屬性或遞歸地復(fù)制子目錄,請使用rcp命令。
您可以在ftp>提示符中輸入子命令,執(zhí)行類似這樣的任務(wù):列出遠(yuǎn)程目錄、更改當(dāng)前的本地和遠(yuǎn)程目錄、在單一請求中傳送多個文件、創(chuàng)建和除去目錄,以及轉(zhuǎn)義到本地shell執(zhí)行shell命令。
如果您執(zhí)行ftp命令而不為遠(yuǎn)程主機(jī)指定HostName參數(shù),ftp命令會立即顯示ftp>提示符,等待ftp子命令。要連接遠(yuǎn)程主機(jī),請執(zhí)行open子命令。當(dāng)ftp命令連接到遠(yuǎn)程主機(jī)時,ftp命令在再次顯示提示符ftp>之前會提示輸入登錄名和密碼。如果遠(yuǎn)程主機(jī)中未定義登錄名的密碼,ftp命令將不成功。
ftp命令解釋器(處理在ftp>提示符處輸入的全部子命令),會提供大多數(shù)文件傳送程序沒有的性能,如:
*對ftp子命令處理文件名參數(shù)
*將一組子命令集中成一個單一的子命令宏
*從$HOME/.netrc文件中裝入宏
這些性能會幫助您簡化重復(fù)的任務(wù),并允許您在unattended方式使用ftp命令。
命令解釋器將按照下列規(guī)則處理文件名參數(shù):
*如果為此參數(shù)指定了-(連字符),則標(biāo)準(zhǔn)輸入(stdin)將用于讀取操作,而標(biāo)準(zhǔn)輸出用于寫入操作。
*如果未應(yīng)用前面的檢查,且文件名擴(kuò)展已啟用(請參考-g標(biāo)志或glob子命令),則解釋器將根據(jù)Cshell的規(guī)則擴(kuò)展文件名。啟用了文件名匹配替換以及在期待單一文件名的子命令中使用了模式匹配字符時,結(jié)果可能與期待的不一樣。
例如,append和put子命令將拓展文件名,然后僅使用所生成第一個文件名。其它ftp子命令,如cd、delete,get、mkdir、rename和rmdir不會執(zhí)行文件名拓展,并從字面上接受模式匹配字符。
*對于get、put、mget和mput子命令,解釋器有能力在不同的本地和遠(yuǎn)程文件名語法樣式之間進(jìn)行翻譯和映射(請參考case、ntrans和nmap子命令),并且在本地文件名不是唯一的情況下有修改它的能力(請參考runique子命令)。另外,如果遠(yuǎn)程文件名不是唯一的,則ftp命令可將指令發(fā)送到遠(yuǎn)程ftpd服務(wù)器,以修改遠(yuǎn)程的文件名(請參考sunique子命令)。
*使用雙引號("")指定包含空字符的參數(shù)。
請注意:ftp命令解釋器不支持管道。也無需支持所有多字節(jié)字符文件名。
要在互動地運(yùn)行的時候結(jié)束ftp會話,請使用quit或bye子命令或ftp>提示符處的EndofFile(Ctrl-D)按鍵順序。要在文件傳送未完成之前結(jié)束它,請按中斷按鍵順序。其缺省“中斷鍵”序列是Ctrl-C。stty指令能用于重新定義該鍵系列。
ftp命令在正常情況下會立即暫停正在發(fā)送(從本地主機(jī)到遠(yuǎn)端主機(jī))的傳輸。ftp命令通過將FTPABOR指令發(fā)送到遠(yuǎn)程FTP服務(wù)器,來暫停正在接收的傳輸(從遠(yuǎn)程主機(jī)到本地主機(jī)),并廢棄所有傳入的文件傳送包(直到遠(yuǎn)程服務(wù)器停止發(fā)送它們?yōu)橹梗H绻h(yuǎn)程服務(wù)器不支持ABOR指令,在遠(yuǎn)程服務(wù)器未發(fā)送所有請求的文件之前,ftp命令不會顯示ftp>提示符。另外,如果遠(yuǎn)程服務(wù)器執(zhí)行未期望的操作時,可能需要結(jié)束本地ftp進(jìn)程。
登錄認(rèn)證
如果“標(biāo)準(zhǔn)的”是當(dāng)前認(rèn)證方法:
ftp命令也會通過將密碼發(fā)送到遠(yuǎn)程主機(jī)來處理安全性,并許可自動登錄、文件傳送和注銷操作。
如果您執(zhí)行ftp命令并指定遠(yuǎn)程主機(jī)的主機(jī)名(HostName),ftp命令會嘗試建立一個對于指定主機(jī)的連接。如果ftp命令連接成功,ftp命令會在當(dāng)前目錄或主目錄中搜索本地的$HOME/.netrc文件。如果文件存在,ftp命令會在文件中搜索啟動登錄過程的入口,在命令宏定義中搜索遠(yuǎn)程主機(jī)。如果$HOME/.netrc文件或自動登錄項不存在,或是系統(tǒng)已使用securetcpip命令保護(hù)起來,ftp命令會提示用戶輸入用戶名和密碼。不論命令行中是否指定HostName參數(shù),該指令都會顯示此提示。
請注意:排隊系統(tǒng)不支持多字節(jié)主機(jī)名。
如果ftp命令找到指定主機(jī)的$HOME/.netrc自動登錄項,ftp會試圖使用該登錄項中的信息登錄遠(yuǎn)程主機(jī)。ftp命令也會載入任何在登錄項中定義的命令宏。在某些情況(例如,所需的密碼在自動登錄項中沒有列出來),ftp命令會在顯示ftp>提示符之前提示輸入密碼。
一旦ftp命令完成自動登錄,如果宏是在自動登錄項中定義的,ftp命令就會執(zhí)行init宏。如果init宏不存在或未包含quit或bye子命令,ftp命令將顯示ftp>提示符并等待子命令。
請注意:在提示符或在$HOME/.netrc文件中指定的遠(yuǎn)程主機(jī)名必須存在,并擁有在遠(yuǎn)程主機(jī)中定義的密碼。否則,ftp指令無效。
如果Kerberos5是當(dāng)前的認(rèn)證方法:
ftp命令會按在IETF草稿文擋"draft-ietf-cat-ftpsec-09.txt"定義的那樣將此拓展用于ftp規(guī)范。FTP安全性擴(kuò)展將使用“GenericSecurityServiceAPI(GSSAPI)”安全機(jī)制來實現(xiàn)。GSSAPI提供對于基礎(chǔ)的安全性和通信機(jī)制來說是獨(dú)立的服務(wù)。GSSAPI是在rfc1508和1509中定義的。
ftp命令將使用AUTH和ADAT命令驗證ftpd守護(hù)進(jìn)程。如果兩者都支持Kerberos認(rèn)證,則它們會使用本地用戶DCE憑證驗證遠(yuǎn)程系統(tǒng)上的用戶。如果這樣失敗了,且兩個系統(tǒng)中都配置了“標(biāo)準(zhǔn)的”認(rèn)證,則會使用上述的過程。
HostName參數(shù)是傳送文件的目的地主機(jī)名稱??蛇x的Port參數(shù)指定了端口的標(biāo)識符,通過此端口進(jìn)行傳輸。(/etc/services文件指定了缺省端口。)
操作命令
下列ftp子命令在ftp>提示符下輸入。使用雙引號("")指定包含空格字符的參數(shù)。
![命令[參數(shù)]]在本地主機(jī)上調(diào)用交互的shell??赏ㄟ^shell命令提供帶有一個或多個可選參數(shù)的可選命令。
$>Macro[參數(shù)]執(zhí)行指定的宏(早先使用macdef子命令定義的)。參數(shù)不被擴(kuò)展。
?[子命令]顯示描述子命令的幫助消息。如果您不指定Subcommand參數(shù),ftp命令將顯示已知子命令的清單。
account[Password]發(fā)送遠(yuǎn)程主機(jī)在授權(quán)對其資源進(jìn)行訪問之前可能需要的補(bǔ)充密碼。如果密碼不是命令提供的,將提示用戶輸入密碼。密碼不在屏幕上顯示。
appendLocalFile[RemoteFile]將本地文件添加到遠(yuǎn)程主機(jī)文件中。如果遠(yuǎn)程文件名未指定,則將使用本地文件名,該文件名由ntrans子命令或nmap子命令生成的任何設(shè)置進(jìn)行改變。添加文件的時候,append子命令將為form、mode,struct、和type子命令使用當(dāng)前值。
asciitypeascii子命令的同義詞。
bell每個文件傳送過程完成之后響一聲鈴。
binarytypebinary子命令的同義詞。
blockmodeblock子命令的同義詞。
bye結(jié)束文件傳送會話并退出ftp命令。與quit子命令相同。
carriage-controlformcarriage-control子命令的同義詞。
case為文件名case設(shè)置一個切換。當(dāng)case子命令開啟的時候ftp命令將全部遠(yuǎn)程文件名從大寫改成小寫(將它們寫入本地目錄時)。其缺省值為關(guān)閉(這樣ftp命令就會在本地目錄中按大寫格式寫入大寫的遠(yuǎn)程文件名)。
cdRemoteDirectory將遠(yuǎn)程主機(jī)中的工作目錄改為指定的目錄。
cdup將遠(yuǎn)程主機(jī)中的工作目錄改為當(dāng)前目錄的父目錄。
close結(jié)束文件傳送會話,但不要退出ftp命令。已定義的宏已被擦除。與disconnect子命令相同。
copylocal切換本地拷貝。copylocal缺省值為關(guān)閉。ftp通過向自身執(zhí)行ftp操作確認(rèn)您未置零文件(如相同的主機(jī)名和相同的路徑名)。將copylocal打開繞過這一檢查。
cr在ASCII類型文件傳送期間接收記錄時,從回車和line-feed序列中除去回車字符。(ftp命令在文件傳送期間用回車和換行中止每一條ASCII類型的記錄。)
遠(yuǎn)程主機(jī)(其操作系統(tǒng)與正在運(yùn)行的操作系統(tǒng)不同)的記錄可擁有內(nèi)嵌于記錄中的單一換行。要從記錄定界符中區(qū)分這些內(nèi)嵌的換行,請將cr子命令設(shè)置為關(guān)閉。cr子命令會在開啟和關(guān)閉中間進(jìn)行切換。
debug[0|1]在調(diào)試記錄保持開啟和關(guān)閉之間進(jìn)行切換。指定debug或debug1,以打印發(fā)送到遠(yuǎn)程主機(jī)的每一個命令,并保存重新啟動的控制文件。重新指定debug或debug0,停止調(diào)試記錄保持。Ctrl-C鍵也會保存重新啟動的控制文件。
指定debug子命令將有關(guān)ftp命令操作的調(diào)試信息發(fā)送給syslogd守護(hù)進(jìn)程。如果指定了debug子命令,您必須編輯/etc/syslog.conf文件并添加下列中的其中一項:
請注意:syslogd守護(hù)進(jìn)程調(diào)試級別包含信息級別消息。
如果不編輯/etc/syslog.conf文件,則不會產(chǎn)生消息。變更了/etc/syslog.conf文件之后,請運(yùn)行refresh-ssyslogd或kill-1SyslogdPID命令,以通知syslogd守護(hù)進(jìn)程其配置文件的變更。關(guān)于調(diào)試級別的更多信息,請參考/etc/syslog.conf文件。也請參考ftp-d標(biāo)志。
deleteRemoteFile刪除指定的遠(yuǎn)程文件。
dir[RemoteDirectory][LocalFile]將所指定的遠(yuǎn)程目錄的內(nèi)容清單(RemoteDirectory)寫入指定的本地文件(LocalFile)。如果RemoteDirectory參數(shù)未指定,dir子命令將列出當(dāng)前遠(yuǎn)程目錄的內(nèi)容。如果LocalFile參數(shù)未指定或是一個-(連字符),則dir子命令將顯示本地終端上的清單。
disconnect結(jié)束文件傳送會話,但不退出ftp命令。已定義的宏已被擦除。與close子命令相同。
ebcdictypeebcdic子命令的同義詞。
exp_cmd在常規(guī)的和試驗性的協(xié)議命令中切換。其缺省值為關(guān)閉。
filestructfile子命令的同義詞。
form[carriage-control|non-print|telnet]指定文件傳送的格式。form子命令修改type子命令,以便按指示的格式發(fā)送文件傳送。有效的參數(shù)為carriage-control、non-print和telnet。
carriage-control
將文件傳送格式設(shè)置為carriage-control。
non-print
將文件傳送格式設(shè)置為non-print。
telnet
將文件傳送格式設(shè)置為Telnet。Telnet是打開對系統(tǒng)的連接的傳輸控制協(xié)議/網(wǎng)間協(xié)議(TCP/IP)。
getRemoteFile[LocalFile]將遠(yuǎn)程文件拷貝到本地主機(jī)。如果LocalFile參數(shù)未指定,將在本地使用遠(yuǎn)程文件名,并由case、ntrans和nmap子命令生成的任何設(shè)置進(jìn)行改變。ftp命令在傳送文件時,將使用type、form、mode和struct子命令的當(dāng)前設(shè)置。
glob切換mdelete、mget和mput子命令的文件名拓展(文件名匹配替換)。如果文件名匹配替換禁用,這些子命令的文件名參數(shù)將不會拓展。啟用了文件名匹配替換以及在期待單一文件名的子命令中使用了模式匹配字符時,結(jié)果可能與期待的不一樣。
例如,append和put子命令將拓展文件名,然后僅使用所生成第一個文件名。其它ftp子命令,如cd、delete,get、mkdir、rename和rmdir不會執(zhí)行文件名拓展,并從字面上接受模式匹配字符。
mput子命令的文件名匹配替換在本地執(zhí)行,其方式與csh命令的方式一樣。對于mdelete和mget子命令,每個文件名都是在遠(yuǎn)程機(jī)器上分別地進(jìn)行擴(kuò)展的,其清單也不會合并。根據(jù)遠(yuǎn)程主機(jī)和ftp服務(wù)器的不同,目錄名的拓展可與文件名的拓展不一樣。
要預(yù)覽目錄名的擴(kuò)展請使用mls子命令。
mlsRemoteFile
要傳送文件的整個目錄子樹,請勿使用mget或mput子命令,而按二進(jìn)制格式傳送子樹的tar壓縮文檔。
hash切換散列符號(#)打印。當(dāng)hash子命令是開啟的時候ftp命令會為每個所傳送的數(shù)據(jù)塊(1024字節(jié))顯示一個散列符號。
help[子命令]顯示幫助信息。請參考?子命令。
imagetypeimage子命令的同義詞。
lcd[Directory]更改本地主機(jī)中的工作目錄。如果您未指定目錄,ftp命令將使用主目錄。
localMtypelocalM子命令的同義詞。
ls[RemoteDirectory][LocalFile]請將遠(yuǎn)程目錄縮寫的文件清單寫入本地文件。如果RemoteDirectory參數(shù)未指定,ftp命令將列出當(dāng)前遠(yuǎn)程目錄。如果LocalFile參數(shù)未指定或是一個-(連字符),則ftp命令將顯示本地終端上的清單。
macdefMacro定義子命令宏。隨后直到空行的行(兩個連續(xù)的換行)將作為宏的文本保存。能為所有宏定義多達(dá)16個宏,包含4096個字符。在重新定義或執(zhí)行close子命令前,應(yīng)將宏保持為已定義的宏。
$(美元符號)和\(反斜杠)是ftp宏中的特殊字符。跟隨一個或多個數(shù)字的$符號將被調(diào)用行中對應(yīng)的宏參數(shù)所替換(請參考$子命令)。$符號后緊隨字母i表示將要循環(huán)該宏,$i字符組合將被每一傳遞中連續(xù)的字符替換。
第一個參數(shù)用于第一個傳遞,第二個參數(shù)用于第二個傳遞,依此類推。\符號會防止下一個字符的特殊處理。請使用\符號關(guān)閉$和\.(反斜杠句點)符號的特殊意義。
mdeleteRemoteFiles擴(kuò)展在遠(yuǎn)程主機(jī)上RemoteFiles參數(shù)所指定的文件,并刪除遠(yuǎn)程文件。
mdir[RemoteDirectoriesLocalFile]擴(kuò)展在遠(yuǎn)程主機(jī)上RemoteDirectories參數(shù)所指定的目錄,并將這些目錄的內(nèi)容清單寫入在LocalFile參數(shù)中定義的文件。如果RemoteDirectories參數(shù)包含模式匹配字符,mdir子命令將提示輸入本地文件(如果沒指定)。如果RemoteDirectories參數(shù)是用空格隔開的遠(yuǎn)程目錄清單,則清單中最后一個參數(shù)必須是一個本地文件名或-(連字符)。
如果LocalFile參數(shù)是-(連字符),mdir子命令將顯示本地終端上的清單。如果交互式提示啟用(請參考prompt子命令),ftp命令將提示用戶驗證最后一個參數(shù)是本地文件且不是遠(yuǎn)程目錄。
mgetRemoteFiles請擴(kuò)展在遠(yuǎn)程主機(jī)上RemoteFiles參數(shù),并將指示的遠(yuǎn)程文件拷貝到本地主機(jī)的當(dāng)前目錄中。請參考glob子命令,取得更多有關(guān)文件名擴(kuò)展的信息。遠(yuǎn)程文件名在本地使用,并由case、ntrans和nmap子命令所生成的設(shè)置進(jìn)行變更。在傳送文件時,ftp命令將使用form、mode、struct和type子命令的當(dāng)前設(shè)置。
mkdir[RemoteDirectory]創(chuàng)建在RemoteDirectory參數(shù)(遠(yuǎn)程主機(jī)中)中指定的目錄。
mls[RemoteDirectoriesLocalFile]擴(kuò)展在遠(yuǎn)程主機(jī)上在RemoteDirectories參數(shù)中指定的目錄,并將所指示的遠(yuǎn)程目錄的縮寫文件清單寫入本地文件。如果RemoteDirectories參數(shù)包含模式匹配字符,mls子命令將提示輸入本地文件(如果沒指定)。如果RemoteDirectories參數(shù)是用空格隔開的遠(yuǎn)程目錄清單,則清單中最后一個參數(shù)應(yīng)是一個本地文件名或-(連字符)。
如果LocalFile參數(shù)是-(連字符),mls子命令將顯示本地終端上的清單。如果交互式提示啟用(請參考prompt子命令),ftp命令將提示用戶驗證最后一個參數(shù)是本地文件且不是遠(yuǎn)程目錄。
mode[stream|block]設(shè)置文件傳送方式。如果參數(shù)未提供,則缺省值為stream。
block
請將文件傳送方式設(shè)置為block。
stream
將文件傳送方式設(shè)置為stream。
modtime顯示遠(yuǎn)程機(jī)器中所指定文件的最后修改時間。如果ftp命令未連接到執(zhí)行前的主機(jī),則modtime子命令將帶錯誤消息而終止。ftp命令忽略第一個參數(shù)以外的參數(shù)。如果FileName參數(shù)未指定,ftp命令將提示輸入文件名。如果未給出文件名,ftp命令將把用法消息發(fā)送給標(biāo)準(zhǔn)輸出,并終止該子命令。
如果遠(yuǎn)程主機(jī)中有FileName參數(shù)指定的名稱,且該名稱指定一個文件,則ftp命令將包含文件最后修改時間的消息發(fā)送給標(biāo)準(zhǔn)輸出,并終止該子命令。如果FileName指定一個目錄,則ftp命令將把錯誤消息發(fā)送給標(biāo)準(zhǔn)輸出,并終止該子命令。
注意:modtime子命令在允許的時候會解釋元字符。
mput[LocalFiles]擴(kuò)展在主機(jī)的LocalFiles參數(shù)中指定的文件,并將指示的本地文件復(fù)制給遠(yuǎn)程主機(jī)。請參考glob子命令,取得更多有關(guān)文件名擴(kuò)展的信息。本地文件名在遠(yuǎn)程主機(jī)中使用,并由ntrans和nmap子命令所生成的設(shè)置進(jìn)行變更。ftp命令會在傳送文件時,使用type、form、mode和struct子命令的當(dāng)前設(shè)置。
nlist[RemoteDirectory][LocalFile]將所指定的遠(yuǎn)程目錄的內(nèi)容清單(RemoteDirectory)寫入指定的本地文件(LocalFile)。如果RemoteDirectory參數(shù)未指定,nlist子命令將列出當(dāng)前遠(yuǎn)程目錄的內(nèi)容。如果LocalFile參數(shù)未指定或是一個-(連字符),則nlist子命令將顯示本地終端上的清單。
nmap打開或關(guān)閉文件名映射機(jī)制。如果未指定任何參數(shù),文件名映射將關(guān)閉。如果參數(shù)已指定,在沒有指定目標(biāo)文件名的時候,將為mget和mput子命令以及get和put子命令映射源文件名。此子命令在本地和遠(yuǎn)程主機(jī)使用不同的文件命名約定和慣例時很有用。映射下列由InPattern和OutPattern參數(shù)設(shè)置的模式。
InPattern參數(shù)為傳入的文件名指定了模板,該文件名有可能已根據(jù)case和ntrans設(shè)置處理過。可將從$1到$9的模板變量包含進(jìn)InPattern參數(shù)。除$(美元符號)和\$(反斜杠,美元符號)以外,InPattern參數(shù)中的所有字符,都是按字面意義處理的,并用作InPattern變量之間的定界符。例如,如果InPattern參數(shù)是$1.$2且遠(yuǎn)程文件名是mydata.dat,則$1的值是mydata,$2的值是dat。
此OutPattern參數(shù)確定結(jié)果文件名。從$1到$9的變量將被它們從InPattern參數(shù)獲得的值替換,而變量$0將由原文件名替換。另外,如果Sequence1不為空,序列[Sequence1,Sequence2]將由Sequence1替換;否則它將由Sequence2的值替換。例如,子命令:
nmap$1.$2.$3[$1,$2].[$2,file]
會從myfile.data或myfile.data.old中產(chǎn)生myfile.data,從myfile中產(chǎn)生myfile.file,從。myfile中產(chǎn)生myfile.myfile。請使用\(反斜杠)符號防止OutPattern參數(shù)中$(美元符號)、[(左括號)、](右括號)和,(逗號)的特殊意義。
non-printformnon-print子命令的同義詞。
ntrans]打開或關(guān)閉文件名字符翻譯機(jī)制。如果未指定任何參數(shù),字符翻譯將關(guān)閉。如果參數(shù)已指定,在沒有指定目標(biāo)文件名的時候,將為mget和mput子命令以及get和put子命令翻譯源文件名中的字符。
此子命令在本地和遠(yuǎn)程主機(jī)使用不同的文件名約定和慣例時很有用。字符翻譯遵從InCharacters和OutCharacters參數(shù)設(shè)置的模式。匹配InCharacters參數(shù)中字符的源文件名中的字符將由OutCharacters參數(shù)中對應(yīng)的字符替換。
如果InCharacters參數(shù)指定的字符串比OutCharacters參數(shù)指定的字符串長,而且其在OutCharacters參數(shù)中無對應(yīng)的字符,則InCharacters參數(shù)中的字符將被刪除。
openHostName[Port]在由HostName參數(shù)所指定主機(jī)中建立對FTP服務(wù)器的連接。如果可選的端口號已指定ftp命令將嘗試連接該端口中的服務(wù)器。如果已設(shè)置自動登錄功能(即,該-n標(biāo)志沒有在命令行中指定),則ftp命令就會試圖讓用戶登錄到FTP服務(wù)器。
您還必須擁有其中帶有正確信息的$HOME/.netrc文件和正確的許可集。。netrc文件應(yīng)在您的主目錄中。
passive切換文件傳送的被動方式。在被動方式關(guān)閉的情況下調(diào)用文件傳送命令(如get、mget和put,或mput)時,ftp服務(wù)器就會打開對客戶機(jī)的數(shù)據(jù)連接。在被動方式下,客戶機(jī)在發(fā)送和接收數(shù)據(jù)的時候打開對主機(jī)的數(shù)據(jù)連接。
private請將保護(hù)級別設(shè)置為“private”。在此級別,數(shù)據(jù)的保護(hù)既完整而又機(jī)密。
prompt切換交互式提示。如果交互式提示啟用(缺省值)ftp命令在檢索、發(fā)送或刪除文件(在mget、mput,和mdelete)之前會提示進(jìn)行驗證操作。否則,ftp命令會根據(jù)所有指定的文件來執(zhí)行。
protect此指令會返回保護(hù)的當(dāng)前級別。
proxy[子命令]在輔助控制連接中執(zhí)行ftp命令。此子命令允許ftp子命令同時連接兩個遠(yuǎn)程FTP服務(wù)器,以便在兩個服務(wù)器之間傳送文件。第一個proxy子命令應(yīng)是建立次要控制連接的open子命令。請輸入proxy?子命令,查看其它在二級連接中可執(zhí)行的ftp子命令。
下列子命令在由proxy子命令開頭時的表現(xiàn)會不一樣:
*open子命令在自動登錄過程中不定義新的宏。
*close子命令不會擦除現(xiàn)存的宏定義。
*get和mget子命令從主連接中的主機(jī)上將文件傳送到二級連接的主機(jī)上。
*put、mput和append子命令從第二連接中的主機(jī)上將文件傳送到主連接的主機(jī)上。
*restart子命令可由proxy命令進(jìn)行處理。
*status子命令顯示出準(zhǔn)確的信息。
文件傳送要求第二連接上的FTP服務(wù)器必須支持PASV(passive)指令。
putLocalFile[RemoteFile]將本地文件存儲到遠(yuǎn)程主機(jī)中。如果您未指定RemoteFile參數(shù),ftp命令將使用本地文件名命名遠(yuǎn)程文件,而遠(yuǎn)程文件名由ntrans和nmap子命令所生成的設(shè)置加以改變。ftp命令會在傳送文件時,將使用type、form、mode和struct子命令的當(dāng)前設(shè)置。
pwd顯示遠(yuǎn)程主機(jī)中的當(dāng)前目錄名。
quit關(guān)閉連接并退出ftp命令。與bye子命令相同。
quote字符串逐字地將由String參數(shù)指定的字符串發(fā)送到遠(yuǎn)程主機(jī)。執(zhí)行remotehelp或quotehelp子命令,顯示String參數(shù)的有效值清單。
注意:涉及數(shù)據(jù)傳輸?shù)?ldquo;Quoting”命令會產(chǎn)生不可預(yù)見的結(jié)果。
recordstructrecord子命令的同義詞。
recvRemoteFile[LocalFile]請將遠(yuǎn)程文件拷貝到本地主機(jī)。與get子命令相同。
reinitialize通過刷新所有I/O并允許完成傳輸操作來對FTP會話進(jìn)行重新初始化。按照用戶已開始FTP會話但未登錄到遠(yuǎn)程主機(jī)的情況復(fù)位所有缺省值。
remotehelp[Subcommand]請求從遠(yuǎn)程FTP服務(wù)器獲得幫助。
renameFromNameToName重新命名遠(yuǎn)程主機(jī)上的文件。
reset清除回復(fù)隊列。此子命令將使命令分析重新同步。
restartget|put|append請在生成上一個檢查點的位置重新啟動文件傳送。要想順利運(yùn)行,該子命令應(yīng)與異常終止子命令相同,包括結(jié)構(gòu)、類型和格式。有效參數(shù)為get、put和append。
rmdirRemoteDirectory除去由遠(yuǎn)程主機(jī)中的RemoteDirectory參數(shù)所指定的遠(yuǎn)程目錄。
runique(ReceiveUnique)在子命令get和mget期間,切換為本地目的文件創(chuàng)建唯一文件名稱的功能。如果此功能為“關(guān)閉”狀態(tài)(預(yù)設(shè)值),ftp命令會覆蓋本地文件。否則,如果本地文件名與為本地目的文件指定的名稱相同,ftp將使用.1修改為本地目的文件指定的名稱。如果本地文件已使用了新名稱,ftp將把后綴。2添加給所指定的名稱。如果本地文件已使用了此第二個名稱,則ftp命令會在找到唯一的文件名或未找到唯一文件名但到達(dá).99之前繼續(xù)增加后綴。如果ftp命令找不到唯一的文件名,ftp會報告錯誤,傳輸過程也不會發(fā)生。請注意runique子命令不會影響從shell命令產(chǎn)生的本地文件名。
safe將保護(hù)級別設(shè)置為“safe”。在此級別,數(shù)據(jù)的完整性會得到保護(hù)。
sendLocalFile[RemoteFile]將本地文件存儲到遠(yuǎn)程主機(jī)中。其方式與put子命令相同。
sendport切換對于FTPPORT指令的使用。根據(jù)預(yù)設(shè),ftp命令在為每個數(shù)據(jù)傳輸建立連接的時候會使用PORT指令。當(dāng)禁用PORT指令時,ftp不會在數(shù)據(jù)傳輸中使用PORT命令。PORT指令在處理某些FTP服務(wù)器時很有用,那些服務(wù)器在未正確指示指令已被接受時會忽略PORT指令。
siteArgs使用chmod命令顯示或設(shè)置空閑超時周期、顯示或設(shè)置文件創(chuàng)建umask或更改文件的許可權(quán)。Args參數(shù)可能的值是umask和chmod。
sizeRemoteFile以字節(jié)的方式顯示RemoteFile參數(shù)所指定的遠(yuǎn)程文件的大小。
status顯示ftp命令的當(dāng)前狀態(tài)以及子命令的狀態(tài)。
streammodestream子命令的同義詞。
struct[file|record]設(shè)置數(shù)據(jù)傳送結(jié)構(gòu)類型。有效的參數(shù)為file和record。
file
將數(shù)據(jù)傳送結(jié)構(gòu)類型設(shè)置為file。
record
將數(shù)據(jù)傳送結(jié)構(gòu)類型設(shè)置為record。
sunique(Send/StoreUnique)在子命令put和mput期間,切換為遠(yuǎn)程目的文件創(chuàng)建唯一文件名稱的功能。如果此功能為“關(guān)閉”狀態(tài)(預(yù)設(shè)值),ftp命令會覆蓋遠(yuǎn)程文件。否則,如果遠(yuǎn)程文件名與為遠(yuǎn)程目的文件指定的名稱相同,遠(yuǎn)程FTP服務(wù)器會修改遠(yuǎn)程目的文件的名稱。請注意遠(yuǎn)程服務(wù)器必須支持STOU指令。
系統(tǒng)顯示在遠(yuǎn)程機(jī)器上運(yùn)行的操作系統(tǒng)類型。
telnetformtelnet子命令的同義詞。
tenextypetenex子命令的同義詞。
跟蹤切換包跟蹤。
type[ascii|binary|ebcdic|image|localM|tenex]設(shè)置文件傳送類型。有效參數(shù)是ascii、binary、ebcdic、image,、localM和tenex。如果參數(shù)未指定,則當(dāng)前類型被顯示。缺省類型為ascii;binary類型可能會比ascii更有效。
ascii
將文件傳送類型設(shè)置為網(wǎng)絡(luò)ASCII。此類型為缺省值。文件傳送使用二進(jìn)制映像傳送可能會更有效。請參考binary參數(shù),以取得更多信息。
binary
文件傳送類型設(shè)置為二進(jìn)制映像。此類型可能比ASCII傳送更有效。
ebcdic
將文件傳送類型設(shè)置為EBCDIC。
image
將文件傳送類型設(shè)置為二進(jìn)制映像。此類型可能比ASCII傳送更有效。
localM
將文件傳送類型設(shè)置為本地。M參數(shù)定義每計算機(jī)字位的十進(jìn)制數(shù)。此參數(shù)沒有缺省值。
tenex
將文件傳送類型設(shè)置為TENEX機(jī)器需要的類型。
userUser[Password][Account]識別遠(yuǎn)程FTP服務(wù)器的本地用戶(User)。如果未指定Password或Account參數(shù),而遠(yuǎn)程服務(wù)器需要它,則ftp命令會提示輸入本地的密碼和帳戶。如果Account參數(shù)是必須的,則ftp命令會在遠(yuǎn)程登錄過程完成后將它發(fā)送到遠(yuǎn)程服務(wù)器。
注意:除非通過在命令行上指定-n標(biāo)志來禁用自動登錄,否則ftp命令將User、Password和Account參數(shù)自動地發(fā)送給遠(yuǎn)程服務(wù)器用于初始連接。您亦需主目錄中的。netrc文件以便發(fā)布自動登錄。
verbose切換詳細(xì)方式。如果詳細(xì)方式啟用(缺省值),ftp命令將顯示遠(yuǎn)程FTP服務(wù)器的全部響應(yīng)。另外,ftp會在傳輸完成后顯示所有文件傳送的統(tǒng)計信息。
傳輸協(xié)議
FTP是一個8位的客戶端-服務(wù)器協(xié)議,能操作任何類型的文件而不需要進(jìn)一步處理,就像MIME或Unicode一樣。但是,F(xiàn)TP有著極高的延時,這意味著,從開始請求到第一次接收需求數(shù)據(jù)之間的時間,會非常長;并且不時的必須執(zhí)行一些冗長的登陸進(jìn)程。
內(nèi)容來自百科網(wǎng)