centos 6.5 ftp服務配置及客戶端使用


一、ftp服務簡介

FTP是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議以傳輸文件。在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己的計算機上;"上傳"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上傳(下載)文件。

 

二、ftp服務搭建

1. 安裝vsftpd

yum -y install vsftpd

 

2. 關閉iptables

為了方便測試,先將iptables關閉,后面如果有需要開iptables再加規則:

service iptables stop

 

3. 配置vsftpd服務器

默認的配置文件是/etc/vsftpd/vsftpd.conf,編輯這個文件進行配置

3.1 配置vsftpd

將原文件下面注釋的幾句改為:

chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES

參數解釋:

 

chroot_local_user=YES

chroot_local_user=NO

chroot_list_enable=YES

1.所有用戶都被限制在其主目錄下
2.使用chroot_list_file指定的用戶列表,這些用戶作為“例外”,不受限制

1.所有用戶都不被限制其主目錄下
2.使用chroot_list_file指定的用戶列表,這些用戶作為

“例外”,受到限制

chroot_list_enable=NO

1.所有用戶都被限制在其主目錄下
2.不使用chroot_list_file指定的用戶列表,沒有任何“例外”用戶

1.所有用戶都不被限制其主目錄下
2.不使用chroot_list_file指定的用戶列表,沒有任何

“例外”用戶

關於最后一個參數:

從2.3.5之后,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了!如果檢查發現還有寫權限,就會報該錯誤。

要修復這個錯誤,可以用命令chmod a-w /home/user去除用戶主目錄的寫權限,注意把目錄替換成你自己的。或者你可以在vsftpd的配置文件中增加下列兩項中的一項:

allow_writeable_chroot=YES

 

3.2 關於ftp用戶

ftp服務可以配置三種用戶。

1. Real用戶
這類用戶是指在FTP服務上擁有帳號。當這類用戶登錄FTP服務器的時候,其默認的主目錄就是其帳號命名的目錄。但是,其還可以變更到其他目錄中去。如系統的主目錄等等。

 

2. Guest用戶
在FTP服務器中,我們往往會給不同的部門或者某個特定的用戶設置一個帳戶。但是,這個賬戶有個特點,就是其只能夠訪問自己的主目錄。服務器通過這種方式來保障FTP服務上其他文件的安全性。這類帳戶,在Vsftpd軟件中就叫做Guest用戶。擁有這類用戶的帳戶,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的文件。

 

3. Anonymous(匿名)用戶
這也是我們通常所說的匿名訪問。這類用戶是指在FTP服務器中沒有指定帳戶,但是其仍然可以進行匿名訪問某些公開的資源。

下面主要講Guest用戶的建立與配置。

 

3.3 增加用戶

增加系統用戶ftpuser,禁止登錄SSH權限:

useradd -d /home/ftpuser -g ftp -s /sbin/nologin ftpuser

一般來說,這個用戶文件可以根據實際情況進行權限配置。 

 

3.4 設置用戶口令

passwd ftpuser

 

3.5 編輯文件chroot_list

vi /etc/vsftpd/chroot_list

內容為ftp用戶名,每個用戶占一行,如:

ftpuser

 

3.6 重新啟動vsftpd

service vsftpd restart

 

三、客戶端

1. 安裝ftp客戶端

yum -y install ftp

 

2. 連接ftp服務器並操作

ftp ftp服務器ip

按照指示輸入賬號密碼,登錄,如果正常登錄,證明前面設置的ftp服務正確。

可以使用put命令上傳一個文件試試是否正常:

put test_up

 

3. 常用操作

1) HELP、 ?、RHEIP、REMOTEHELP

  • HELP顯示LOCAL端的命令說明,若不接受則顯示所有可用命令;
  • ?相當於HELP,例如:?CD:
  • RHELP同HELP,只是它用來顯示REMOTE端的命令說明;
  • REMOTEHELP相當於RHELP。

 

2) ASC(ASCll)、Bm(BmARY)、IMAGE、TYPE

  • ASCII切換傳輸模式為文字模式(只能用來傳送DOC文件,因為是7-BIT);
  • BINARY切換傳輸模式為二進制模式(除文字文件外皆用此模式);
  • IMAGE相當於BINARY:
  • TYPE讓你更改或顯示目前傳輸模式。

 

3)BYE、QUIT   

  • BYE退出FTP:
  • QUIT相當於BYE。

 

4)CD、CDUP、LCD、P~WD、 !

  • CD改變當前工作目錄,例如:CD\PUB;
  • CDUP回到上一層目錄,相當於你打CD..;
  • LCD讓你更改或顯示LOCAL端的工作目錄,例如:LCD\TMP;
  • PWD顯示目前的工作目錄(REMOTE端);
  • !讓你執行外殼命令,例如:!LS。

 

5)DELETE、MDELETE、RENAME

  • DELETE刪除REMOTE端的文件;
  • MDELETE批量刪除文件,需配合?或,*;
  • RENAME更改REMOTE端的文件名。

 

6)GET、MGET、PUT、MPUT、RECV、SEND

  • GET下傳文件;
  • MGET批量下傳文件,需配合萬用字元,例如:MGET*.GZ;
  • PUT上傳文件;
  • MPUT批量上傳文件,需配合萬用字元;
  • RECV相當於GET(RECV為RECEWE的簡寫);
  • SEND相當於PUT。

 

