創建FTP服務器的具體方法
FTP服務器的應用是非常廣泛的。所以我們現在來介紹一下如何創建FTP服務器。那么在實際應用中,FTP服務器的使用要具有提供上傳和下載功能。此外,出于安全考慮,還需要有用戶身份驗證、用戶權限設置及空間管理等。下面就來搭建這樣一個FTP服務器。
創建FTP服務器1.創建歡迎語。如果希望使用者在進入目錄時,能夠看到歡迎語或對本目錄的介紹,可以通過以下方法來實現。
確定/etc/vsftpd/vsftpd.conf文件中dirmessage_enable=YES,默認情況下,Red Hat 9.0有此設置。接著,在目錄中新增名為.message的文件。本例在/home/ylg目錄下創建一個.message文件,其內容為“歡迎來到我的FTP站點”。
創建FTP服務器2.更換FTP服務器的默認端口。將預設的21端口改為2121,這樣做是基于安全的考慮。更改方法為,使用vi打開/etc/vsftpd/vsftpd.conf:
- #vi /etc/vsftpd/vsftpd.conf
在文件***增加如下一行內容:
- listen_port=2121
創建FTP服務器3.取消anonymous登錄的功能。在vsftpd.conf文件中找到如下一行,并將其值改為“NO”:
- anonymous_enable=YES
創建FTP服務器4.設定使用者不得更改目錄。這樣做的目的也是基于安全性的考慮。一般情況下,使用者的預設目錄為/home/username。若是不希望使用者在登錄后能夠切換至上一層目錄/home,則可通過以下設置來實現。在/etc/vsftpd/vsftpd.conf文件中找到以下三行內容:
- #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
新增一個文件/etc/vsftpd/chroot_list,文件內容為兩個用戶名:
- ylg
- user1
創建FTP服務器5.針對不同的使用者限制不同的速度。假設用戶ylg所能使用的***速度為500Kb/s,用戶user1所能使用的***速度為250Kb/s,可以通過以下方法設置。在/etc/vsftpd/vsftpd.conf文件尾部新增以下一行:
- user_config_dir=/etc/vsftpd/userconf
增加一個名為/etc/vsftpd/userconf的目錄:
- #mkdir /etc/vsftpd/userconf
#p#在/etc/vsftpd/userconf下新增一個名為ylg的文件,其內容如下所示:
- local_max_rate=500000
在/etc/vsftpd/userconf目錄下新增一個名為user1的文件,其內容如下所示:
- local_max_rate=250000
VSFTP對于速度的限制范圍大概在80%到120%之間,也就是限制***速度為100Kb/s,但實際的速度可能在80Kb/s到120Kb/s之間。如果頻寬不足,數值會低于此限制。
創建FTP服務器6.對于每一個聯機用戶,都以獨立的進程來運行。一般情況下,在啟動VSFTP時,只會看到一個名為vsftpd的進程在運行。但若是讀者希望每一個聯機用戶都能以獨立的進程來呈現,則可通過在/etc/vsftpd/vsftpd.conf文件中增加以下一行來實現:
- setproctitle_enable=YES
創建FTP服務器7.保存/etc/vsftpd/vsftpd.conf文件,然后重新啟動vsftpd:
- #service vsftpd restart
創建FTP服務器8.測試剛創建的FTP服務器。
以缺省方式登錄會被拒絕,因為此時的默認端口號已經更改為2121,所以登錄時需指定端口。
- # ftp 127.0.0.1
- ftp: connect: Connection refused
此時也不能再使用匿名方式登錄:
- # 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-歡迎來到我的FTP站點
- 230 Login successful. Have fun.
- Remote system type is UNIX.
- Using binary mode to transfer files.
因為在設置中設定了不能切換目錄,所以下列命令無法正確執行:
- ftp> cd /home
- 550 Failed to change directory.
再來測試一下上傳和下載。首先下載服務器目錄中的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#可以通過!ls命令看到本機目錄中已成功下載該文件。然后上傳本機目錄中的ylg.txt文件到服務器:
- 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命令查看服務器目錄,會發現該文件已成功上傳。
為了測試不同連機用戶使用的是不同進程,可以使用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
到現在為止,一個基本可以滿足普通使用需求的FTP服務器就已經架設完成。
在實際應用中,有時為了增加安全性,會將FTP服務器置于防火墻之后。如本文開頭所述,被動傳輸模式適合于帶有防火墻的情況。下面就來創建一個防火墻后的FTP服務器,該服務器FTP端口為2121,數據傳輸端口為2020。
執行以下兩行指令,只允許2121和2020端口打開,其余端口關閉:
- #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
重新啟動vsftpd:
- #service vsftpd restart
有時希望直接在/etc/hosts.allow中定義允許或拒絕某一源地址,可以通過以下配置來實現。先確保/etc/vsftpd/vsftpd.conf中tcp_wrappers=YES,Red Hat 9.0中,這是默認值。重新啟動vsftpd
- #service vsftpd restart
假設提供168.192.2.1和210.31.8.1到210.31.8.254的連接,則可對/etc/hosts.allow進行如下設定:
- vsftpd : 168.192.2.1 210.31.8. : allow
- ALL : ALL : DENY