環境:Redhat Enterprise Linux AS 4.0 update2(i386)php
不提示,均表示以root權限執行。html
[注:]//爲註釋符,如「// 創建MySQL組」,即爲一句註釋。mysql
我有一塊硬盤160 G ,內存1G ,分區以下:linux
/ 文件格式:Ext3 容量大小:8Gnginx
(交換分區,無) 文件格式:Swap 容量大小:2 G (2G=2048M,約爲內存值的2倍)c++
/home1 文件格式:Ext3 容量大小:剩餘全部空間,約150Gweb
所需軟件:sql
vsftpd-2.0.4.tar.gz數據庫
系統環境:apache
linux as4操做系統(注意!我這個是32位的操做系統!!!):不安裝自帶的apache和mysql,要安裝編輯器(不少地方要用到),Windows文件服務器和DNS服務器,開發那一組就裝個開發工具,其他全不安裝。
建議你把軟件包選擇.tar.gz的,而且統一放到/usr/local/src目錄下。
另外,我準備把全部軟件安裝到/home1/opt/下,ftp的存儲目錄在/home1/var/ftp下。
編譯參數(即./configure 。。。)能夠設置屢次,以最後一次的爲準。
.tar.gz的包,用tar -zxvf xxxx.tar.gz 方式解壓;
.tar.bz或者.tar.bz2的包,用tar –xjvf xxxx.tar.bz2方式解壓.
<!--[if !supportLists]-->1、 <!--[endif]-->安裝:
最高權限的系統用戶不能用root爲用戶名,由於vsftpd從安全角度考慮,拒絕root。
創建的系統用戶均屬已有的ftp組。其權限各異。
咱們安裝的vsftpd版本是2.0.4 ,能夠在官方網站http://vsftpd.beasts.org/下載到這個版本的源碼包vsftpd-2.0.4.tar.gz。
編譯安裝vsftpd須要root權限。
默認配置下,vsftpd須要使用nobody用戶和目錄/usr/share/empty 。默認安裝Redhat Enterprise Linux 4.0時會自動建立nobody用戶。
<!--[if !supportLists]-->1. <!--[endif]-->使用如下命令驗證nobody用戶是否已經存在:
# useradd nobody
若是用戶已經存在,系統會出現「useradd:user nobody exists」的提示,若是用戶不存在,以上命令將建立nobody用戶。
<!--[if !supportLists]-->2. <!--[endif]-->使用如下命令驗證/usr/share/empty目錄是否存在或建立它:
# mkdir /usr/share/empty
<!--[if !supportLists]-->3. <!--[endif]-->編譯安裝
# cd /usr/local/src //進入此放軟件包的目錄
# tar –zxvf vsftpd-2.0.4.tar.gz //解壓
# cd vsftpd-2.0.4 //進入解開包的目錄
(解壓後,沒有configure這個東西,貌似不能指定安裝路徑……)
# make //編譯
# make install //安裝
# cp vsftpd.conf /etc/ //複製vsftpd配置文件到/etc下
# cp RedHat/vsftpd.pam /etc/pam.d/ftp //容許本地用戶登錄服務器,這個cp是爲了ftp認證用的,即用戶登陸的時候是須要經過pm.d 這個認證的
安裝結束!看看安裝了些什麼。下面是make install命令的精簡輸出:
/usr/local/sbin/vsftpd //這是vsftpd的主程序,就是它提供了FTP服務
/usr/share/man/man8/vsftpd.8 //這是vsftpd的man手冊
/usr/share/man/man5/vsftpd.conf.5 //這是vsftpd的man手冊
/etc/xinetd.d/vsftpd //這是vsftpd的xinetd方式的啓動配置文件
# vi /etc/vsftpd.conf //咱們須要在最後加入一句listen=YES ,這樣作的緣由是讓服務器獨立的運行,讓服務器本身監聽,按Esc,:wq 保存並退出.
# vsftpd & //使vsftpd之後臺方式運行
如今,基本安裝就完成了。
測試一下:
# ftp localhost //鏈接本地服務器
提示輸入用戶名的時候,輸入:anonymous
提示輸入密碼,由於匿名用戶密碼默認爲空,咱們直接回車
發現不行,找不到/var/ftp目錄,爲何?由於匿名用戶默認登入時的啓始目錄是/var/ftp ,而咱們如今尚未創建/var/ftp這個目錄!並且我也不打算ftp的目錄默認爲/var/ftp ,我準備設置ftp的目錄位置爲/home1/var/ftp .這個問題沒關係,我也沒打算讓匿名用戶可以訪問。
若是你要容許虛擬用戶訪問的話,能夠在主配置文件vsftpd.conf中指定「anon_root=目錄」。
Ok,既然不行,那麼,接着,在ftp提示符下
ftp>bye //退出
<!--[if !supportLists]-->2、 <!--[endif]-->配置
1.創建ftp主目錄
我要把ftp主目錄設在/home1/var/ftp
# mkdir /home1/var //建立var目錄
# mkdir /home1/var/ftp //建立ftp主目錄
# chown root.root /home1/var/ftp //將目錄全部者改成root,組也改成root
# chmod og-w /home1/var/ftp //權限設定爲其餘用戶和root組的人不能寫入,只能讀和進入
2.配置自動啓動
默認狀況下,編譯安裝vsftpd會生成vsftpd的xinetd啓動方式的配置腳本/etc/xinetd.d/vsftpd(xinetd是inetd(一般稱爲Internet超級服務程序,提供被動式的伺服服務)的一個擴展)。這個腳本會使vsftpd在開機時自動啓動,關機時自動關閉。可是xinetd方式不能應付FTP負載壓力很大的狀況,因此咱們須要獨立地控制vsftpd的運行。下面,咱們要設置vsftpd爲獨立方式啓動,即單獨方式(Standalone方式)。
# vi /etc/vsftpd.conf
在文件末尾添加:listen=YES //這步咱們安裝的時候已經作過了,這句話的意思是讓vsftpd以單獨方式獨立地運行並監聽(在規定的端口提供服務。若是沒有這句話或者設置了「listen=NO」,那麼vsftpd只能以xinetd的方式來啓動,強行以單獨方式啓動會出現:「500 oops:vsftpd:not configured for standalone,must be started from inetd」的錯誤信息)。
# vi /etc/xinetd.d/vsftpd
把「disable=no」改爲「disable=yes」,讓xinetd服務再也不負責vsftpd的啓動。否則以單獨方式啓動時會出現「500 OOPS:could not bind listening IPv4 socket」的提示。
# service xinetd restart //重啓xinetd服務以使上面的修改生效
接下來,咱們偷個懶,借用一下RPM包中的文件做爲咱們啓動、中止vsftpd的腳本。
將第1張安裝光盤放入光驅,
# mount /dev/cdrom /media/cdrom //掛載光驅
# cd /media/cdrom/RedHat/RPMS
# cp vsftpd-2.0.1-5.EL4.3.i386.rpm /tmp //複製rpm文件到tmp目錄中
而後,直接在文件管理器中瀏覽/tmp目錄,在rpm文件上右擊,在彈出的菜單中選擇「用「歸檔管理器」打開」命令,將RPM包中的文件/./etc/rc.d/init.d/vsftpd解壓縮到/etc/rc.d/init.d目錄中。注意,歸檔管理器中的文件路徑是「/./etc/…」。
咱們借用的這個文件就是RedHat提供的控制腳本文件。因爲編譯安裝和RPM包安裝的文件路徑不一樣,因此還須要作一點輔助工做:
# cd / //回到/提示符下
# mkdir /etc/vsftpd //建立/etc/vsftpd目錄
# ln -s /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf //vsftpd主配置文件的軟鏈接
# ln -s /usr/local/sbin/vsftpd /usr/sbin/vsftpd //vsftpd主程序的軟鏈接
如今測試一下這個腳本:
# /etc/rc.d/init.d/vsftpd start //開始
# /etc/rc.d/init.d/vsftpd restart //重啓
# /etc/rc.d/init.d/vsftpd stop //中止
# /etc/rc.d/init.d/vsftpd status //狀態查詢
都看到綠色的[肯定]就能夠了。
下面,設置服務的自動開停:
# chkconfig --level 3 vsftpd on //配置/etc/rc.d/init.d/vsftpd在運行級別爲3的時候(3:表明徹底多用戶模式)由系統來控制啓動。這個命令會在/etc/rc3.d目錄中建立一個鏈接文件S60vsftpd 。其中「S」是「start」,表示系統在啓動時運行此鏈接。
# chkconfig --level 5 vsftpd on //同上理,(5:表明X11)
# ll /etc/rc3.d/ | grep vsftpd //查看是否已建立鏈接文件
# ll /etc/rc5.d/ | grep vsftpd //查看是否已建立鏈接文件
3.日誌文件的配置
查看一下日誌,日誌文件vsftpd.log應該已經存在了:
# cat /var/log/vsftpd.log
<!--[if !supportLists]-->4. <!--[endif]-->配置用戶訪問權限(我使用虛擬用戶)
個人FTP的目錄結構以下:
/home1/var/ftp
|--pub //管理員目錄
|--incoming //收入,雜項
|--www //網站目錄
|--pub1 //公司目錄
|--pub2 //員工目錄
建立目錄:
# mkdir /home1/var/ftp/pub //建立管理員目錄
# mkdir /home1/var/ftp/incoming //建立收入目錄
# mkdir /home1/var/ftp/www //建立網站目錄
# mkdir /home1/var/ftp/pub1 //建立公司目錄
# mkdir /home1/var/ftp/pub2 //建立員工目錄
建立真實用戶vsftpdVU,之後的虛擬用戶就用這個用戶來映射(好比:vsftpdVU是咱們建立的真實用戶,而zhangsan是爲ftp建立的虛擬用戶,當用zhangsan訪問ftp時,ftp服務器會把該用戶映射成vsftpdVU用戶):
//建立真實的系統用戶vsftpdVU,-s /sbin/nologin是讓其不能登錄系統,-g ftp將其加入ftp組,-d /home1/var/ftp指定用戶登入時的啓始目錄爲/home1/var/ftp ,-M不自動創建用戶的登入目錄
# useradd -s /sbin/nologin -g ftp -d /home1/var/ftp -M vsftpdVU
//設定密碼(這個密碼好像無論設不設置,之後直接用這個用戶登陸ftp都不行…)
# passwd vsftpdVU //輸完敲回車,而後輸入兩次密碼,再回車即設定
//設置/home1/var/ftp目錄及其子目錄的屬主爲vsftpdVU,參數-R別忘記,循環設定子目錄屬主的
# chown vsftpdVU.ftp /home1/var/ftp/ -R
//設置/home1/var/ftp目錄及其子目錄的讀寫權限爲僅全部者可讀、寫、執行
# chmod 700 /home1/var/ftp –R
-------------------------------------------------------------------------------
//下面這兩句要設一下權限,否則你的PHP網站無法運行,會顯示一個空白背景的頁面,告訴你「Forbidden」,就是禁止訪問
# chmod 755 /home1/var/ftp //更改ftp目錄權限爲全部者可讀、寫、執行,同組用戶可讀和執行
# chmod 755 /home1/var/ftp/www //更改網站目錄權限爲全部者可讀、寫、執行,同組用戶和其餘用戶可讀和執行
-------------------------------------------------------------------------------
# finger vsftpdVU //確認一下該用戶
<!--[if !supportLists]-->5. <!--[endif]-->使用虛擬用戶
# vi /etc/vsftpd/vsftpd.conf //修改主配置文件
設置以下:
anonymous_enable=NO //禁止匿名用戶訪問
local_enable=YES //容許本地用戶訪問
write_enable=NO //禁止寫權限
anon_upload_enable=NO //禁止匿名用戶上傳文件
anon_mkdir_write_enable=NO //禁止匿名用戶建立目錄
新添加如下幾句:
anon_other_write_enable=NO //禁止匿名用戶除上傳和建立目錄外其餘權限,好比刪除和重命名
chroot_local_user=YES //本地用戶登陸後將被限制在其家目錄中
guest_enable=YES //容許虛擬用戶(即:全部非匿名用戶都以guest身份登陸,guest經過guest_username設定,來映射到一個指定用戶)
guest_username=vsftpdVU //把虛擬用戶映射成系統用戶vsftpdVU
按Esc,鍵入:wq保存退出。
//建立虛擬用戶的用戶賬號文件,這是一個格式文件:奇數行是用戶名,偶數行是用戶密碼
# cd /home1/var/ftp //進入ftp目錄,就在此目錄下生成賬號文件login.txt
# cat <<! >login.txt
>webdesman
>用戶密碼
>download
>用戶密碼
>webadmin
>用戶密碼
>upload1
>用戶密碼
>upload2
>用戶密碼
>!
#
//下面進行哈希加密一下,生成口令庫文件
# db_load -T -t hash -f login.txt /etc/vsftpd/vsftpd_login.db
//修改口令庫權限
# chmod 600 /etc/vsftpd/vsftpd_login.db
爲防萬一,把login.txt文件copy到u盤一份,而後刪除本機的login.txt
//接下來,要修改一些vsftpd的PAM設置,好讓咱們新建的虛擬賬號生效
# vi /etc/pam.d/ftp
//把auth打頭的全都用#號註釋掉,以account打頭的那句也註釋掉,而後插入以下兩行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
按Esc,鍵入:wq保存退出。
# service vsftpd restart //重啓vsftpd
隨便用一個虛擬用戶名測試登錄ftp:
# ftp 127.0.0.1
應該沒問題的。
<!--[if !supportLists]-->6. <!--[endif]-->對不一樣的虛擬用戶進行不一樣的權限的配置
5個虛擬用戶,計劃配置以下:
/home1/var/ftp
|--/ //超級管理員目錄(虛擬用戶:ftproot)
|--pub //管理員目錄(虛擬用戶:webdesman)
|--incoming //收入,雜項(虛擬用戶:download)
|--www //網站目錄(虛擬用戶:webadmin)
|--pub1 //公司目錄(虛擬用戶:upload1)
|--pub2 //員工目錄(虛擬用戶:upload2)
各自登錄後只能看到本身的目錄,同時權限分配以下:
ftproot 具備瀏覽所有ftp目錄、上傳、下載、文件更名和刪除文件、建立目錄、刪除目錄的權限
webdesman 具備瀏覽自家目錄、上傳、下載、文件更名和刪除文件、建立目錄、刪除目錄的權限
download 具備瀏覽自家目錄和下載的權限
webadmin 具備瀏覽自家目錄、上傳、下載、文件更名和刪除文件、建立目錄、刪除目錄的權限
upload1 具備瀏覽自家目錄、上傳和下載的權限
upload2 具備瀏覽自家目錄、上傳和下載的權限
//首先,編輯主配置文件/etc/vsftpd.conf
//激活對不一樣的虛擬用戶進行不一樣權限配置的配置語句
# vi /etc/vsftpd.conf
//在文件中添加以下的配置行
user_config_dir=/etc/vsftpd_user_conf //指定虛擬用戶的配置文件的存放路徑
按Esc,鍵入:wq保存退出。
//接下來建立此目錄
# mkdir /etc/vsftpd_user_conf
//每一個虛擬用戶都有一個以用戶名爲文件名的配置文件
//建立虛擬用戶ftproot的配置文件,指定其登錄後的起始目錄,並開放ftproot的讀寫權限、其餘權限(如文件更名和刪除文件的權限)
# cat <<! >/etc/vsftpd_user_conf/ftproot
>local_root=/home1/var/ftp
>anon_world_readable_only=NO
>write_enable=YES
>anon_upload_enable=YES
>anon_mkdir_write_enable=YES
>anon_other_write_enable=YES
>virtual_use_local_privs=YES
//建立虛擬用戶webdesman的配置文件,指定其登錄後的起始目錄,並開放webdesman的讀寫權限、其餘權限(如文件更名和刪除文件的權限)
# cat <<! >/etc/vsftpd_user_conf/webdesman
>local_root=/home1/var/ftp/pub
>anon_world_readable_only=NO
>write_enable=YES
>anon_upload_enable=YES
>anon_mkdir_write_enable=YES
>anon_other_write_enable=YES
>virtual_use_local_privs=YES //(虛擬用戶擁有同本地用戶同樣的權限)這句重要啊!否則你用webdesman新建一個目錄無法改權限!好比,你本來設置的www目錄權限是700,那你的php程序就運行不了,這個時候你要是沒有這句,你用webdesman這個賬號登錄ftp服務器以後,新建一個目錄就仍是700的權限!就算你已經用root在本地更改了網站目錄www及其子目錄的權限爲755,你用這個虛擬用戶webdesman登陸ftp服務器後在www下新建一個子目錄,其權限仍是700!!!這個是管理員我用的,固然權限要高啊,連目錄權限都不能改,那哪行啊!固然這是特殊,要都這樣搞,那設置虛擬用戶就沒有什麼意義了,都設成本地用戶不就好了!還有,沒有這一句,這個虛擬用戶無法刪除非空目錄(能夠刪除空目錄)!!加了這一句,就能夠在客戶端用cuteftp之類的第三方軟件刪除非空目錄了!可是我在服務器端字符界面登錄ftp上去,仍是刪不了非空目錄,奇怪中…
>! //執行
//建立虛擬用戶download的配置文件,指定其登錄後的起始目錄,並開放download的讀權限
# cat <<! >/etc/vsftpd_user_conf/download
>local_root=/home1/var/ftp/incoming
>anon_world_readable_only=NO
>!
//建立虛擬用戶webadmin的配置文件,指定其登錄後的起始目錄,並開放webadmin的讀寫權限、其餘權限(如文件更名和刪除文件的權限)
# cat <<! >/etc/vsftpd_user_conf/webadmin
>local_root=/home1/var/ftp/www
>anon_world_readable_only=NO
>write_enable=YES
>anon_upload_enable=YES
>anon_mkdir_write_enable=YES
>anon_other_write_enable=YES
>virtual_use_local_privs=YES //同webdesman賬號意義,有時會更改網站目錄結構,若是無法改目錄權限,那php程序就運行不了,甚至htm頁面都看不了!
>!
//建立虛擬用戶upload1和upload2的配置文件,指定其登錄後的起始目錄,開放upload1和upload2的讀寫權限
# cat <<! >/etc/vsftpd_user_conf/upload1
>local_root=/home1/var/ftp/pub1
>anon_world_readable_only=NO
>write_enable=YES
>anon_upload_enable=YES
>!
# cat <<! >/etc/vsftpd_user_conf/upload2
>local_root=/home1/var/ftp/pub2
>anon_world_readable_only=NO
>write_enable=YES
>anon_upload_enable=YES
>!
//從新啓動vsftpd
# service vsftpd restart
//配置結束
測試,略。
<!--[if !supportLists]-->7. <!--[endif]-->限制用戶的訪問
如今,咱們已經能提供不錯的FTP服務了。不過有些用戶常常要傳送一些較大卻不重要的文件,他們使用網絡快車、網絡螞蟻之類的工具,創建了大量的鏈接,佔用了大量的服務資源,形成了其餘用戶的訪問困難。看來咱們須要對FTP服務作一些限制,讓一個用戶最多隻能創建4個鏈接,並且每一個用戶的下載帶寬不能超過500 KB。爲了安全起見,咱們再修改默認端口號21爲2121
//修改主配置文件/etc/vsftpd.conf
# vi /etc/vsftpd.conf
在文件末尾添加以下語句:
max_clients=100 //限制同時最多用戶鏈接數爲100
max_per_ip=4 //限制一個用戶最多鏈接數爲4
local_max_rate=512000 //限制下載帶寬不能超過500KB
按Esc,鍵入:wq保存退出。
# service vsftpd restart //從新啓動vsftpd
<!--[if !supportLists]-->8. <!--[endif]-->開啓PASV模式(被動模式)
先了解一下相關知識:
-------------------------------------------------------------------------------
FTP服務器PASV和PORT模式不一樣
1、什麼是PASV和PORT方式
(1)PORT實際上是Standard模式的另外一個名字,又稱爲Active模式。中文意思是「主動模式」。
(2)PASV也就是Passive的簡寫。中文就是「被動模式」。
2、二者不一樣
不一樣之處是因爲PORT(主動)這個方式須要在接上TCP 21端口後,服務器經過本身的TCP 20來發出數據。而且須要創建一個新的鏈接來傳送檔案。而PORT的命令包含一些客戶端沒用的資料,因此有了PASv的出現。而PASV模式擁有PORT 模式的優勢,並去掉一些PORT的缺點。PASV運行方式就是當服務器接收到客戶端鏈接請求時,就會自動從端口1024到5000中隨機選擇一個和客戶端創建鏈接傳遞數據。因爲被動且自動創建鏈接,容易受到攻擊,因此安全性差。
3、常見的FTP客戶端軟件PORT方式與PASV方式的切換方法
大部分FTP客戶端默認使用PASV方式。IE默認使用PORT方式。在大部分FTP客戶端的設置裏,常見到的字眼都是「PASV」或「被動模式」,極少見到「PORT」或「主動模式」等字眼。由於FTP的登陸方式只有兩種:PORT和PASV,取消PASV方式,就意味着使用PORT方式。
(1)IE:工具 -> Internet選項 -> 高級 -> 「使用被動FTP」(須要IE6.0以上才支持)。
(2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> 「PASV Mode」 或File -> Site Manager,在左邊選中站點 -> Edit -> 「Use PASV mode」 。
(3)FlashGet:工具 -> 選項 -> 代理服務器 -> 直接鏈接 -> 編輯 -> 「PASV模式」。
(4)FlashFXP:選項 -> 參數選擇 -> 代理/防火牆/標識 -> 「使用被動模式」 或 站點管理 -> 對應站點 -> 選項 -> 「使用被動模式」或快速鏈接-> 切換 -> 「使用被動模式」。
Linux防火牆的關閉和開啓
1) 重啓後生效
開啓: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重啓後失效
開啓: service iptables start
關閉: service iptables stop
須要說明的是對於Linux下的其它服務均可以用以上命令執行開啓和關閉操做。
在開啓了防火牆時,作以下設置,開啓相關端口,
修改/etc/sysconfig/iptables 文件,添加如下內容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-------------------------------------------------------------------------------
我配置完後,ftp默認是主動模式的(port),有些用戶是經過路由什麼的訪問外網的ftp服務器的,並且還有防火牆什麼的,這個時候,使用主動模式就不行!就必需要用被動模式(PASV),固然,主動模式比被動模式要好,要安全一些。如今,咱們編輯主配置文件/etc/vsftpd.conf
# vi /etc/vsftpd.conf
在文件末尾添加以下語句:
pasv_enable=YES //容許使用pasv模式,雖說默認是YES,但我在配置文件裏沒有找到這一句,仍是添上吧,當心無大錯
//爲安全性考慮,咱們設置PASV模式端口範圍爲63000 - 63100
pasv_min_port=63000 //爲PASV方式數據鏈接指派的最小端口
pasv_max_port=63100 //爲PASV方式數據鏈接指派的最大端口
port_enable=YES //容許使用端口模式獲取數據鏈接。這句我在配製文件裏也沒找到,添上吧。若是你要在數據鏈接時取消主動模式(PORT模式)時,設此選項爲NO。默認值爲YES。
accept_timeout=60 //超時,以秒計,用於遠程客戶端以PASV模式創建數據鏈接
connect_timeout=60 //超時,以秒計,用於遠程客戶端以PORT模式創建數據鏈接
hide_ids=YES //全部目錄中的用戶和組信息在列取時都將顯示「ftp」
若是你的服務器linux系統啓用了防火牆iptables,還須要添加容許開放的端口,也就是咱們上面添加的PASV模式的端口範圍63000 – 63100
# vi /etc/sysconfig/iptables
添加以下:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 63000:63100 -j ACCEPT
按Esc,鍵入:wq保存退出,就生效了,不用重啓防火牆或者系統。
好了,如今咱們在客戶端使用PASV模式就能夠連上ftp服務器了,而且使用的是63000到63100之間的端口號。
===============================================================================
如下是爲Ftp添加新的用戶的步驟
1.在lognis.txt中添加用戶名和密碼(注意logins.txt是自定義的,要是有這個文件而且直接用該文件,該文件中之前的內容能夠去掉不要。通過我試驗,我發現你就是把這個login.txt刪掉了,在添加用戶的時候你再建一個login.txt,加新的用戶和密碼,再哈希生成vsftpd_login.db,結果是不影響以前建的用戶訪問的。)
2.運行以下命令,將用戶名和密碼添加到數據庫中
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
3.在/home/ftpsite中新建一個文件夾,與用戶名相同
4.在/etc/vsftpd_user_conf目錄下新建和用戶名(咱們下面用xxx表示)相同的文件,並在其中加入
vi /etc/vsftp_user_conf/xxx
local_root=/home/ftpsite/xxx
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
5,直接用ftp工具訪問便可,不用重啓ftp服務器.
===============================================================================
到此,基本上就徹底配置結束了。
來自:http://www.cnblogs.com/lsdb/p/6706386.html?utm_source=itdadao&utm_medium=referral
1.rpm包更新
相似如下更新便可
rpm -Uvh vsftpd-2.2.2-24.el6.x86_64.rpm
2.源碼更新
不懂爲何對於新版本可能只有源碼包而沒有rpm等包,如此只能以源碼更新了。
tar -zxf nginx-1.10.3.tar.gz cd vsftpd-3.0.3 make make install service vsftpd restart
3.INSTALL文件說明
vsftpd源碼包內有INSTALL文件,該文件是安裝的說明文檔。
該文件最關鍵的步驟還是make和make install其餘內容是前置條件和以xinted方式啓動的說明。
其實徹底能夠先裝個rpm包這樣前置條件就不用本身操心了,正常起動便可xinted不用管。
4.出現的錯誤
make報錯:make: gcc: Command not found
解決:yum install gcc-c++
說明:直接安裝gcc也是能夠的;gcc-c++只是c++的編譯器,gcc是包括c++在內的多種語言的編譯器
make報錯:/usr/bin/ld: cannot find -lcap
解決:yum install libcap-devel
說明:對於/usr/bin/ld: cannot find -lxxx類問題,只要相似地安裝libxxx-devel(CentOS)或libxxx-dev(Ubuntu)便可
啓動報錯:Starting vsftpd for vsftpd: 500 OOPS: config file not owned by correct user, or not a file
/etc/vsftpd/vsftpd.conf文件屬主不對:chown -R root:root /etc/vsftpd
5.修改banner信息(隱藏版本號)
最新的vsftpdvsftpd-2.2.2-24.el6.x86_64.rpm也沒有解決'ls.c' 遠程拒絕服務漏洞(CVE-2011-0762),而3.0版本又沒有對應rpm包只能以源碼安裝
在實際操做發現,有些機器以源碼形式升級後版本號不知何故並無改變,爲此需手動修改版本號以免掃描器誤報(由此若是隻是要躲避掃描器掃描能夠不用升級直接修改版本號便可)
vsftpd的banner中默認有當前版本號,可經過/etc/vsftpd/vsftpd.conf中的ftpd_banner項來自定義banner信息
但若是隻是將ftpd_banner賦爲隨意語句,測試發現掃描器仍是能夠猜出大體版本號;爲此咱們將其值以默認banner信息的格式賦值
sed
-i
's/ftpd_banner=/#ftpd_banner=/'
/etc/vsftpd/vsftpd
.conf
sed
-i
'/ftpd_banner=/a\ftpd_banner=(vsFTPd 3.3.3)'
/etc/vsftpd/vsftpd
.conf