創(chuàng)建FTP服務(wù)器的具體方法
FTP服務(wù)器的應(yīng)用是非常廣泛的。所以我們現(xiàn)在來(lái)介紹一下如何創(chuàng)建FTP服務(wù)器。那么在實(shí)際應(yīng)用中,F(xiàn)TP服務(wù)器的使用要具有提供上傳和下載功能。此外,出于安全考慮,還需要有用戶身份驗(yàn)證、用戶權(quán)限設(shè)置及空間管理等。下面就來(lái)搭建這樣一個(gè)FTP服務(wù)器。
創(chuàng)建FTP服務(wù)器1.創(chuàng)建歡迎語(yǔ)。如果希望使用者在進(jìn)入目錄時(shí),能夠看到歡迎語(yǔ)或?qū)Ρ灸夸浀慕榻B,可以通過(guò)以下方法來(lái)實(shí)現(xiàn)。
確定/etc/vsftpd/vsftpd.conf文件中dirmessage_enable=YES,默認(rèn)情況下,Red Hat 9.0有此設(shè)置。接著,在目錄中新增名為.message的文件。本例在/home/ylg目錄下創(chuàng)建一個(gè).message文件,其內(nèi)容為“歡迎來(lái)到我的FTP站點(diǎn)”。
創(chuàng)建FTP服務(wù)器2.更換FTP服務(wù)器的默認(rèn)端口。將預(yù)設(shè)的21端口改為2121,這樣做是基于安全的考慮。更改方法為,使用vi打開/etc/vsftpd/vsftpd.conf:
- #vi /etc/vsftpd/vsftpd.conf
在文件***增加如下一行內(nèi)容:
- listen_port=2121
創(chuàng)建FTP服務(wù)器3.取消anonymous登錄的功能。在vsftpd.conf文件中找到如下一行,并將其值改為“NO”:
- anonymous_enable=YES
創(chuàng)建FTP服務(wù)器4.設(shè)定使用者不得更改目錄。這樣做的目的也是基于安全性的考慮。一般情況下,使用者的預(yù)設(shè)目錄為/home/username。若是不希望使用者在登錄后能夠切換至上一層目錄/home,則可通過(guò)以下設(shè)置來(lái)實(shí)現(xiàn)。在/etc/vsftpd/vsftpd.conf文件中找到以下三行內(nèi)容:
- #chroot_list_enable=YES
- # (default follows)
- #chroot_list_file=/etc/vsftpd.chroot_list
將其改為:
- chroot_list_enable=YES
- # (default follows)
- chroot_list_file=/etc/vsftpd/chroot_list
新增一個(gè)文件/etc/vsftpd/chroot_list,文件內(nèi)容為兩個(gè)用戶名:
- ylg
- user1
創(chuàng)建FTP服務(wù)器5.針對(duì)不同的使用者限制不同的速度。假設(shè)用戶ylg所能使用的***速度為500Kb/s,用戶user1所能使用的***速度為250Kb/s,可以通過(guò)以下方法設(shè)置。在/etc/vsftpd/vsftpd.conf文件尾部新增以下一行:
- user_config_dir=/etc/vsftpd/userconf
增加一個(gè)名為/etc/vsftpd/userconf的目錄:
- #mkdir /etc/vsftpd/userconf
#p#在/etc/vsftpd/userconf下新增一個(gè)名為ylg的文件,其內(nèi)容如下所示:
- local_max_rate=500000
在/etc/vsftpd/userconf目錄下新增一個(gè)名為user1的文件,其內(nèi)容如下所示:
- local_max_rate=250000
VSFTP對(duì)于速度的限制范圍大概在80%到120%之間,也就是限制***速度為100Kb/s,但實(shí)際的速度可能在80Kb/s到120Kb/s之間。如果頻寬不足,數(shù)值會(huì)低于此限制。
創(chuàng)建FTP服務(wù)器6.對(duì)于每一個(gè)聯(lián)機(jī)用戶,都以獨(dú)立的進(jìn)程來(lái)運(yùn)行。一般情況下,在啟動(dòng)VSFTP時(shí),只會(huì)看到一個(gè)名為vsftpd的進(jìn)程在運(yùn)行。但若是讀者希望每一個(gè)聯(lián)機(jī)用戶都能以獨(dú)立的進(jìn)程來(lái)呈現(xiàn),則可通過(guò)在/etc/vsftpd/vsftpd.conf文件中增加以下一行來(lái)實(shí)現(xiàn):
- setproctitle_enable=YES
創(chuàng)建FTP服務(wù)器7.保存/etc/vsftpd/vsftpd.conf文件,然后重新啟動(dòng)vsftpd:
- #service vsftpd restart
創(chuàng)建FTP服務(wù)器8.測(cè)試剛創(chuàng)建的FTP服務(wù)器。
以缺省方式登錄會(huì)被拒絕,因?yàn)榇藭r(shí)的默認(rèn)端口號(hào)已經(jīng)更改為2121,所以登錄時(shí)需指定端口。
- # ftp 127.0.0.1
- ftp: connect: Connection refused
此時(shí)也不能再使用匿名方式登錄:
- # ftp 127.0.0.1 2121
- Connected to 127.0.0.1 (127.0.0.1).
- 220 (vsFTPd 1.1.3)
- Name (127.0.0.1:root): anonymous
- 331 Please specify the password.
- Password:
- 530 Login incorrect.
- Login failed.
如果以用戶ylg則可以成功登錄(指定端口2121),并顯示歡迎信息:
- # ftp 127.0.0.1 2121
- Connected to 127.0.0.1 (127.0.0.1).
- 220 (vsFTPd 1.1.3)
- Name (127.0.0.1:root): ylg
- 331 Please specify the password.
- Password:
- 230-歡迎來(lái)到我的FTP站點(diǎn)
- 230 Login successful. Have fun.
- Remote system type is UNIX.
- Using binary mode to transfer files.
因?yàn)樵谠O(shè)置中設(shè)定了不能切換目錄,所以下列命令無(wú)法正確執(zhí)行:
- ftp> cd /home
- 550 Failed to change directory.
再來(lái)測(cè)試一下上傳和下載。首先下載服務(wù)器目錄中的test.txt文件:
- ftp> get test.txt
- local: test.txt remote: test.txt
- 227 Entering Passive Mode (127,0,0,1,243,215)
- 150 Opening BINARY mode data connection for test.txt (21 bytes).
- 226 File send OK.
- 21 bytes received in 0.00308 secs (6.7 Kbytes/sec)
#p#可以通過(guò)!ls命令看到本機(jī)目錄中已成功下載該文件。然后上傳本機(jī)目錄中的ylg.txt文件到服務(wù)器:
- ftp> put ylg.txt
- local: ylg.txt remote: ylg.txt
- 227 Entering Passive Mode (127,0,0,1,133,248)
- 150 Ok to send data.
- 226 File receive OK.
- 19 bytes sent in 0.0401 secs (0.46 Kbytes/sec)
用ls命令查看服務(wù)器目錄,會(huì)發(fā)現(xiàn)該文件已成功上傳。
為了測(cè)試不同連機(jī)用戶使用的是不同進(jìn)程,可以使用ps -ef指令,顯示如下所示:
- # ps -ef|grep ftp
- root12972 1356 0 13:44 pts/1 00:00:00 ftp 127.0.0.1 2121
- nobody 12973 12908 0 13:44 ? 00:00:00 [vsftpd]
- ylg 12975 12973 0 13:44 ? 00:00:00 [vsftpd]
- user1 13013 13011 0 13:46 ? 00:00:00 [vsftpd]
- root13041 13015 0 13:47 pts/4 00:00:00 grep ftp
到現(xiàn)在為止,一個(gè)基本可以滿足普通使用需求的FTP服務(wù)器就已經(jīng)架設(shè)完成。
在實(shí)際應(yīng)用中,有時(shí)為了增加安全性,會(huì)將FTP服務(wù)器置于防火墻之后。如本文開頭所述,被動(dòng)傳輸模式適合于帶有防火墻的情況。下面就來(lái)創(chuàng)建一個(gè)防火墻后的FTP服務(wù)器,該服務(wù)器FTP端口為2121,數(shù)據(jù)傳輸端口為2020。
執(zhí)行以下兩行指令,只允許2121和2020端口打開,其余端口關(guān)閉:
- #iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT
- #iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
修改/etc/vsftpd/vsftpd.conf文件,在文本***添加以下兩行:
- listen_port=2121
- ftp_data_port=2020
重新啟動(dòng)vsftpd:
- #service vsftpd restart
有時(shí)希望直接在/etc/hosts.allow中定義允許或拒絕某一源地址,可以通過(guò)以下配置來(lái)實(shí)現(xiàn)。先確保/etc/vsftpd/vsftpd.conf中tcp_wrappers=YES,Red Hat 9.0中,這是默認(rèn)值。重新啟動(dòng)vsftpd
- #service vsftpd restart
假設(shè)提供168.192.2.1和210.31.8.1到210.31.8.254的連接,則可對(duì)/etc/hosts.allow進(jìn)行如下設(shè)定:
- vsftpd : 168.192.2.1 210.31.8. : allow
- ALL : ALL : DENY