第一步:下載vsftpd的RPM包
你可以從下面兩個地方獲得最新的vsftpd的RPM包 Redhat's rpm collection 或者 rpmfind.net.為了你的方便, 你也可以使用wget從本站下載vsftpd的rpm包到你的本地電腦.
復制代碼代碼如下:
wget http://www.vsftpdrocks.org/vsftpd-1.1.3-8.i386.rpm
一但有了vsftpd的RPM包,你就可以安裝它
rpm -Uvh vsftpd-1.1.3-8.i386.rpm
就這樣. Vsftpd現在正式安裝.
第二步:啟動並在"standalone"模式下進行測試
復制代碼代碼如下:
vi /etc/vsftpd/vsftpd.conf
添加下面一行, 或者查看文件確定存在下面一行:
復制代碼代碼如下:
listen=YES
保存並退出.
現在來啟動vsftpd...
復制代碼代碼如下:
/usr/sbin/vsftpd &
現在來用ftp命令至你的服務器. 你可以看到如下面這下樣的成功登陸後的會話信息:
復制代碼代碼如下:
[root@somehost]ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 1.2.1)
Name (localhost:admin): bobsmith (很明顯,你必須使用在你的服務器上的有效用戶)
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
150 Here comes the directory listing.
-rw-r--r-- 1 1001 1001 25372 Jan 17 18:50 somefile.tar.gz
drwx------ 2 1001 1001 512 Jan 16 19:16 index.htm
226 Directory send OK.
ftp> quit
221 Goodbye.
[root@somehost]
如果你准備就緒的話,就可以看到類似於上面的返回信息 ! 如果你想讓你的FTP服務器運行在 inetd或xinetd上, 那麼你就需要繼續進行下面的測試. 我個人推薦將FTP服務器運行在 inetd或xinetd上.
第三步:為inetd/xinetd操作進行配置
要在inetd或xinetd配置vsftpd,要進行下面的操作:
首先,來編輯/etc/vsftpd.conf,並告訴它vsftpd沒有運行在"standalone"模式:
復制代碼代碼如下:
vi /etc/vsftpd/vsftpd.conf
確認下行的存在並將其設置為 "NO":
復制代碼代碼如下:
listen=NO
如果你在運行inetd,進行下面的操作:
復制代碼代碼如下:
vi /etc/inetd.conf
如果文件有包含任何“ftp"行的存在, 請注釋或刪除掉它們,並添加入下面一行:
復制代碼代碼如下:
ftp stream tcp nowait root /usr/local/sbin/vsftpd vsftpd
保存並退出.
現在重啟inetd:
復制代碼代碼如下:
/etc/rc.d/init.d/inetd restart
如果你的xinetd正在運行,進行下面的操作:
Redhat用戶:
復制代碼代碼如下:
vi /etc/xinetd.d/vsftpd
# default: off
# description: The vsftpd FTP server serves FTP connections. It uses \
# normal, unencrypted usernames and passwords for authentication.
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
nice = 10
}
保存並退出.
現在停止並重啟xinetd...
復制代碼代碼如下:
/etc/rc.d/init.d/xinetd restart
現在來測試inetd/xinetd ftp服務器:
復制代碼代碼如下:
[root@somehost]ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 1.2.1)
Name (localhost:admin): bobsmith (很明顯,你必須使用在你的服務器上的有效用戶)
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
150 Here comes the directory listing.
-rw-r--r-- 1 1001 1001 25372 Jan 17 18:50 somefile.tar.gz
drwx------ 2 1001 1001 512 Jan 16 19:16 index.htm
226 Directory send OK.
ftp> quit
221 Goodbye.
[root@somehost]
如果你准備就緒的話,就可以看到類似於上面的返回信息 ! 恭喜,你的FTP服務器已經正常運行! 在接下來的步驟, 我們將調整vsftpd的配置讓其擁有最好的性能.
第四步:vsftpd主配置文件
vsftpd主要配置應該是在:/etc/vsftpd.conf. 這個文件將決定如何對你的vsftpd FTP服務器進行操作. 你必須在vsftpd.conf中查找是否包含下面的配置選項。我雖然不能講訴所有的選面,但是列表中列出來了vsftpd配置的重要部分 :
anonymous_enable=NO/YES
這個開關用於開啟FTP的匿名訪問. 如果將該選項打開,那麼請按照第三步的方法進行匿名匿名服務的配置. 如果你不清楚什麼是匿名FTP服務,最好把該選項選項設置為“ON”
local_enable=NO/YES
啟用或禁用這個選項,可以使本地系統用戶FTP至你的服務器. 典型的FTP服務器會將其設置為"YES". 我認為只有一種可以選"NO",
write_enable=NO/YES
啟用或禁用FTP的寫入功能.你必須將其設置為"YES" .
local_umask=022 (或者根據你的需要設置)
vsftpd默認的umask為:077. 它決定目錄和文件被創建時得到的初始權限
xferlog_enable=YES
這個選項是啟用或禁用服務器的上傳&下載日志記錄.
ftpd_banner=Welcome to blah FTP service
沒有任何形式來界定該選項, 但它可以為你的FTP服務器定制一個更加友好的問候.
chroot_list_enable=NO/YES
chroot_list_file=/etc/vsftpd.chroot_list
這是一個對於開啟了"chroot"選項相當重要的功能. 當 "chroot_list_enable" 設置為"YES"時, vsftpd會尋找在 "chroot_list_file"指定的下一行位置. 被列出在"/etc/vsftpd.chroot_list" 文件中的任何用戶,會自動的"chrooted"至他們的主目錄. 這將禁止用戶進入除了他或她們用戶主目錄之外的任何位置. 非常適用於共享的FTP環境或者安全與保密性一般的層面.
userlist_enable=NO/YES
userlist_deny=NO/YES
"userlist_enable"選項是用於控制下面兩個文件中其中的一個: vsftpd.ftpusers和 vsftpd.user_list.如果這個選項設置為 "YES", 這兩個文件將列出用戶名單將允許訪問FTP服務. 不管怎樣,當額外加上"userlist_deny=YES"時,這兩個文件將列出用戶名單將不允許訪問FTP服務.這個選項是一個非常有用的徹底拒絕通過ftp獲取關鍵系統用戶的功能.比如"root"或"apche"或"www"這樣的用戶. 對於你的FTP服務器的安全是一個非常好的用途.
第五步: vsftpd.ftpusers, vsftpd.user_list 配置文件
這兩個文件直接與/etc/vsftpd.conf配置文件中的""userlist_enable" 和"userlist_deny"選項關聯.當"userlist_enable"選項設置為 "YES"時, 這兩個文件列表中的用戶將允許訪問FTP服務器. 不管怎樣, 當額外加上"userlist_deny=YES"選項時,這兩個文件列表中的用戶將不允許訪問FTP服務器. 當"userlist_deny"選項被使用時,決定一個有戶是否被FTP服務拒絕,主要取決於它存在於上述兩個文件中的其中的哪一個.
如果一個用戶同時存在於"vsftpd.user_list"與"userlist_deny",當用戶試圖連接FTP服務器時,它們在開始請求FTP連接時 得不到密碼提示並會被拒絕.
如果一個用戶同時存在於"vsftpd.user_list"與"userlist_deny", 用戶必須登陸後更改這一密碼提示.
就個人而言, 我更喜歡使用 "vsftpd.user_list"來建立用戶列表(root, apache, www, nobody等等.) 如果有誰從未見到密碼提示,那麼他應該進行FTP的初始化連接.
第六步: vsftpd.chroot_list 配置文件
"vsfrtpd.chroot_list", 當啟用"chroot_list_enable"選項時, 為FTP建立的用戶列表文件,不管是誰,都必須被 "chrooted"至主FTP目錄. 那些用戶不能改變路徑到其它用戶目錄.在保密性較強的公共FTP環境中,這是一個非常不錯的功能.
在任何時間你都可以改變你的配置文件, 並確認後重啟vsftpd!
就這麼簡單. 這裡還有其它很多選項,可以根據你的