?
?
轉自:http://book.51cto.com/art/201005/199709.htm
?
11.2? Vsftpd簡介
Vsftpd是一種在GPL許可下開放源代碼的FTP服務器,用于多種UNIX系統和Linux系統。Vsftpd也稱為Very Secure FTP Daemon,它是一種安全、快速、穩定的FTP服務器,能夠高效地處理大量的并發連接。
11.2.1? Vsftpd軟件包的獲取與安裝
Vsftpd的主要特點包括:
提供安全的體系結構,根據任務的最低特權需求單獨執行每個任務。
支持虛擬IP配置,可以在提供一個IP地址的情況下,在域中用該地址建立多個FTP服務器。
允許配置并使用虛擬用戶,從而與系統用戶賬戶分離。
支持TCP封裝。
允許配置匿名服務器,用戶可以在不需要身份驗證的情況下上傳和下載文件。
性能穩定,可以處理大量的并發連接。
可以配置為獨立的服務器。
Vsftpd服務器支持帶寬控制。
Linux幾乎所有的發行版本都內置了Vsftpd服務,Red Hat Enterprise Linux 5 也自帶了Vsftpd服務。對于已經安裝了Vsftpd的Red Hat Enterprise Linux 5,可以選擇【應用程序】|【添加/刪除軟件】中的【軟件包管理者】選項,查看Vsftpd服務,如圖11.1所示。
也可以在終端執行以下命令,查看系統是否已經安裝了Vsftpd軟件包:
- #?rpm?-qa|grep?Vsftpd ?
- vsftpd-2.0.5-10.el5?
如果出現以上結果,表明已安裝vsftpd-2.0.5-10.el5.i386.rpm。
Vsftpd軟件包的安裝方法有兩種。
1.手動安裝Vsftpd軟件包
用戶可以在 http://vsftpd.beasts.org/ 上下載需要的Vsftpd RPM安裝包,也可以在Red Hat Enterprise Linux 5的安裝盤中找到需要安裝的RMP,用rpm -ivh命令進行安裝。安裝RMP時需要擁有系統的root權限。以安裝vsftpd-2.0.5-10.el5.i386.rpm為例,應使用以下命令:
- #?rpm?-ivh?vsftpd-2.0.5-10.el5.i386.rpm?
?
![]() |
(點擊查看大圖)圖11.1? 查看Vsftpd軟件包 |
2.根據源代碼編譯安裝
在需要更高版本或需要對安裝過程進行定制的情況下,可以用vsftpd的源代碼進行編譯安裝。源代碼可以從 http://vsftp.beasts.org 網站下載,最新的版本是vsftpd-2.0.5.tar.gz。默認的配置中,Vsftpd需要使用nobody用戶和/usr/share/empty目錄。在安裝Red Hat Enterprise Linux 5時,系統會自動創建nobody用戶,和/usr/share/empty目錄。可以通過以下命令測試該用戶和目錄是否已經存在,如果不存在則創建該用戶和目錄。
- #?useradd?nobody ?
- #?mkdir?/usr/share/empty?
如果nobody用戶已經存在,系統會提示"useradd: 用戶nobody已經存在"。如果目錄/usr/share/empty目錄已經存在,系統會提示"目錄已存在"。
如果需要Vsftpd支持匿名服務,應使用以下命令創建ftp用戶,并使其具有home目錄的權限:
- #?mkdir?/var/ftp ?
- #?useradd?-d?/var/ftp?ftp ?
- #?chown?root.root?/var/ftp ?
- #?chmod?og-w?/var/ftp?
用戶和目錄權限設置完成后,可以進行編譯安裝,使用命令如下:
- #?tar?-zxvf?vsftpd-2.0.5.tar.gz ?
- #?cd?vsftpd-2.0.5 ?
- #?make ?
- #?make?install?
安裝完成后,需要將配置文件復制到/etc目錄下:
- #?cp?vsftpd.conf?/etc/?
然后使用以下命令,允許本地用戶登錄服務器:
- #?cp?RedHat/vsftpd.pam?/etc/pam.d/ftp?
最后,編輯配置文件/etc/vsftpd.conf,在最后一行加入listen=YES,并保存。
在命令行輸入以下命令即可啟動Vsftpd:
- #?vsftpd?& ?
- [1]?3457?
&表示Vsftpd在后臺運行。可以用以下命令對編譯安裝的Vsftpd進行檢測:
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?anonymous ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,71,146) ?
- 150?Here?comes?the?directory?listing. ?
- drwxr-xr-x????2?0????????0????????????4096?Jan?17??2007?pub ?
- 226?Directory?send?OK. ?
- ftp>?bye ?
- 221?Goodbye.?
下面對以上檢測結果做幾點說明。
# ftp localhost
表示連接本地服務器。
220 (vsFTPd 2.0.5)
表示Vsftpd2.0.5是已安裝的Vsftpd的版本。
Name (localhost:root): anonymous
表示輸入用戶名,此處為匿名(anonymous)用戶。
Password:
表示Password之后應輸入密碼,但在Linux終端下不顯示所輸入的密碼內容。
230 Login successful
提示登錄成功。
ftp> ls
在"ftp>"提示符下,表示正在使用Vsftpd服務,ls命令可查看服務器上的文件。
ftp> bye?221 Goodbye.
表示退出Vsftpd服務器。
安裝完成后可以看到,Vsftpd的文件布局結構很簡潔,如表11.1所示。
表11.1? Vsftpd文件布局
/etc/vsftpd/vsftpd.conf |
主配置文件 |
/usr/sbin/vsftpd |
Vsftpd的主程序 |
/etc/rc.d/init.d/vsftpd |
啟動腳本 |
/etc/pam.d/vsftpd |
PAM認證文件 |
/etc/vsftpd.ftpusers |
禁止使用Vsftpd的用戶列表文件 |
/etc/vsftpd.user_list |
禁止或允許使用Vsftpd的用戶列表文件 |
/var/ftp |
匿名用戶主目錄 |
/var/ftp/pub |
匿名用戶的下載目錄 |
此外,還有一些說明文檔和手冊文件。Vsftpd的日志文件位于/etc/logrotate.d/vsftpd.log目錄下。
?
?
?
11.2.2? 啟動和關閉Vsftpd
1.用命令行方式啟動和停止
在Red Hat Enterprise Linux 5中,通過命令行方式啟動和停止Vsftpd服務可使用如下命令。
啟動Vsftpd服務
其命令為:
- #?service?vsftpd?start ?
- 為?vsftpd?啟動?vsftpd:????????????????????????????????????[確定]?
停止Vsftpd服務
停止Vsftpd服務的命令為:
- #?service?vsftpd?stop ?
- 關閉?vsftpd:??????????????????????????????????????????????[確定]?
重新啟動Vsftpd服務
重新啟動Vsftpd服務的命令為:
- #?service?vsftpd?restart ?
- 關閉?vsftpd:??????????????????????????????????????????????[確定]?
- 為 vsftpd 啟動 vsftpd:?????????????????????????????????? [確定]
檢查Vsftpd服務狀態
可以采用以下命令檢查Vsftpd服務的運行狀態:
- service?vsftpd?status ?
- vsftpd?(pid?3571)?正在運行...?
也可以使用以下命令,實現相同的結果:
- #?/etc/init.d/vsftpd?start ?
- #?/etc/init.d/vsftpd?stop ?
- #?/etc/init.d/vsftpd?restart?
2.自動啟動Vsftpd服務
對于系統自帶的Vsftpd服務,如果希望Vsftpd服務在系統啟動時自動加載,可以執行"ntsysv"命令,啟動服務配置程序。找到其中的"vsftpd"服務,在其前面選擇"*"(星號),并選擇【確定】按鈕即可,如圖11.2所示。
![]() |
圖11.2? 設置自動運行Vsftpd服務 |
此外,還有一種更簡單的圖形化方法。依次選擇【系統】|【管理】|【服務器設置】|【服務】命令,系統將打開【服務配置】窗口,如圖11.3所示。在左側窗口中找到【vsftpd】選項,就可以對Vsftpd執行啟動、停止和重啟等操作。如果選中【vsftpd】選項前面的復選框,則可以在每次啟動系統時自動運行Vsftpd服務。
![]() |
圖11.3 【服務配置】窗口 |
?
?
?
11.3? Vsftpd服務器配置
Vsftpd服務器的配置主要通過修改其主配置文件Vsftpd.conf完成。需要注意的是,更改vsftpd.conf文件后,必須重啟Vsftpd服務才能使設置生效。
11.3.1? 配置vsftpd.conf文件
Vsftpd的主配置文件vsftpd.conf位于/etc/目錄下。vsftpd.conf文件決定了Vsftpd FTP服務器的主要操作。vsftpd.conf 文件由若干配置選項組成,下面介紹其中重要的配置選項。
anonymous_enable=NO/YES
是否允許anonymous登錄FTP服務器,默認設置為YES(允許)。
local_enable=NO/YES
是否允許本地用戶登錄FTP 服務器,默認設置為YES(允許)。
write_enable=NO/YES
是否允許用戶對FTP服務器文件具有寫權限,默認設置為YES(允許)。
local_umask=022 (或者其他值)
設置本地用戶的文件生成掩碼,默認值為077,也可以根據個人喜好將其設置為其他值。
anon_upload_enable= NO/YES
是否允許匿名用戶上傳文件,默認設置為YES(允許)。
anon_mkdir_write_enable= NO/YES
是否允許匿名用戶創建新文件夾。默認設置為YES(允許)。
dirmessage_enable=YES
是否激活目錄歡迎信息功能,當用戶首次訪問服務器上某個目錄時,FTP服務器將顯示歡迎信息。默認情況下,歡迎信息是通過目錄下的.message文件獲得的。
xferlog_enable=YES
是否啟用上傳和下載日志的功能。
ftpd_banner=Welcome to blah FTP service
在FTP服務器中設置歡迎登錄信息。當用戶登錄到FTP服務器后,會看到歡迎信息"Welcome to blah FTP service"。
chroot_list_enable=NO/YES
chroot_list_file=/etc/vsftpd.chroot_list
"chroot"是FTP服務器配置中的重要選項。若"chroot_list_enable"設置為"YES",Vsftpd將在"chroot_list_file"選項值的位置尋找chroot_list文件,"/etc/vsftpd.chroot_list"文件中包含的用戶,在登錄后將不能切換到自己目錄以外的其他目錄,由FTP服務器自動地"chrooted"到用戶自己的home目錄下。這將使得chroot_list文件中的用戶不能隨意轉到其他用戶的FTP home目錄下,從而有利于FTP服務器的安全管理和隱私保護。
userlist_enable=NO/YES
userlist_deny=NO/YES
"userlist_enable"選項默認值為"NO",此時ftpusers文件中的用戶禁止登錄FTP服務器。如果userlist_enable設置為"YES",則user_list文件中的用戶允許登錄FTP服務器。而如果同時設置了userlist_deny值為"YES",則user_list文件中的用戶將不允許登錄FTP服務器。
listen=YES
如果設置為"YES",則Vsftpd將以獨立模式運行,由Vsftpd自己監聽和處理連接請求。
?
?
?
?
11.3.2? vsftpd/ftpusers與vsfptd/user-list文件配置
在/etc/目錄下的vsftpd/ftpusers和vsftpd/user-list兩個文件與主配置文件中的"userlist_enable"和"userlist_deny"選項有著密切聯系。兩個文件中,每個用戶名需占用一行。
以下是默認情況下ftpusers文件的內容:
- #?Users?that?are?not?allowed?to?login?via?ftp ?
- root ?
- bin ?
- daemon ?
- adm ?
- lp ?
- sync ?
- shutdown ?
- halt ?
- mail ?
- news ?
- uucp ?
- operator ?
- games ?
- nobody?
以下是默認情況下user_list文件的內容:
- #?vsftpd?userlist ?
- #?If?userlist_deny=NO,?only?allow?users?in?this?file ?
-
#?If?userlist_deny=YES?(default),?never?allow
users?in?this?file,?and ? - #?do?not?even?prompt?for?a?password. ?
-
#?Note?that?the?default?vsftpd?pam?config?also?
checks?/etc/vsftpd/ftpusers ? - #?for?users?that?are?denied. ?
- root ?
- bin ?
- daemon ?
- adm ?
- lp ?
- sync ?
- shutdown ?
- halt ?
- mail ?
- news ?
- uucp ?
- operator ?
- games ?
- nobody?
比較兩個文件的內容,會發現它們實際上是一樣的。在使用兩個文件時的區別在于,當userlist_enable為YES時,如果一個用戶名在"vsftpd/user_list"文件中,而同時"userlist_deny"選項為"YES",則該用戶在試圖登錄FTP服務器時,將不能夠登錄,甚至連輸入密碼的提示信息都沒有,直接被FTP服務器拒絕。
而如果一個用戶名在"vsftpd/ftpusers"文件中,同時"userlist_deny"選項為"YES",則該用戶在試圖登錄FTP服務器時,將能看到輸入密碼的提示,但即使正確輸入密碼仍然不能登錄FTP服務器。
userlist_deny選項和user_list文件一起能夠有效地阻止"root"、"apache"和"www"等系統用戶登錄FTP服務器,從而保證了FTP服務器的分級安全性。
?
11.3.3? 匿名FTP設置(1)
在登錄FTP服務器的用戶不確定的情況下,應將FTP服務器設置為允許匿名賬號登錄的FTP服務器。啟用匿名賬號,并對匿名賬號服務進行管理是匿名FTP設置的主要內容。
1.啟用匿名賬號
啟用匿名賬號及之后其他配置,均需要對vsftpd.conf文件進行修改,因此,在開始配置之前應當備份/etc/vsftpd/vsftpd.conf文件,以便于在修改過程中出現無法恢復的錯誤時,能夠恢復到初始設置。
對/etc/vsftpd/vsftpd.conf文件做如下修改:
- anonymous_enable=YES?
- local_enable=YES?
- write_enable=YES?
- listen=YES?
配置好后,需要重新啟動Vsftpd。完成上述配置后,Vsftpd將允許匿名賬號登錄FTP服務器,允許本地賬號登錄,同時允許匿名用戶具有對FTP服務器文件的寫權限,并且只能下載文件而不能上傳。匿名用戶的口令為一個E-mail地址。測試的結果如下:
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?anonymous ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,204,140) ?
- 150?Here?comes?the?directory?listing. ?
- drwxr-xr-x????2?0????????0????????????4096?Jan?17??2007?pub ?
- 226?Directory?send?OK. ?
- ?
- ftp>?cd?pub ?
- 250?Directory?successfully?changed. ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,25,100) ?
- 150?Here?comes?the?directory?listing. ?
- -rw-rw-rw-????1?0????????0??????????????34?Sep?11?07:48?hello.txt ?
- 226?Directory?send?OK. ?
- ftp>?get?hello.txt ?
- local:?hello.txt?remote:?hello.txt ?
- 227?Entering?Passive?Mode?(127,0,0,1,181,217) ?
- 150?Opening?BINARY?mode?data?connection?for?hello.txt?(34?bytes). ?
- 226?File?send?OK. ?
- 34?bytes?received?in?0.0017?seconds?(19?Kbytes/s) ?
- ?
- ftp>?!ls ?
- bridge.txt??hello.txt??webalizer.conf ?
- ?
- ftp>?put?webalizer.conf ?
- local:?webalizer.conf?remote:?webalizer.conf ?
- 227?Entering?Passive?Mode?(127,0,0,1,147,155) ?
- 550?Permission?denied. ?
- ftp>?mkdir?test ?
- 550?Permission?denied.?
下面對以上測試結果做幾點說明。
Name (localhost:root): anonymous
表示用匿名賬號登錄。
ftp> ls
列出匿名賬號在FTP服務器上的目錄。
ftp> cd pub
表示更改目錄,進入pub文件夾。
ftp> get hello.txt
用匿名賬號下載pub文件夾中的hello.txt文件。
ftp> !ls
bridge.txt? hello.txt? webalizer.conf
顯示剛才下載的文件是否已下載到本地。
ftp> put webalizer.conf
匿名賬號上傳webalizer.conf文件失敗,不允許匿名賬號上傳文件。
ftp> mkdir test
匿名賬號創建文件夾失敗,不允許匿名賬號建立文件夾。
2.允許匿名賬號上傳文件
若要允許匿名賬號上傳文件,需要對/etc/vsftpd/vsftpd.conf文件做如下修改:
- anon_upload_enable=YES?
- anon_mkdir_write_enable=YES?
即把文件中anon_upload_enable=YES和anon_mkdir_write_enable=YES前的"#"去掉,無須修改其他配置。所謂能上傳文件,也就是具有在FTP服務器的本地目錄中新建文件和文件夾的功能。為了測試上傳文件功能,可以先在/var/ftp目錄中建立一個新目錄"test",并設置該文件夾具有寫權限。
創建新目錄"test",如圖11.4所示。
修改test目錄的權限。
在"test"上單擊鼠標右鍵,并在彈出的快捷菜單中選擇【屬性】命令,打開如圖 11.5所示的【test屬性】對話框,選擇【權限】選項卡,設置相應權限。將【所有者】設置為"ftp-FTP User",【群組】設置為"ftp",并設置相應的【文件夾訪問】、【文件訪問】和【執行】權限。
![]() |
圖11.4? 新建"test"目錄 |
![]() |
圖11.5 【test屬性】對話框 |
重啟Vsftpd服務
測試的結果如下:
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?anonymous ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,68,56) ?
- 150?Here?comes?the?directory?listing. ?
- drwxr-xr-x????2?0????????0????????????4096?Sep?11?07:48?pub ?
- drwxr-xr-x????2?14???????50???????????4096?Sep?11?08:09?test ?
- 226?Directory?send?OK. ?
- ?
- ftp>?cd?test ?
- 250?Directory?successfully?changed. ?
- ftp>?mkdir?incoming ?
- 257?"/test/incoming"?created ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,107,221) ?
- 150?Here?comes?the?directory?listing. ?
- drwx------????2?14???????50???????????4096?Sep?11?08:19?incoming ?
- 226?Directory?send?OK. ?
- ?
- ftp>?!ls ?
- 1.txt??bridge.txt??hello.txt??webalizer.conf ?
- ?
- ftp>?put?1.txt ?
- local:?1.txt?remote:?1.txt ?
- 227?Entering?Passive?Mode?(127,0,0,1,45,47) ?
- 150?Ok?to?send?data. ?
- 226?File?receive?OK. ?
- 361?bytes?sent?in?0.0018?seconds?(2e+02?Kbytes/s) ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,231,175) ?
- 150?Here?comes?the?directory?listing. ?
- drwx------????2?14???????50????????????4096?Sep?11?08:19?incoming ?
- -rw-------????1?14???????50????????????361?Sep?11?08:24?1.txt ?
- 226?Directory?send?OK. ?
- ftp>?
?
?
11.3.3? 匿名FTP設置(2)
下面對以上測試結果做幾點說明。
drwxr-xr-x??? 2 14?????? 50?????????? 4096 Sep 11 08:09 test
ls命令后看到前面在pub目錄下創建的test目錄。
ftp> cd test
更改當前目錄,進入test目錄下。
ftp> mkdir incoming
257 "/test/incoming" created
在test目錄下創建incoming目錄成功。
ftp> put 1.txt
將1.txt 文件上傳 到test目錄中。
-rw-------??? 1 14?????? 50??????????? 361 Sep 11 08:24 1.txt
ls命令后看到1.txt 文件上傳 成功。
3.僅允許匿名用戶訪問
所謂僅允許匿名用戶訪問,也就是指需要限制本地賬號訪問,因此需要對/etc/vsftpd/vsftpd.conf文件做如下修改:
- #?local_enable=YES?
- #?write_enable=YES?
即在文件中local_enable=YES和write_enable=YES的前面加上"#",無須修改其他配置。對此的測試結果如下:
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?anonymous ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?cd?test ?
- 250?Directory?successfully?changed. ?
- ftp>?bye ?
- 221?Goodbye. ?
- ?
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?Kelly ?
- 530?This?FTP?server?is?anonymous?only. ?
- Login?failed. ?
- ftp>?user?teacher ?
- 530?This?FTP?server?is?anonymous?only. ?
- Login?failed. ?
- ftp>?user?root ?
- 530?This?FTP?server?is?anonymous?only. ?
- Login?failed.?
從測試結果中可以看到,除了anonymous賬號可以正常登錄外,其他本地賬號登錄均失敗,服務器提示"530 This FTP server is anonymous only",即服務器僅允許匿名賬號登錄。
4.設置歡迎信息
常用的歡迎信息包括兩種:一種是在登錄FTP服務器時顯示的歡迎信息,另一種是在更改目錄時顯示的歡迎信息。歡迎信息的使用,能夠讓用戶在訪問FTP服務器時感覺到更友好、更親切。
設置登錄FTP服務器時顯示的歡迎信息
首先對/etc/vsftpd/vsftpd.conf文件做如下修改:
- ftpd_banner=Welcome?to?blah?FTP?service?
重啟Vsftpd服務后,測試結果如下:
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?Welcome?to?blah?FTP?service. ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?anonymous ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files.?
從測試結果中可以看到,在登錄FTP服務器時,多了一行顯示信息"220 Welcome to blah FTP service"。"Welcome to blah FTP service" 即在前面為服務器設置的歡迎信息,用戶可以根據需要對此歡迎信息進行修改。
設置更改目錄時顯示的歡迎信息
在需要設置更改目錄歡迎信息的目錄下,創建.message文件。例如,在"ftp/test/"目錄下新建.message文件,寫入一行文字"You are welcome!",保存后關閉,如圖11.6所示。
![]() |
圖11.6? 編輯.message文件內容 |
測試的結果如下:
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?Welcome?to?blah?FTP?service. ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?anonymous ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,219,233) ?
- 150?Here?comes?the?directory?listing. ?
- drwxr-xr-x????2?0????????0????????????4096?Sep?11?07:48?pub ?
- drwxr-xr-x????3?14???????50???????????4096?Sep?11?08:40?test ?
- 226?Directory?send?OK. ?
- ftp>?cd?test ?
- 250-You?are?welcome! ?
- 250?Directory?successfully?changed.?
可以看到,當進入"test"目錄后,出現"250-You are welcome!"這一行歡迎文字。用戶可以根據需要修改.message文件中的內容,以顯示不同的歡迎信息。
5.最大傳輸速率
設置最大傳輸速率需要對/etc/vsftpd/vsftpd.conf文件進行修改。
例如,設置匿名用戶的最大傳輸速率為20Kbps,應添加如下語句:
- anon_max_rate=20000?
?
11.3.3? 匿名FTP設置(2)
再如,設置本地賬號最大傳輸率為1Mbps,應添加如下語句:
- local_max_rate=1000000?
6.服務器最大并發數和用戶最大線程數
在/etc/vsftpd/vsftpd.conf文件中添加如下語句:
- max_clients=99?
- max_per_ip=5?
即可設置服務器允許的最大并發數為99,而每個用戶同一時段的最大并發線程數為5。
7.禁止某些IP段的主機匿名訪問服務器
如果希望限制某些主機對FTP服務器的匿名訪問,可以采用以下方法。
確認配置文件/etc/vsftpd/vsftpd.conf中有如下語句:
- tcp_wrappers=YES?
該語句表明服務器使用tcp_wrappers作為主機訪問控制方式。
編輯/etc/hosts.allow文件,增加兩行命令:
- #?hosts.allow???This?file?describes?the?names?of?the?hosts?which?are ?
- #???????allowed?to?use?the?local?INET?services,?as?decided ?
- #???????by?the?'/usr/sbin/tcpd'?server. ?
- # ?
- vsftpd:192.168.57.1:DENY ?
- vsftpd:192.168.57.9:DENY?
表明限制IP為192.168.57.1和192.168.57.9的主機訪問IP為192.168.57.2的FTP服務器。
在主機192.168.57.1上測試的結果如下:
- Microsoft?Windows?XP?[版本?5.1.2600] ?
- (C)?版權所有?1985-2001?Microsoft?Corp. ?
- C:\Documents?and?Settings\Administrator>cd\ ?
- C:\>ping?192.168.57.2 ?
- ?
- Pinging?192.168.57.2?with?32?bytes?of?data: ?
- ?
- Reply?from?192.168.57.2:?bytes=32?time=1ms?TTL=64?
- Reply?from?192.168.57.2:?bytes=32?time<1ms?TTL=64?
- Reply?from?192.168.57.2:?bytes=32?time=24ms?TTL=64?
- Reply?from?192.168.57.2:?bytes=32?time<1ms?TTL=64?
- ?
- Ping?statistics?for?192.168.57.2: ?
- ????Packets:?Sent?=?4,?Received?=?4,?Lost?=?0?(0%?loss), ?
- Approximate?round?trip?times?in?milli-seconds: ?
- ????Minimum?=?0ms,?Maximum?=?24ms,?Average?=?6ms?
- ?
- C:\>ftp?192.168.57.2 ?
- Connected?to?192.168.57.2. ?
- 421?Service?not?available. ?
- Connection?closed?by?remote?host.?
使用"ping"命令時可以看到,FTP服務器192.168.57.2是可以連通的。然而,通過ftp命令對其進行訪問時則由于192.168.57.1被設置為限制訪問IP,因而無法連接FTP服務器。
8.用ASCII方式傳送數據
大多數FTP服務器都選擇用ASCII方式傳輸數據,僅需要修改配置文件/etc/vsftpd/vsftpd.conf就能夠實現用ASCII方式傳送數據:
- ascii_upload_enable=YES?
- ascii_download_enable=YES?
以上語句表明允許使用ASCII方式上傳和下載文件。
9.設置數據傳輸中斷間隔時間
修改配置文件/etc/vsftpd/vsftpd.conf中的相關語句如下:
- idle_session_timeout=600?
該語句表示空閑的用戶會話中斷時間為600秒,也就是當數據傳輸結束后,用戶連接FTP服務器的時間不應超過600秒。可以根據實際情況對該值進行修改。
- data_connection_timeout=120?
該語句表示數據連接超時時間為120秒,也可以根據實際情況對其進行修改。
?
11.3.4? 真實賬號設置(1)
對真實賬號訪問FTP服務器的設置,主要也是修改配置文件/etc/vsftpd/vsftpd.conf。在前面匿名賬號設置中提到的一些配置,在真實賬號的設置中也是同樣可用的,因此不再贅述。此處主要說明的是與真實賬號有關的訪問控制設置。
在進行設置和測試前,應新建幾個用戶。選擇【系統】|【管理】中的【用戶和群組】選項,打開【用戶管理者】對話框,新建名為"user1"、"user2"和"user3"的三個用戶。然后將user1添加至/etc/vsftpd/ftpusers文件中,將user2添加至/etc/vsftpd/user_list文件中,而user3則不用添加到這兩個文件中。
1.使用用戶列表進行訪問控制
ftpusers文件中的用戶不可以訪問FTP服務器
設置語句如下:
- userlist_enable=NO?
userlist_enable選項的默認值為"NO",當/etc/vsftpd/vsftpd.conf文件中出現該語句時,ftpusers文件中的用戶將被禁止訪問FTP服務器。因此,ftpusers文件又被稱為"禁止使用Vsftpd的用戶列表文件"。
測試的結果如下:
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user1 ?
- 331?Please?specify?the?password. ?
- Password: ?
- 530?Login?incorrect. ?
- Login?failed. ?
- ftp>?bye ?
- 221?Goodbye. ?
- ?
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user2 ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?bye ?
- 221?Goodbye. ?
- ?
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user3 ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?
從結果中可以看到,user1不能訪問FTP服務器,而user2和user3均可以正常登錄FTP服務器。
僅允許user_list中的用戶訪問服務器
設置語句如下:
- userlist_enable=YES?
- userlist_deny=NO?
當userlist_enable設置為YES,而userlist_deny設置為NO時,FTP服務器僅允許user_list中的用戶訪問。測試結果如下:
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user1 ?
- 530?Permission?denied. ?
- Login?failed. ?
- ftp>?bye ?
- 221?Goodbye. ?
- ?
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user2 ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?bye ?
- 221?Goodbye. ?
- ?
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user3 ?
- 530?Permission?denied. ?
- Login?failed. ?
- ftp>?
可以看到,user2位于user_list文件中,因此,只有user2能夠正常登錄FTP服務器,user1和user3均不能訪問。
ftpusers和user_list文件中的用戶均不能訪問FTP服務器
設置語句如下:
- userlist_enable=YES?
- userlist_deny=YES?
測試結果如下:
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user1 ?
- 331?Please?specify?the?password. ?
- Password: ?
- 530?Login?incorrect. ?
- Login?failed. ?
- ftp>?bye ?
- 221?Goodbye. ?
- ?
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user2 ?
- 530?Permission?denied. ?
- Login?failed. ?
- ftp>?bye ?
- 221?Goodbye. ?
- ?
- #?ftp?localhost ?
- Connected?to?localhost.localdomain. ?
- 220?(vsFTPd?2.0.5) ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?user3 ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?
?
11.3.4? 真實賬號設置(2)
從測試結果可以看出,user1和user2均不能登錄FTP服務器,只有user3可以正常登錄。而user1和user2在登錄時的情況也是不同的。位于ftpusers文件中的user1,登錄時出現了要求輸入密碼的提示信息,輸入密碼后服務器響應為訪問被拒絕;而位于user_list中的user2,在登錄時直接被拒絕,沒有要求輸入密碼的提示信息。
從上述測試中可以看出,Vsftpd服務器可以通過在/etc/vsftpd/vsftpd.conf文件中設置userlist_ enable和userlist_deny的值實現對不同用戶的訪問控制。
2.設置用戶組
通過用戶組方式訪問FTP服務器,能夠進一步增強FTP服務器的安全性。為完成用戶組的設置并進行測試,首先在/home目錄下創建"try"目錄,作為群組用戶的主目錄。可以通過選擇【系統】|【管理】中的【用戶和群組】選項,打開【用戶管理器】對話框來設置用戶和群組。選擇【添加組群】按鈕,在【創建新組群】對話框中創建群組"try"即可,如圖11.7所示。
完成創建群組的操作后,單擊【添加用戶】按鈕,在如圖11.8所示的【創建新用戶】對話框中,分別創建try1、try2和try3三個用戶。
![]() |
圖11.7? 創建群組"try" |
![]() |
圖11.8 【創建新用戶】對話框 |
需要注意的是,在創建新用戶時,不要選中對話框中【創建主目錄】和【為該用戶創建私人組群】復選框。創建完成后,雙擊用戶名打開如圖11.9所示的【用戶屬性】對話框,分別設置三個用戶的【用戶數據】和【組群】選項卡。
在【用戶數據】選項卡中,將三個用戶的【主目錄】設置為"/home/try"。
在如圖11.10所示的【組群】選項卡中,將三個用戶加入到"try"組群中,即選中"try"組群前的復選框。
最后,還需要對/home/try目錄的屬性進行設置。在該目錄的【try屬性】對話框中,選擇【權限】選項卡,將"try"目錄的所有者設置為用戶"try1","try1"對目錄具有讀、寫和執行的權限。將"try"目錄的群組設置為群組"try",并將群組"try"對該目錄的權限設置為讀和執行,如圖11.11所示。
?
![]() |
圖11.9 【用戶屬性】對話框 |
?
?
![]() |
圖11.10 【組群】選項卡 |
?
?
![]() |
圖11.11 【權限】選項卡設置 |
?
完成設置后,群組"try"中三個用戶對/home/try文件夾擁有的權限如下。
try1:讀、寫、執行
try2、try3:讀、執行
接下來通過命令測試群組方式訪問FTP服務器的結果。具有讀、寫和執行權限的目錄所有者,能夠實現瀏覽、下載、上傳及創建目錄和文件的操作;而在群組中僅具有讀和執行權限的用戶,只能完成瀏覽和下載操作。測試結果如下:
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?Welcome?to?blah?FTP?service. ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?try1 ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,215,117) ?
- 150?Here?comes?the?directory?listing. ?
- 226?Directory?send?OK. ?
- ftp>?mkdir?new ?
- 257?"/new"?created ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,163,211) ?
- 150?Here?comes?the?directory?listing. ?
- drwxr-xr-x????2?507??????100??????????4096?Sep?11?11:12?new ?
- 226?Directory?send?OK. ?
- ftp>?!ls ?
- hello.txt ?
- ftp>?put?hello.txt ?
- local:?hello.txt??remote:?hello.txt ?
- 227?Entering?Passive?Mode?(127,0,0,1,176,127) ?
- 150?Ok?to?send?data. ?
- 226?File?receive?OK. ?
- 367?bytes?sent?in?0.00029?seconds?(1.2e+03?Kbytes/s) ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,210,143) ?
- 150?Here?comes?the?directory?listing. ?
- drwxr-xr-x????2?507??????100??????????4096?Sep?11?11:12?new ?
- -rw-r--r--????1?507??????100???????????367?Sep?11?11:13?hello.txt ?
- 226?Directory?send?OK. ?
- ftp>?bye ?
- 221?Goodbye. ?
- ?
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?Welcome?to?blah?FTP?service. ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?try2 ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,84,106) ?
- 150?Here?comes?the?directory?listing. ?
- drwxr-xr-x????2?507??????100??????????4096?Sep?11?11:12?new ?
- -rw-r--r--????1?507??????100???????????367?Sep?11?11:13?hello.txt ?
- 226?Directory?send?OK. ?
- ftp>?mkdir?new2 ?
- 550?Create?directory?operation?failed. ?
- ?
- ftp>?put?aaa.txt ?
- local:?aaa.txt?remote:?aaa.txt ?
- 227?Entering?Passive?Mode?(127,0,0,1,227,36) ?
- 553?Could?not?create?file. ?
- ftp>?quit ?
- 221?Goodbye.?
從結果中可以看到,try1用戶登錄FTP服務器時,成功地創建了一個"new"目錄,并上傳了文件"hello.txt"。而try2用戶登錄后,只能瀏覽目錄,試圖新建目錄"new2"和上傳文件aaa.txt均沒有成功。可見,通過群組方式,可以實現群組中的用戶不同的訪問級別,進一步加強對FTP服務器的分級安全管理。
3.限制用戶目錄訪問權限
通過設置/etc/vsftpd/vsftpd.conf 文件中的chroot_local_user選項,可以設置用戶登錄FTP服務器后的目錄訪問權限。默認情況下,當chroot_local_user選項為"NO"時,用戶登錄FTP服務器后,具有訪問服務器中自己目錄以外的其他文件的權限。
為了增強FTP服務器的安全性,需要限制用戶的目錄訪問權限,即當用戶登錄FTP服務器后,不能訪問自己目錄以外的其他目錄或文件。設置語句為:
- chroot_local_user=YES?
重啟Vsftpd服務后,測試結果如下:
- #?ftp?localhost ?
- Connected?to?teacher.bit.edu.cn. ?
- 220?Welcome?to?blah?FTP?service. ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(localhost:root):?student ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files. ?
- ftp>?ls ?
- 227?Entering?Passive?Mode?(127,0,0,1,219,3) ?
- 150?Here?comes?the?directory?listing. ?
-
-rw-r--r--????1?501??????501??????83741?Sep?06?
10:17?php-mysql-5.1.6-5.el5.i386.rpm ? -
-rw-r--r--????1?501??????501?????61810?Sep?06?
10:15?php-pdo-5.1.6-5.el5.i386.rpm ? -
-rw-r--r--????1?501???????501???4323279?Sep?06
09:07?phpMyAdmin-2.11.0-all-languages.?tar.gz ? - 226?Directory?send?OK. ?
- ?
- ftp>?cd?/etc ?
- 550?Failed?to?change?directory. ?
- ftp>?cd?/home ?
- 550?Failed?to?change?directory.?
從測試結果中可看出,用戶student登錄FTP服務器,用ls命令可以查看student賬號本地目錄下的內容。而用戶執行"cd /etc"、"cd/home"命令希望更改目錄時,均出現"550 Failed to change directory."的提示信息,表明用戶不能訪問自己目錄以外的其他目錄或文件,因此更改目錄失敗。
4.修改默認端口
默認情況下,FTP服務器的端口號是21。出于安全保護的目的,有時需要修改默認端口號,為此可在配置文件/etc/vsftpd/vsftpd.conf中添加如下語句:
- listen_port=4449?
該語句指定了修改后FTP服務器的端口號,該端口號應盡量大于4000。測試結果如下:
- #?ftp?192.168.57.2 ?
- ftp:?connect:?Connection?refused ?
- ftp>?bye ?
- ?
- #?ftp?192.168.57.2?4449 ?
- Connected?to?192.168.57.2. ?
- 220?Welcome?to?blah?FTP?service. ?
- 530?Please?login?with?USER?and?PASS. ?
- 530?Please?login?with?USER?and?PASS. ?
- KERBEROS_V4?rejected?as?an?authentication?type ?
- Name?(192.168.57.2:root):?teacher ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- Remote?system?type?is?UNIX. ?
- Using?binary?mode?to?transfer?files.?
從測試結果中可以看出,在更改了默認端口后,直接輸入IP地址,使用默認端口訪問FTP服務器已不能正常連接,還需要輸入正確的端口號。
?
11.4? FTP客戶端配置
FTP服務器配置好之后,就可以在客戶端訪問FTP服務器了。根據操作系統的不同,可分為在Windows環境下訪問FTP服務器和在Linux環境下訪問FTP服務器。而訪問的方法又分為三種:命令行方式、瀏覽器方式和FTP客戶端工具方式。
11.4.1? FTP常用命令
在客戶端訪問FTP服務器,一般通過如下命令進行:
# ftp 主機名/IP地址 端口號
"主機名/IP地址"指的是FTP服務器的主機名或IP地址。如果沒有給出主機名或IP地址,則客戶端將出現"ftp>"提示符,等待用戶輸入。
通過在"ftp>"提示符下輸入"?",可以查看FTP常用命令。表11.2列出了常見的FTP命令及其功能。
表11.2? 常見FTP命令及其功能
FTP命令 |
功????能 |
ls |
顯示服務器上的目錄 |
get(mget) |
從服務器下載指定文件到客戶端, mget命令允許用通配符下載多個文件 |
put(mput) |
從客戶端上傳指定文件到服務器, mput命令允許用通配符上傳多個文件 |
open |
連接FTP服務器 |
quit |
斷開連接并退出FTP服務器 |
close |
終止當前的FTP會話 |
cd directory |
改變服務器的工作目錄 |
lcd directory |
在客戶端上改變工作目錄 |
bye |
退出FTP命令狀態 |
ascii |
設置文件傳輸方式為ASCII模式 |
binary |
設置文件傳輸方式為二進制模式 |
?
11.4.2? Windows環境下訪問FTP服務器
1.使用DOS命令行方式
在Windows XP下,單擊【開始】菜單,選擇【運行】命令,然后在對話框中輸入"cmd"命令,系統將打開【MS-DOS】窗口。在命令行提示符下,可以通過FTP命令訪問FTP服務器。以下是相關命令的測試結果:
- Microsoft?Windows?XP?[版本?5.1.2600] ?
- (C)?版權所有?1985-2001?Microsoft?Corp. ?
- C:\Documents?and?Settings\Administrator>cd\ ?
- C:\>ftp?192.168.57.2 ?
- Connected?to?192.168.57.2. ?
- 220?Welcome?to?blah?FTP?service. ?
- User?(192.168.57.2:(none)):?student ?
- 331?Please?specify?the?password. ?
- Password: ?
- 230?Login?successful. ?
- ftp>?ls ?
- 200?PORT?command?successful.?Consider?using?PASV. ?
- 150?Here?comes?the?directory?listing. ?
- php-mysql-5.1.6-5.el5.i386.rpm ?
- php-pdo-5.1.6-5.el5.i386.rpm ?
- phpMyAdmin-2.11.0-all-languages.tar.gz ?
- 226?Directory?send?OK. ?
- ftp:?收到?102?字節,用時?0.00Seconds?102000.00Kbytes/sec. ?
- ftp>?get?php-mysql-5.1.6-5.el5.i386.rpm ?
- 200?PORT?command?successful.?Consider?using?PASV. ?
-
150?Opening?BINARY?mode?data?connection?for?
php-mysql-5.1.6-5.el5.i386.rpm?(8374 ? - 1?bytes). ?
- 226?File?send?OK. ?
- ftp:?收到?83741?字節,用時?0.08Seconds?1046.76Kbytes/sec. ?
- ftp>?!dir ?
- ?驅動器?C?中的卷是?Y_C ?
- ?卷的序列號是?200E-ACD1 ?
- ?
- ?C:\?的目錄 ?
- ?
- 2007-07-15??11:09?????????????1,024?.rnd ?
- 2003-05-16??08:47?????????????????0?AUTOEXEC.BAT ?
- 2003-05-16??08:47?????????????????0?CONFIG.SYS ?
- 2003-05-27??21:44????<DIR>??????????docs ?
- 2007-07-17??09:57????<DIR>??????????Documents?and?Settings ?
- 2007-07-17??15:11????????21,939,874?EMPTY$$$.TIF.BKI ?
- 2007-07-17??15:11????????????22,000?EMPTY$$$.TIF.TXT ?
- 2007-09-09??23:49????????????????12?eng000.txt ?
- 2007-07-17??14:01????<DIR>??????????EPSON ?
- 2007-07-17??17:11????<DIR>??????????Herosoft ?
- 2007-07-17??14:13????<DIR>??????????HWDOC_KING ?
- 2007-09-09??23:32?????????????????0?mustekimgsh.txt ?
- 2007-08-04??00:48?????????1,474,560?myfloppy.flp ?
- 2007-09-11??23:46????????????83,741?php-mysql-5.1.6-5.el5.i386.rpm ?
- 2007-08-02??19:01????<DIR>??????????Program?Files ?
- 2007-07-17??14:39????<DIR>??????????SHOCR2002 ?
- 2003-05-16??16:38????<DIR>??????????SUPPORT ?
- 2007-08-13??19:56?????????????????0?test1.bmp ?
- 2007-08-13??19:56?????????????????0?test2.bmp ?
- 2003-05-16??09:33????<DIR>??????????TOSHIBA ?
- 2003-05-16??16:38????<DIR>??????????VALUEADD ?
- 2007-08-27??12:56????<DIR>??????????WINDOWS ?
- ??????????????11?個文件?????23,521,211?字節 ?
- ??????????????11?個目錄??3,583,148,032?可用字節 ?
- ftp>?put?eng000 ?
- eng000:?File?not?found ?
- ftp>?put?eng000.txt ?
- 200?PORT?command?successful.?Consider?using?PASV. ?
- 150?Ok?to?send?data. ?
- 226?File?receive?OK. ?
- ftp:?發送?12?字節,用時?0.00Seconds?12000.00Kbytes/sec. ?
- ftp>?ls ?
- 200?PORT?command?successful.?Consider?using?PASV. ?
- 150?Here?comes?the?directory?listing. ?
- eng000.txt ?
- php-mysql-5.1.6-5.el5.i386.rpm ?
- php-pdo-5.1.6-5.el5.i386.rpm ?
- phpMyAdmin-2.11.0-all-languages.tar.gz ?
- 226?Directory?send?OK. ?
- ftp:?收到?114?字節,用時?0.00Seconds?114000.00Kbytes/sec. ?
- ftp>?
2.使用IE瀏覽器
打開IE瀏覽器,在地址欄中輸入FTP服務器的IP地址,例如 ftp://192.168.57.2 ,瀏覽器將彈出一個【登錄身份】對話框,如圖11.12所示。
在對話框中輸入用戶名和密碼后,將打開該用戶在FTP服務器上的目錄,如圖11.13所示。
![]() |
圖11.12 【登錄身份】對話框 |
![]() |
圖11.13? 登錄后訪問FTP服務器 |
3.使用FlashFXP工具
FlashFXP是諸多FTP客戶端工具中的一種,融合了一些其他FTP軟件的優點,擁有圖形化界面,操作簡單,使用方便。該軟件需要下載并安裝。運行該軟件,選擇【站點】菜單中的【站點管理器】命令,可打開【站點管理器】對話框,如圖11.14所示。
![]() |
(點擊查看大圖)圖11.14 【站點管理器】對話框 |
單擊【新建站點】按鈕,可以在對話框右側填寫站點信息。若需要連接IP地址為192.168.52.2的FTP服務器,則在IP地址欄輸入相應地址和端口號,以及用戶名稱、密碼即可。單擊對話框右側底部的【連接】按鈕,客戶端工具將開始連接FTP服務器,連接成功后的界面如圖11.15所示。
![]() |
(點擊查看大圖)圖11.15? FlashFXP界面 |
通過鼠標拖拽操作可以實現文件的上傳和下載。關于FlashFXP工具的其他配置,用戶可以在【工具】或【幫助】菜單中自行查找。
其他的FTP客戶端工具,如CuteFTP、LeapFTP等,也有各自的優點,用戶可以根據自己的喜好進行比較選擇。
?
11.4.3? Linux環境下訪問FTP服務器
在Linux環境下訪問FTP服務器,和在Windows環境下類似,通常也有三種方法。
1.通過終端訪問
在前面的講述中,通過終端訪問的例子已經多次在測試過程中用到,此處不再贅述。
2.通過Web瀏覽器訪問
Linux使用的是Firefox瀏覽器,其基本用法與Windows中的IE瀏覽器類似。通過Firefox訪問FTP服務器,同樣需要在地址欄輸入FTP服務器的IP地址。系統將彈出如圖11.16所示的【提示】對話框,要求用戶輸入用戶名和密碼。
用戶名和密碼輸入正確后,瀏覽器將顯示該用戶在FTP服務器下的目錄和文件,如圖11.17所示。
![]() |
圖11.16 【提示】對話框 |
![]() |
圖11.17? 通過Firefox訪問FTP服務器 |
3.通過客戶端工具訪問
Linux環境下的FTP客戶端工具中,gFTP是比較常用的一個。用戶可以在 www.gftp.org 站點下載gftp的軟件包,如gftp-2.0.18.tar.gz。安裝后在終端輸入"gFTP"命令,即可啟動gFTP 2.0.18的用戶界面,如圖11.18所示。在【主機】、【端口】、【用戶名】和【密碼】的文本框中輸入相應內容,然后單擊【主機】前的連接按鈕,gFTP將開始連接FTP服務器。
![]() |
(點擊查看大圖)圖11.18? gFTP用戶界面 |
?
?
?
?
?
?
?
?
?
11.5? 查看FTP日志
FTP服務器的日志設置,可以通過修改主配置文件/etc/vsftpd.conf實現。主配置文件中與日志設置有關的選項包括xferlog_enable 、xferlog_file 和dual_log_enable 等。
xferlog_enable
如果啟用該選項,系統將會維護記錄服務器上傳和下載情況的日志文件。默認情況下,該日志文件為 /var/log/vsftpd.log。但也可以通過配置文件中的 vsftpd_log_file 選項來指定其他文件。默認值為NO。
xferlog_std_format
如果啟用該選項,傳輸日志文件將以標準 xferlog 的格式書寫,該格式的日志文件默認為 /var/log/xferlog,也可以通過 xferlog_file 選項對其進行設定。默認值為NO。
dual_log_enable
如果啟用該選項,將生成兩個相似的日志文件,默認在 /var/log/xferlog 和 /var/log/vsftpd.log 目錄下。前者是 wu-ftpd 類型的傳輸日志,可以利用標準日志工具對其進行分析;后者是Vsftpd類型的日志。
syslog_enable
如果啟用該選項,則原本應該輸出到/var/log/vsftpd.log中的日志,將輸出到系統日志中。
常見的日志解決方案如下:
- xferlog_enable=YES?
- xferlog_std_format=YES?
- xferlog_file=/var/log/xferlog? ?
- dual_log_enable=YES?
- vsftpd_log_file=/var/log/vsftpd.log??
該方案將xferlog_enable設置為YES,表明FTP服務器記錄上傳下載的情況,而將xferlog_std_format也設置為YES,則表明將記錄的上傳下載情況寫在xferlog_file所指定的文件中,即/var/log/xferlog文件。
同時,該方案啟用dual_log_enable,表明啟用了雙份日志。在用xferlog文件記錄服務器上傳下載情況的同時,vsftpd_log_file所指定的文件,即/var/log/vsftpd.log,也將用來記錄服務器的傳輸情況。
下面分別查看xferlog文件和vsftpd.log文件的內容。
xferlog內容如下:
-
Thu?Sep??6?09:07:48?2007?7?192.168.57.1?
4323279?/home/student/phpMyAdmin?-2.11.
0-all-languages.tar.gz?b?_?i?r?student?ftp?0?*?c ? -
Thu?Sep??6?10:15:59?2007?1?192.168.57.1?
61810?/home/student/php-pdo-5.1.6-5.?el5.
i386.rpm?b?_?i?r?student?ftp?0?*?c ? -
Thu?Sep??6?10:17:13?2007?1?192.168.57.1?
83741?/home/student/php-mysql-5.1.?6-5.el5.i386.
rpm?b?_?i?r?student?ftp?0?*?c ? -
Tue?Sep?11?07:49:34?2007?1?127.0.0.1?0?/
pub/hello.txt?b?_?o?a?bit@bit.edu.cn?ftp?0?*?i ? -
Tue?Sep?11?07:51:22?2007?1?127.0.0.1?34?/
pub/hello.txt?b?_?o?a?bit@bit.edu.cn?ftp?0?*?c ? -
Tue?Sep?11?11:23:05?2007?1?192.168.57.1?
83741?/php-mysql-5.1.6-5.el5.i386.rpm?a?_?o?r?student?ftp?0?*?c ? -
Tue?Sep?11?11:31:36?2007?1?192.168.57.1?
12?/eng000.txt?a?_?i?r?student?ftp?0?*?c ? -
Tue?Sep?11?11:53:05?2007?1?192.168.57.2?
367?/user_list?b?_?i?r?student?ftp?0?*?c ? -
Tue?Sep?11?11:56:06?2007?1?192.168.57.2?
0?/?b?_o?a?mozilla@example.com?ftp?0?*?i ? -
Tue?Sep?11?11:57:36?2007?1?192.168.57.2?
0?/?b?_?o?r?student?ftp?0?*?i?
vsftpd.log文件內容如下:
- Tue?Sep?11?14:59:03?2007?[pid?3460]?CONNECT:?Client?"127.0.0.1" ?
-
Tue?Sep?11?14:59:24?2007?[pid?3459]?[ftp]?
OK?LOGIN:?Client?"127.0.0.1",?anon?password?"?"?
在xferlog文件的第一條記錄中,各數據的參數名如表11.3所示。
表11.3? xferlog文件數據的參數名
記錄數據 |
參數名稱 |
Thu Sep??6 09:07:48 2007 |
當前時間 |
7 |
傳輸時間 |
192.168.57.1 |
遠程主機名稱/IP |
4323279 |
文件大小 |
/home/student/phpMyAdmin- 2.11.0-all-languages.tar.gz |
文件名 |
b |
傳輸類型 |
_ |
特殊處理標志 |
i |
傳輸方向 |
r |
訪問模式 |
student |
用戶名 |
ftp |
服務名 |
0 |
認證方式 |
* |
認證用戶id |
c |
完成狀態 |
表11.4描述了各參數的具體含義。
表11.4? xferlog 參數說明
參?數?名 |
說????明 |
當前時間 |
當前服務器本地時間,格式為 “DDD MMM dd hh: mm: ss YYYY” |
傳輸時間 |
傳送文件所用時間,單位為秒 |
遠程主機 |
遠程主機名稱/IP |
文件大小 |
傳送文件的大小,單位為byte |
文件名 |
傳輸文件名,包括路徑 |
傳輸類型 |
傳輸方式的類型,包括兩種: a?以ASCII傳輸 b?以二進制文件傳輸 |
特殊處理標志 |
特殊處理的標志位,可能的值包括: _?不做任何特殊處理 C?文件是壓縮格式 U?文件是非壓縮格式 T?文件是tar格式 |
傳輸方向 |
文件傳輸的方向,包括兩種: o?從FTP服務器向客戶端傳輸 i?從客戶端向FTP服務器傳輸 |
訪問模式 |
用戶訪問模式,包括: a?匿名用戶 g?來賓用戶 r?真實用戶,即系統中的用戶 |
用戶名 |
用戶名稱 |
服務名 |
所使用的服務名稱,一般為FTP |
認證方式 |
認證方式,包括: 0?無 1 RFC931認證 |
認證用戶id |
認證用戶的id,如果使用*, 則表示無法獲得該id |
完成狀態 |
傳輸的狀態: c?表示傳輸已完成 i?表示傳輸未完成 |
?
?
?
?
?
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
