原文地址:http://blog.sina.com.cn/s/blog_5e796a360100cgfu.html
重新安裝和配置虛擬用戶
以下都是在root用戶下進行的
#tar zxvf vsftpd-2.0.5.tar.gz ——解壓
#cd vsftpd-2.0.5.tar.gz ——解壓後進入vsftpd-2.0.5.tar.gz目錄
# mkdir /usr/share/empty/ ——VSFTPD默認設置需要一個空目錄:/usr/share/empty
# mkdir /var/ftp/ ——如果容許匿名用戶(anonymous),那麼你將需要一個"ftp"用戶和其home目錄(這個home目錄不屬於“ftp”用戶,而且“ftp"用戶也對其沒有寫權限)在你的系統中存在。
#adduser 然後回車,依照程序說明來添加兩個用戶"nobody" 和"ftp" ,'nobody'一般都已經存在來,如果添加時提示用戶已經存在,就不用添了。 'ftp'用戶設置時主目錄都設在/var/ftp
#chmod 755 /var/ftp ——把/var/ftp目錄的權限設爲drwxr-xr-x
#make
#make install
#cp vsftpd.conf /etc ——"make install"不會拷貝默認的配置文件,所以手工拷貝過去。不同的系統位置可能不一樣,看一下,如果有/etc/vsftp目錄的話,就拷貝到/etc/vsftp下
安裝完成。
測試一下:
編輯/etc/vsftpd.conf, 在最下面加入以下這一行:
listen=YES
(以下是vsftpd.conf配置,這個是最重要的,如果無法連接,更它有很大的關係)
{
匿名服務器的連接(獨立的服務器):
在/etc/vsftpd/vsftpd.conf配置文件中添加如下幾項:
anonymous_enable=yes (允許匿名登陸)
dirmessage_enable=yes (切換目錄時,顯示目錄下.message的內容)
local_umask=022 (FTP上本地的文件權限,默認是077)
connect_form_port_20=yes (啓用FTP數據端口的數據連接)*
xferlog_enable=yes (激活上傳和下傳的日誌)
xferlog_std_format=yes (使用標準的日誌格式)
ftpd_banner=XXXXX (歡迎信息)
pam_service_name=vsftpd (驗證方式)*
listen=yes (獨立的VSFTPD服務器)*
功能:只能連接FTP服務器,不能上傳和下傳
注:其中所有和日誌歡迎信息相關連的都是可選項,打了星號的無論什麼帳戶都要添加,是屬於FTP的基本選項
開啓匿名FTP服務器上傳權限
在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (開放上傳權限)
Anon_mkdir_write_enable=yes (可創建目錄的同時可以在此目錄中上傳文件)
Write_enable=yes (開放本地用戶寫的權限)
Anon_other_write_enable=yes (匿名帳號可以有刪除的權限)
開啓匿名服務器下傳的權限
在配置文件中添加如下信息即可:
Anon_world_readable_only=no
注:要注意文件夾的屬性,匿名帳戶是其它(other)用戶要開啓它的讀寫執行的權限
(R)讀-----下傳 (W)寫----上傳 (X)執行----如果不開FTP的目錄都進不去
普通用戶FTP服務器的連接(獨立服務器)
在配置文件中添加如下信息即可:
Local_enble=yes (本地帳戶能夠登陸)
Write_enable=no (本地帳戶登陸後無權刪除和修改文件)
功能:可以用本地帳戶登陸vsftpd服務器,有下載上傳的權限
注:在禁止匿名登陸的信息後匿名服務器照樣可以登陸但不可以上傳下傳
用戶登陸限制進其它的目錄,只能進它的主目錄
設置所有的本地用戶都執行chroot
Chroot_local_user=yes (本地所有帳戶都只能在自家目錄)
設置指定用戶執行chroot
Chroot_list_enable=yes (文件中的名單可以調用)
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list
注意:vsftpd.chroot_list 是沒有創建的需要自己添加,要想控制帳號就直接在文件中加帳號即可
限制本地用戶訪問FTP
Userlist_enable=yes (用userlistlai 來限制用戶訪問)
Userlist_deny=no (名單中的人不允許訪問)
Userlist_file=/指定文件存放的路徑/ (文件放置的路徑)
注:開啓userlist_enable=yes匿名帳號不能登陸
安全選項
Idle_session_timeout=600(秒) (用戶會話空閒後10分鐘)
Data_connection_timeout=120(秒) (將數據連接空閒2分鐘斷)
Accept_timeout=60(秒) (將客戶端空閒1分鐘後斷)
Connect_timeout=60(秒) (中斷1分鐘後又重新連接)
Local_max_rate=50000(bite) (本地用戶傳輸率50K)
Anon_max_rate=30000(bite) (匿名用戶傳輸率30K)
Pasv_min_port=50000 (將客戶端的數據連接端口改在
Pasv_max_port=60000 50000—60000之間)
Max_clients=200 (FTP的最大連接數)
Max_per_ip=4 (每IP的最大連接數)
Listen_port=5555 (從5555端口進行數據連接)
查看誰登陸了FTP,並殺死它的進程
ps –xf |grep ftp
kill 進程號
}
(機器環境:主機系統winxp,vmware6.0,Redhat Linux 9,vsftp 2.0.5)
我是用源碼的形式安裝的,安裝過程很簡單,在安裝包中有README文件介紹的很詳細,按照步驟來就可以了。
重點是安裝完後的配置過程.
vsftpd的啓動有兩種方式,這裏主要是記錄了一種即:
[root@localhost ~]# /usr/sbin/vsftpd &
[root@localhost ~]# /usr/local/sbin/vsftpd &
vsftpd服務是否啓動起來:
我們可以通過pgrep vsftpd 來查看vsftpd是否啓動起來.
[root@localhost ~]# pgrep vsftpd
4248
500 OOPS: vsftpd: refusing to run with writable anonymous root
如果我們已經把vsFTPd服務器啓動好了,但登錄測試是會出現類似下面的提示;
500 OOPS: vsftpd: refusing to run with writable anonymous root
這表示ftp用戶的家目錄的權限不對,應該改過纔對;
[root@localhost ~]# more /etc/passwd |grep ftp
ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin
我們發現ftp用戶的家目錄在/var/ftp,就是這個/var/ftp的權限不對所致,這個目錄的權限是不能打開所有權限的;是您運行了chmod 777 /var/ftp所致;如果沒有ftp用戶這個家目錄,當然您要自己建一個;
如下FTP用戶的家目錄是不能針對所有用戶、用戶組、其它用戶組完全開放;
[root@localhost ~]# ls -ld /var/ftp
drwxrwxrwx 3 root root 4096 2005-03-23 /var/ftp
修正這個錯誤,應該用下面的辦法;
[root@localhost ~]# chown root:root /var/ftp
[root@localhost ~]# chmod 755 /var/ftp
有的弟兄可能會說,那匿名用戶的可讀、可下載、可上傳怎麼辦呢?這也簡單,在/var/ftp下再建一個目錄,權限是777的就行了,再改一改vsftpd.conf就OK了;沒有什麼難的;
vsFTPd出於安全考慮,是不準讓ftp用戶的家目錄的權限是完全沒有限制的,您可以去讀一下vsFTPd的文檔就明白的了;否則也不能稱爲最安全的FTP服務器了,對不對?
vsftp的配置文件爲/etc/vsfptd.conf(根據環境不同,會有所不同),在安裝包裏有個示例的配置文件可參考.
(其實如果英文好的話,感覺應該是沒有什麼難度的.)
以下內容出自:http://www.linuxsir.org/main/node/152
8、關於vsFTPd服務器的一些常用功能的實現;
8.1、關於匿名上傳下載的實現;
關於匿名上傳,其實也比較簡單,首先我們要修改一下vsftpd.conf ,此文件位於 /etc/目錄下,可能是/etc/vsftpd.conf,也可能是/etc/vsftpd/vsftpd.conf文件。以您的系統環境爲準;
首先:我們要改一下vsftpd.conf,確保有以下幾行;
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
其次:在ftp用戶家目錄的下建一個文件夾,並修改其權限爲完全開放;
ftp用戶的家目錄在哪?我們前面已經說了,要通過/etc/passwd來查看;也可以通過finger ftp來查看;
[root@localhost beinan]# finger ftp
Login: ftp Name: FTP User
Directory: /var/ftp Shell: /sbin/nologin
這說明ftp用戶的家目錄在/var/ftp ,我們要在這個目錄下建一個目錄,然後把他的權限設置爲任何用戶可讀可寫可執行就行了;一般的情況下,在發行版中,有一個/var/ftp/pub的目錄,如果沒有,您也可以自己建一個;把配置文件改好後,只要把/var/ftp下的任何一個目錄的權限打開,都可以用來匿名上傳和下載;
比如您想讓匿名用戶上傳和下載都在/var/ftp/pub,就可以把/var/ftp/pub的權限打開,如果沒有這個目錄,您要自己建一個;
[root@localhost ~]# mkdir /var/ftp/pub
[root@localhost ~]# chmod 777 /var/ftp/pub
這樣上傳的時候傳到pub目錄就OK了,對不對??
8.2、關於添加本地用戶及打開讀寫權限示例;
FTP用戶一般是不能登錄系統的,這也是爲了安全。在系統中,沒有權限登錄系統的用戶一般也被稱之爲虛擬用戶;虛擬用戶也是要寫進 /etc/passwd中;這只是一種虛擬用戶的方法,但說實在的並不是真正的虛擬用戶,只是把他登錄SHELL的權限去掉了,所以他沒有能力登錄系統;
如果我們想把beinan這個用戶目錄定位在/opt/beinan這個目錄中,並且不能登錄系統;我們應該如下操作
[root@localhost ~]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
[root@localhost ~]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
其實這還是不夠的,還要改一下配置文件vsftpd.conf ,以確保本地虛擬用戶能有讀寫權限;
local_enable=YES
write_enable=YES
local_umask=022
8.4、如何實現虛擬路徑?
比如:
/home/a 映射爲 ftp://localhost/a
/home/b/c 則爲 ftp://localhost/c
其實這個不能說是vsFTPd的內容,其實我們早就接觸過了,可能我們沒有注意,我們可以通過如下的方法來實現。
[root@localhost ~]# mount --bind [原有的目錄] [新目錄]
比如我的ftp的默認目錄是/var/ftp,我想把/mnt/LinG/WinSoft文件夾,映射到/var/ftp目錄中,我就如下操作
我們要先在/var/ftp目錄中建一個目錄
[root@localhost ~]# mkdir /var/ftp/WinSoft
然後執行mount命令
[root@localhost ~]# mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft
這樣就OK了。
8.5、打開vsFTP服務器的日誌功能;
把下面xferlog_file前面的#號對掉,也就是把vsftp的log功能打開,這樣我們就能在/var/log目錄下查看vsftpd.log。這是vsFTP的日誌功能,這對於我們來說是極爲重要的。
xferlog_file=/var/log/vsftpd.log
8.6、如何定製歡迎信息;
如何定製歡迎信息,也就是我們登入有些FTP之後,會出現類似:歡迎您來到LinuxSir FTP,在這裏,您會得到最真誠的幫助,如果有什麼問題和建議,請來信,多謝。
實現這個並不難,我們可以查看vsftpd.conf文件中,是否有這行。
dirmessage_enable=YES
message_file=.message
如果沒有就加上,如果dirmessage_enable=YES前面有#號,就把#號去掉。其實FTP信息默認的就是.message,所以可以不加 message_file= 來指定。自己指定也行,無所謂的事;
然後我們制定一個.message文件,寫上您想要寫的東西,比如是.message的內容是如下的:
--歡迎您來到LinuxSir FTP!
--在這裏,您會得到最真誠的幫助;
--如果有什麼問題和建議,請來信,多謝。
我們可以用編輯器來寫這個.message,我想這個過程就不用說了吧。
然後我們把.message這個文件複製到各個用戶的家目錄中。比如我的FTP的一個用戶是beinan,這個用戶所在的家目錄是/opt/beinan
我們就要把.message放在/opt/beinan這個目錄下。如果系統用戶ftp,他的目錄就是/var/ftp這個目錄,這個是默認的,當匿名用戶登入時就訪問的是/var/ftp這個目錄。我們要讓匿名用戶能看到歡迎信息。就要把.message放在/var/ftp目錄中。其它的用戶,也無非就是類似的操作。
8.7、硬盤空間有限,如何把帳號ftp默認的家目錄更改到別處?
我的硬盤空間有限,如何把帳號ftp默認的路徑/var/ftp更改到別處?或者是,我的linux所有的目錄都放在/根分區,因爲空間緊張,我能否把ftp這個用戶的默認路徑放到別的分區??
對於ftp這個用戶的管理,我們應該查看/etc/passwd ,然後修改ftp用戶那行;
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
比如我們想把ftp用戶的家目錄改爲/opt/ftp,則要把類似上一行改爲
ftp:x:14:50:FTP User:/opt/ftp:/sbin/nologin
然後我們要建立ftp用戶的新的家目錄;
[root@localhost ~]# mkdir /opt/ftp
[root@localhost ~]# chmod 755 /opt/ftp
[root@localhost ~]# chown root:root /opt/ftp
如果默認的ftp磁盤空間緊張,我們其實也可以用虛擬路徑映射的方法來解決;也就是mount --bind的辦法;看情況吧,哪個適合就是最好的方法;
8.8、如何讓vsFTP服務器限制鏈接數,以及每個IP最大的鏈接數?
應該改vsFTPd服務器的配製文件vsftpd.conf,加入下面的兩行:
max_clients=數字
max_per_ip=數字
舉例:我想讓我的vsFTP最大支持鏈接數爲100個,每個IP,最多能支持5個鏈接,所以我應該在vsftpd.conf中加上如下的兩行:
max_clients=100
max_per_ip=5
改好了配製文件,不要忘記啓動vsftp服務器。
8.9、如何限制傳輸速度?
anon_max_rate=數字
注:這是匿名的速度
local_max_rate=數字
注:這是vsFTP服務器上本地用戶的速度
注:這個數字的單位是byte,所以我們要計算一下。比如我想讓匿名用戶和vsFTP上的用戶都以80KB下載,所以這個數字應該是1024x80=81920
所以我們要在vsftpd.conf中加入下面的兩行
anon_max_rate=81920
local_max_rate=81920
8.10、如何有選擇的把用戶限制在家目錄中呢?
我們要自己建一個文件,在/etc目錄中或/etc/vsftpd目錄中(假如您的vsftpd配置文件都是放在這個目錄的話);
#touch /etc/vsftpd.chroot_list
以beinan和nanbei這兩個用戶限制在他們所在的家目錄中,而其它的FTP用戶不做此限制。
在vsftpd.chroot_list這個文件中,?%