7)HASH、PROMPT、VERBOSE、STATUS、BELL

  • HASH切換#字號的出現,每一個#字號表示傳送了1024/8192BYTES;
  • PROMPT切換iNTERACTIVEON/OFF;
  • VERBOSE切換所有文件傳輸過程的顯示;
  • STATUS顯示目前的一些參數;
  • BELL當指令做完時會發出叫聲。

 

8)LS、DIR、MLS、MDIR、MKDIR、RMDIR

  • LS有點象UNIX下的LS(LIST)命令:
  • DIR相當於LS-L(LIST-LONG);
  • MLS只是將遠端某目 錄下的文件存於LOCAL端的某文件里;
  • MDIR相當於MLS;
  • MKDIR象DOS下的MD(創建子目錄)一樣:
  • RMDIR象DOS下的RD(刪除子目錄)一樣。

 

9)OPEN、CLOSE、DISCONNECT、USER ·

  • OPEN連接某個遠端FTP服務器;
  • CLOSE關閉目前的連接; DISCONNECT相當於CLOSE;
  • USER再輸入一次用戶名和口令(有點像UNIX下的SU)。
  • RETR
  • STOR

 

4. 使用腳本上傳文件

腳本主要使用數據流重定向進行操作,示例如下:

#!/bin/sh
PUTFILE=test_up_sh
ftp -v -n ftp服務器ip<<EOF
user ftp賬號 密碼
binary
prompt
put $PUTFILE
bye
#here document
EOF
echo "commit to ftp successfully"

注意,ftp不支持自動創建目錄和多目錄上傳,也就是如果你上傳的文件路徑是絕對路徑,是會傳輸失敗的。

如果使用“put /home/user1/test.txt”這樣的命令,而沒有單獨指定一個REMOTE-FILE,那么REMOTE-FILE就原樣拷貝LOCAL-FILE參數。

而傳文件使用的FTP命令叫STOR。當這個命令有remote這個參數(如STOR)的時候,就原封不動地把remote這個變量放在命令后。所以,實際向服務器發送的命令是“STOR /home/user1/test.txt”。

所以,服務器會試圖按照/home/user1/test.txt這個絕對路徑來儲存文件。當然,服務器不會允許你創建這么一個文件,起碼它不在ftp服務器可以寫的目錄中。

 

四、關於主動模式和被動模式

1. 端口

利用ftp傳輸過程中,主要使用到兩個端口,一個是數據端口,一個是控制端口,控制端口一般為21,而數據端口不一定是20,這和FTP的應用模式有關,如果是主動模式,應該為20,如果為被動模式,由服務器端和客戶端協商而定。

 

2. 主動模式與被動模式

FTP具有兩種模式,分別是port模式(也叫主動模式)和pasv模式(也叫被動模式),怎么來理解這兩種模式呢?

在主動模式下:客戶端給服務器端的21端口發命令說,我要下載什么什么,並且還會說我已經打開了自己的某個端口,你就從這里把東西給我吧,服務器知道后就會通過另外一個數據端口把東西傳給客戶端,這就是主動模式,可以理解為服務端主動給客戶端傳輸文件。

在被動模式下:客戶端給服務器端的21端口發命令說,我要下載什么什么,服務器端知道后,就打開一個端口,然后告訴客戶端,我已經打開了某某端口,你自己進去拿吧,於是客戶端就從那個端口進去拿文件了,這就是被動模式,可以理解為服務端被客戶端拿走了東西。

 

3. 從主動模式到被動模式

在很久以前沒有共享上網這種技術,也就是一個電腦一個ip。但是后來出現了,所以也就有了下面的問題。

大家都知道,共享上網就是很多台電腦共享一個公網IP去使用internet,再打個比喻吧,某個局域網共享210.33.25.1這個公網IP上網,當一個內網用戶192.168.0.100去訪問外網的FTP服務器時,如果采用主動模式的話,192.168.0.1告訴了FTP服務器我需要某個文件和我打開了x端口之后,由於共享上網的原因,192.168.0.1在出網關的時候自己的IP地址已經被翻譯成了210.33.25.1這個公網IP,所以服務器端收到的消息也就是210.33.25.1需要某個文件並打開了x端口,FTP服務器就會往210.33.25.1的x端口傳數據,這樣當然會連接不成功了,因為打開x端口的並不是210.33.25.1這個地址,在這種情況下被動模式就有用了。

在主動模式中,FTP的兩個端口是相對固定的,如果命令端口是x的話,那數據端口就是x-1,也就是說默認情況下,命令端口是21,數據端口就是20;你把命令端口改成了600,那么數據端口就是599。這樣使用防火牆就很方便了,只要開通這兩個端口就可以了,但是如果客戶端是共享上網的話那豈不是不能正常使用FTP了,這樣還是不行,一定需要被動模式。

在被動模式中,默認情況下命令端口是21,但是數據端口是隨機的。不過,因為被動模式中數據端口的范圍是可以自定義的,因此也可以通過端口范圍去配置防火牆。

 

五、參考

1. CentOS6.5 FTP配置

2. 百度百科:ftp

3. FTP命令大全

4. Shell腳本實現FTP上傳下載文件

5. FTP服務器需要開幾個端口

(完)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM