Linux下VSFTP配置全攻略

vsftp配置指南
1.相關配置文件
/etc目錄下的vsftpd.conf,vsftpd.ftpuser,vsftpd.user_list,/etc/xinetd.d/vsftpd
2.配置vsftp
主要是修改/etc/vsftpd.conf就能夠了,相關參數以下:
anonymous_enable=YES 是否容許匿名ftp,如不然選擇NO
local_enable=YES 是否容許本地用戶登陸


local_umask=022 默認的umask碼
anon_upload_enable=YES 是否容許匿名ftp用戶訪問
anon_upload_enable=YES 是否容許匿名上傳文件
anon_mkdir_write_enable=YES 是否容許匿名用戶有建立目錄的權利
dirmessage_enable=YES 是否顯示目錄說明文件,默認是YES但須要收工建立.message文件
xferlog_enable=YES 是否記錄ftp傳輸過程
connect_from_port_20=YES 是否確信端口傳輸來自20(ftp-data)
chown_upload=YES
chown_username=username 是否改變上傳文件的屬主,若是是須要輸入一個系統用戶名,你能夠把上傳的文件都改爲root屬主
xferlog_file=/var/log/vsftpd.log ftp傳輸日誌的路徑和名字默認是/var/log/vsftpd.log
xferlog_std_format=YES 是否使用標準的ftp xferlog模式
idle_session_timeout=600 設置默認的斷開不活躍session的時間
data_connection_timeout=120 設置數據傳輸超時時間
nopriv_user=ftpsecure 運行vsftpd須要的非特權系統用戶默認是nobody
async_abor_enable=YES 是否容許運行特殊的ftp命令async ABOR.這裏我翻譯的不爽,原文以下:
When enabled, a special FTP command known as "async ABOR" will be enabled. Only ill advised FTP clients will use this feature.Addtionally, this feature is awkward to handle, so it is dis-abled by default. Unfortunately, some FTP clients will hang when cancelling a transfer unless this feature is available, so you may wish to enable it.
ascii_upload_enable=YES
ascii_download_enable=YES 是否使用ascii碼方式上傳和下載文件
ftpd_banner=Welcome to chenlf FTP service. 定製歡迎信息
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails 是否容許禁止匿名用戶使用某些郵件地址,若是是輸入禁止的郵件地址的路徑和文件名
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list 是否將系統用戶限止在本身的home目錄下,若是選擇了yes那麼chroot_list_file=/etc/vsftpd.chroot_list中 列出的是不chroot的用戶的列表
max_clients=Number 若是以standalone模式起動,那麼只有$Number個用戶能夠鏈接,其餘的用戶將獲得錯誤信息,默認是0不限止
message_file 設置訪問一個目錄時得到的目錄信息文件的文件名,默認是.message

沒發現有限止帶寬的地方,若是誰知道請告訴我,詳細的幫助說明請參考man vsftpd.conf linux

3 配置實例
如下是個人配置文件.容許匿名FTP,容許上傳,chroot用戶目錄,上傳文件屬主改成root
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES


dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=root
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
pam_service_name=vsftpd
chroot_local_user=YES
4 起動服務
vsftpd和wu-ftpd不能同時起動,因此修改/etc/xinetd.d/wu-ftpd將disable設置爲yes,而後修改/etc/vsftpd將disable設置爲NO
執行/etc/initd.d/xinetd restart
就能夠了.好了,如今咱們就建了一個所謂的很是安全的ftp服務器了,你們試試吧
VSFTPD的菜鳥篇
1. 匿名服務器的鏈接(獨立的服務器)
在/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的基本選項
2. 開啓匿名FTP服務器上傳權限
在配置文件中添加如下的信息便可:
Anon_upload_enable=yes (開放上傳權限)
Anon_mkdir_write_enable=yes (可建立目錄的同時能夠在此目錄中上傳文件)
Write_enable=yes (開放本地用戶寫的權限)
Anon_other_write_enable=yes (匿名賬號能夠有刪除的權限)
3. 開啓匿名服務器下傳的權限
在配置文件中添加以下信息便可:
Anon_world_readable_only=no
注:要注意文件夾的屬性,匿名賬戶是其它(other)用戶要開啓它的讀寫執行的權限
(R)讀-----下傳 (W)寫----上傳 (X)執行----若是不開FTP的目錄都進不去
4.普通用戶FTP服務器的鏈接(獨立服務器)
在配置文件中添加以下信息便可:
Local_enble=yes (本地賬戶可以登錄)
Write_enable=no (本地賬戶登錄後無權刪除和修改文件)
功能:能夠用本地賬戶登錄vsftpd服務器,有下載上傳的權限
注:在禁止匿名登錄的信息後匿名服務器照樣能夠登錄但不能夠上傳下傳
5. 用戶登錄限制進其它的目錄,只能進它的主目錄
設置全部的本地用戶都執行chroot
Chroot_local_user=yes (本地全部賬戶都只能在自家目錄)
設置指定用戶執行chroot
Chroot_list_enable=yes (文件中的名單能夠調用)
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list
注意:vsftpd.chroot_list 是沒有建立的須要本身添加,要想控制賬號就直接在文件中加賬號便可
6. 限制本地用戶訪問FTP
Userlist_enable=yes (用userlistlai 來限制用戶訪問)
Userlist_deny=no (名單中的人不容許訪問)
Userlist_file=/指定文件存放的路徑/ (文件放置的路徑)
注:開啓userlist_enable=yes匿名賬號不能登錄
7. 安全選項
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端口進行數據鏈接)
8. 查看誰登錄了FTP,並殺死它的進程
ps –xf |grep ftp
kill 進程號
VSFTPD的高手篇
1. 配置本地組訪問的FTP
首先建立用戶組 test和FTP的主目錄
groupadd test
mkdir /tmp/test
而後建立用戶
useradd -G test –d /tmp/test –M usr1
注:G:用戶所在的組 d:表示建立用戶的本身目錄的位置給予指定
M:不創建默認的自家目錄,也就是說在/home下沒有本身的目錄
useradd –G test –d /tmp/test –M usr2
接着改變文件夾的屬主和權限
chown usr1.test /tmp/test ----這表示把/tmp/test的屬主定爲usr1
chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什麼權限都沒有
這個實驗的目的就是usr1有上傳、刪除和下載的權限
而usr2只有下載的權限沒有上傳和刪除的權限
固然啦你們別忘了咱們的主配置文件vsftpd.conf
要肯定local_enable=yes、write_enable=yes、chroot_local_usr=yes這三個選項是有的哦!
2. 配置獨立FTP的服務器的非端口標準模式進行數據鏈接
這個很是容易:在VSFTPD。CONF中添加
Listen_port=33333
就能夠了啦!
好了重頭戲來了,這也是我爲何叫高手篇的緣故!^_^(你們不要扔雞蛋哦!)
3. 配置單獨的虛擬FTP,使用虛擬FTP用戶,並使創建的四個賬戶中有不一樣的權限
(兩個有讀目錄的權限,一個有瀏覽、上傳、下載的權限,一個有瀏覽、下載、刪除和改文件名的權限)
A:配置網卡
第一塊網卡地址是10.2.3.4 掩碼是255.255.0.0
ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
B:寫入/etc/sysconfig中(爲了重起後IP地址不會丟失)


cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
vi ifcfg-eth0:1在其中修改內容以下
DEVICE=eth0:1
BROADCAST=211.131.4.255
HWADDR=該網卡的MAC地址
IPADDR=211.131.4.253
NETMASK=255.255.255.0
NETWORK=211.131.4.0
ONBOOT=yes
TYPE=Ethernet
wq推出
C:進入vsftpd.conf所在的文件夾
cp vsftpd.conf vsftpd2.conf
修改vsftpd.conf添加如下信息
Listen_address=10.2.3.4
修改vsftpd2.conf添加如下信息
Listen_address=211.131.4.253
Ftpd_banner=this is a virtual ftp test
到此虛擬的FTP服務器創建好了
D:創建logins.txt
vi /tmp/logins.txt
添加入下信息:
longlei------------用戶名
longlei------------密碼
zhangweibo
zhangweibo
jinhui
jinhui
lxp
lxp
格式要按照個人來哦,一個用戶名,一個密碼啦
F:創建訪問者的口令庫文件,而後修改其權限
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
G:進如/etc/pam.d/中建立 ftp.vu
在此文件中添加以下信息
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
H:在/var/ftp/建立目錄並改變其屬性和它的屬主
useradd -d /var/ftp/test qiang
chmod 700 /var/ftp/test
在目錄中添加test_file測試文件
I:進入vsftpd2.conf修改其中的信息(我加的是)
Listen_yes
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_username=qiang------將虛擬用戶映射爲本地用戶
Listen_port=5555
Max_client=10
Max_per_ip=1
Ftpd_banner=this is a virtual server and users
Pam_service_name=ftp.vu
注:在主配置文件中給的權限越低,在後面分用戶管理的時候對擁護的權限劃分的空間就越大,由於主配置文件最高的限制服務先讀主配置文件,而後再讀用戶的配置文件
重起服務
到此虛擬USER就建好了
J:在VSFTPD。CONF所在的目錄中建立virtaul文件目錄
並在文件目錄中建立以你用戶名命名的配置文件
Longlei zhangweibo jinhui lxp
在longlei中添加:
Anon_world_readable_only=no
在lxp中添加
Anon_world_readable_only=no
這樣此兩個用戶就有了瀏覽目錄的權限了
在jinhui中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
此用戶就有了上傳、下載和瀏覽的權限
在zhangweibo中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
Anon_other_write_enable=yes
此用戶就有了上傳、下載、刪除文件目錄、修改文件名和瀏覽的權限
K:修改vsftpd2.conf
加入user_config_dir=/vsftpd.conf所在的目錄/virtual
重起服務器就搞定了
好了你們別走開,如今隆重推出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服務器)*
Anon_upload_enable=yes (開放上傳權限)
Anon_mkdir_write_enable=yes (可建立目錄的同時能夠在此目錄中上傳文件)
Write_enable=yes (開放本地用戶寫的權限)
Anon_other_write_enable=yes (匿名賬號能夠有刪除的權限)
Anon_world_readable_only=no (放開匿名用戶瀏覽權限)
Ascii_upload_enable=yes (啓用上傳的ASCII傳輸方式)
Ascii_download_enable=yes (啓用下載的ASCII傳輸方式)
Banner_file=/var/vsftpd_banner_file (用戶鏈接後歡迎信息使用的是此文件中的相關信息)
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端口進行數據鏈接)
Local_enble=yes (本地賬戶可以登錄)
Write_enable=no (本地賬戶登錄後無權刪除和修改文件)
這是一組
Chroot_local_user=yes (本地全部賬戶都只能在自家目錄)
Chroot_list_enable=yes (文件中的名單能夠調用)
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list
(前提是chroot_local_user=no)
這又是一組
Userlist_enable=yes (在指定的文件中的用戶不能夠訪問)
Userlist_deny=yes
Userlist_file=/指定的路徑/vsftpd.user_list
又開始單的了
Banner_fail=/路徑/文件名 (鏈接失敗時顯示文件中的內容)
Ls_recurse_enable=no
Async_abor_enable=yes
One_process_model=yes
Listen_address=10.2.2.2 (將虛擬服務綁定到某端口)
Guest_enable=yes (虛擬用戶能夠登錄)
Guest_username=所設的用戶名 (將虛擬用戶映射爲本地用戶)
User_config_dir=/任意指定的路徑/爲用戶策略本身所建的文件夾
(指定不一樣虛擬用戶配置文件的路徑)
又是一組
Chown_uploads=yes (改變上傳文件的全部者爲root)
Chown_username=root
又是一組
Deny_email_enable=yes (是否容許禁止匿名用戶使用某些郵件地址)
Banned_email_file=//任意指定的路徑/xx/
又是單的
Pasv_enable=yes ( 服務器端用被動模式)
User_config_dir=/任意指定的路徑//任意文件目錄 (指定虛擬用戶存放配置文件的路徑)
VSFTP安全與效能兼備的ftp服務器
VSFTP 概述 
FTP,file transfer protocol,這是檔案傳輸的通信協議,也是通常最經常使用來傳送檔案的方式。讀者在使用 RedHat9 的時候,可能會感覺到ftp server 有一些改變:第一,就是ftp server 只剩下vsftp,原有的wuftp 等都沒放入﹔第二,就是vsftp 從XINETD 中獨立出來,並將設定檔從/etc/vsftpd.conf 之中移到/etc/vsftpd/vsftpd.conf。 爲何作這樣的改變?能夠想見的是vsftp 已有獨立運做的能力,不須要XINETD 來作更進一步的管控,而且相似sendmail、httpd、ssh、samba 等,將設定文件的放入/etc 下獨立的目錄。 
FTP 分爲兩類,一種爲PORT FTP,也就是通常的FTP﹔另外一類是PASVFTP,分述以下:
PORT FTP 這是通常形式的FTP,首先會創建控制頻道,默認值是port 21,也就是跟 port 21 創建聯機,並透過此聯機下達指令。第二,由FTP server 端會創建數據 傳輸頻道,默認值爲20,也就是跟port 20 創建聯機,並透過port 20 做數據的 傳輸。 
PASV FTP 跟PORT FTP 相似,首先會創建控制頻道,默認值是port 21,也就是跟 port 21 創建聯機,並透過此聯機下達指令。第二,會由client 端作出數據傳輸 的請求,包括數據傳輸port 的數字。 
這 二者的差別爲什麼?PORT FTP 當中的數據傳輸port 是由FTP server 指定, 而PASV FTP 的數據傳輸port 是由FTP client 決定。一般咱們使用PASV FTP, 是在有防火牆的環境之下,透過client 與server 的溝通,決定數據傳輸的port。 
範例 
直接啓動VSFTP 服務 
這個範例是套用 RedHat 的預設範例,直接啓動vsftp。 
[root@relay vsftpd]# /sbin/service vsftpd start 
Starting vsftpd for vsftpd: OK ] 
更換port 提供服務
將預設的port 21 更換爲2121 
爲了安全,或是以port 來區隔不一樣的ftp 服務,咱們可能會將ftp port 改成 21 以外的port,那麼,可參考如下步驟。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一行 
listen_port=2121 
Step2. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
特定使用者peter、john 不得變動目錄 
使用者的預設目錄爲/home/username,如果咱們不但願使用者在ftp 時可以 切換到上一層目錄/home,則可參考如下步驟。 
Step1. 修改/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 
Step2. 新增一個檔案: /etc/vsftpd/chroot_list 
內容增長兩行: 
peter 
john 
Step3. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
如果peter 欲切換到根目錄之外的目錄,則會出現如下警告: 
ftp> cd /home 
550 Failed to change directory. 
取消anonymous 登入 
如果讀者的主機不但願使用者匿名登入,則可參考如下步驟。 
Step1. 修改/etc/vsftpd/vsftpd.conf 將 
anonymous_enable=YES 改成 
anonymous_enable=NO 
Step2. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
安排歡迎話語 
如果咱們但願使用者在登入時,可以看到歡迎話語,可能包括對該主機的 說明,或是目錄的介紹,可參考如下步驟。 
首先肯定在/etc/vsftpd/vsftpd.conf 當中是否有底下這一行 
dirmessage_enable=YES 
RedHat9 的默認值是有上面這行的。 
接着,在各目錄之中,新增名爲.message 的檔案,再這邊假設有一個使用 者test1,且此使用者的根目錄下有個目錄名爲abc,那首先咱們在/home/test1 之下新增.message,內容以下: 
Hello~ Welcome to the home directory 
This is for test only... 
接着,在/home/test1/abc 的目錄下新增.message,內容以下: 
Welcome to abc’s directory 
This is subdir... 
那麼,當使用者test1 登入時,會看到如下訊息: 
230- Hello~ Welcome to the home directory 
230- 
230- This is for test only... 
230- 
如果切換到abc 的目錄,則會出現如下訊息: 
250- Welcome to abc’s directory 
250- 
250- This is subdir ... 
對於每個聯機,以獨立的process 來運做 
通常啓動vsftp 時,咱們只會看到一個名爲vsftpd 的process 在運做,但若 是讀者但願每個聯機,都能以獨立的process 來呈現,則可執行如下步驟。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一行 
setproctitle_enable=YES 
Step2. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
使用ps -ef 的指令,能夠看告不一樣使用者聯機的情形,以下圖所示: 
[root @home vsftpd]# ps -ef|grep ftp 
root 2090 1 0 16:41 pts/0 00:00:00 vsftpd: LISTENER 
nobody 2120 2090 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244: 
connected 
test1 2122 2120 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244/test1: 
IDLE 
nobody 2124 2090 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244: 
connected 
test2 2126 2124 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244/test2: 
IDLE 
root 2129 1343 0 17:20 pts/0 00:00:00 grep ftp 
[root @home vsftpd]# 
限制傳輸檔案的速度
本機的使用者最高速度爲200KBytes/s,匿名登入者所能使用的最高速度爲50KBytes/s 
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下兩行 
anon_max_rate=50000 
local_max_rate=200000 
Step2. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
在 這邊速度的單位爲Bytes/s,其中anon_max_rate 所限制的是匿名登入的 使用者,而local_max_rate 所限制的是本機的使用者。VSFTPD 對於速度的限制,範圍大概在80%到120%之間,也就是咱們限制最高速度爲100KBytes/s, 但實際的速度可能在80KBytes/s 到120KBytes/s 之間,固然,如果頻寬不足時,數值會低於此限制。 
針對不一樣的使用者限制不一樣的速度
假設test1 所能使用的最高速度爲250KBytes/s,test2 所能使用的最高速度爲500KBytes/s。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
新增底下一行 
user_config_dir=/etc/vsftpd/userconf 
Step2. 新增一個目錄:/etc/vsftpd/userconf 
mkdir /etc/vsftpd/userconf 
Step3. 在/etc/vsftpd/userconf 之下新增一個名爲test1 的檔案 
內容增長一行: 
local_max_rate=250000 
Step4. 在/etc/vsftpd/userconf 之下新增一個名爲test2 的檔案 
內容增長一行: 
local_max_rate=500000 
Step5. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
建置一個防火牆下的ftp server
使用PORT FTP mode,預設的ftp  port:21 以及ftp data port:20 啓動VSFTPD 以後執行如下兩行指令,只容許port 21 以及port 20 開放,其它關閉。 
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT 
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset 
建置一個防火牆下的ftp server
使用PORT FTP mode:ftp port:2121 以及ftp data port:2020 
Step1. 執行如下兩行指令,只容許port 2121 以及port 2020 開放,其它關閉。 
iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT 
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset 
Step2. 修改/etc/vsftpd/vsftpd.conf 
新增底下兩行 
listen_port=2121 
ftp_data_port=2020 
Step3. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
在這邊要注意,八、9 兩個例子中,ftp client(如cuteftp)的聯機方式不能  夠選擇passive mode,不然沒法創建數據的聯機。也就是讀者能夠連上ftp  server,可是執行ls、get 等等的指令時,便沒法運做。 
建置一個防火牆下的ftp server
使用PASS FTP mode:ftp port:2121 以及ftp data port 從9981 到9986。 
Step1. 執行如下兩行指令,只容許port 2121 以及port 9981-9990 開放,其它關 閉。 
iptables -A INPUT -p tcp -m multiport --dport 
2121,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT 
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset 
Step2. 修改/etc/vsftpd/vsftpd.conf 
新增底下四行 
listen_port=2121 
pasv_enable=YES 
pasv_min_port=9981 
pasv_max_port=9986 
Step3. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
在這邊要注意,在10 這個例子中,ftp client(如cuteftp)的聯機方式必須 選擇passive mode,不然沒法創建數據的聯機。也就是讀者能夠連上ftp  server,可是執行ls,get 等等的指令時,便沒法運做。 
將vsftpd 與TCP_wrapper 結合 
如果讀者但願直接在/etc/hosts.allow 之中定義容許或是拒絕的來源地址, 可執行如下步驟。這是簡易的防火牆設定。 
Step1. 肯定/etc/vsftpd/vsftpd.conf 之中tcp_wrappers 的設定爲YES,以下圖所 示: 
tcp_wrappers=YES 
這是 RedHat9 的默認值,基本上不需修改。 
Step2. 從新啓動vsftpd 
[root @home vsftpd]# /sbin/service vsftpd restart 
Shutting down vsftpd: OK ] 
Starting vsftpd for vsftpd: OK ] 
Step3. 設定/etc/hosts.allow,譬如提供111.22.33.4 以及10.1.1.1 到10.1.1.254 連 
線,則可作下圖之設定: 
vsftpd : 111.22.33.4 10.1.1. : allow 
ALL : ALL : DENY 
將vsftpd 併入XINETD 
如果讀者但願將vsftpd 併入XINETD 之中,也就是7.x 版的預設設定,那 麼讀者能夠執行如下步驟。 
Step1. 修改/etc/vsftpd/vsftpd.conf 
將 
listen=YES 
改成 
listen=NO 
Step2. 新增一個檔案: /etc/xinetd.d/vsftpd 
內容以下: 
service vsftpd 

disable = no 
socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/vsftpd 
port = 21 
log_on_success += PID HOST DURATION 
log_on_failure += HOST 

Step3. 從新啓動xinetd 
[root @home vsftpd]# /sbin/service xinetd restart 
Stopping xinetd: OK ] 
Starting xinetd: OK ] 
設定檔說明 
在範例中,有些省略的設定能夠在這邊找到,譬如聯機的總數、同一個位 址的聯機數、顯示檔案擁有者的名稱等等,但願讀者細讀後,能夠作出最適合本身的設定。 
vsftpd.conf 的內容很是單純,每一行即爲一項設定。如果空白行或是開頭爲#的一行, 將會被忽略。內容的格式只有一種,以下所示 
option=value  要注意的是,等號兩邊不能加空白,否則是不正確的設定。 


===ascii 設定===================== 
ascii_download_enable 
管控是否可用ASCII 模式下載。默認值爲NO。 
ascii_upload_enable 
管控是否可用ASCII 模式上傳。默認值爲NO。 
===個別使用者設定=================== 
chroot_list_enable 
若是啓動這項功能,則全部的本機使用者登入都可進到根目錄以外的數據夾,除了列 在/etc/vsftpd.chroot_list 之中的使用者以外。默認值爲NO。 
userlist_enable 
用法:YES/NO 
如果啓動此功能,則會讀取/etc/vsftpd.user_list 當中的使用者名稱。此項功能能夠在詢 問密碼前就出現失敗訊息,而不須要檢驗密碼的程序。默認值爲關閉。 
userlist_deny 
用法:YES/NO 
這 個選項只有在userlist_enable 啓動時纔會被檢驗。若是將這個選項設爲YES,則在 /etc/vsftpd.user_list 中的使用者將沒法登入﹔ 若設爲NO , 則只有在 /etc/vsftpd.user_list 中的使用者才能登入。並且此項功能能夠在詢問密碼前就出現錯誤訊息,而不須要檢驗密碼的程序。 
user_config_dir 
定 義個別使用者設定文件所在的目錄,例如定義user_config_dir=/etc/vsftpd/userconf, 且主機上有使用者test1,test2,那咱們能夠在user_config_dir 的目錄新增文件名爲 test1 以及test2。如果test1 登入,則會讀取user_config_dir 下的test1 這個檔案內的設定。默認值爲無。 
===歡迎語設定===================== 
dirmessage_enable 
若是啓動這個選項,使用者第一次進入一個目錄時,會檢查該目錄下是否有.message 這個檔案,如果有,則會出現此檔案的內容,一般這個檔案會放置歡迎話語,或是對該目錄的說明。默認值爲開啓。 
banner_file 
當使用者登入時,會顯示此設定所在的檔案內容,一般爲歡迎話語或是說明。默認值爲無。 
ftpd_banner 
這邊可定義歡迎話語的字符串,相較於banner_file 是檔案的形式,而ftpd_banner 是字串的格式。預設爲無。 
===特殊安全設定==================== 
chroot_local_user 
若是設定爲YES,那麼全部的本機的使用者均可以切換到根目錄之外的數據夾。預設值爲NO。 
hide_ids 
若是啓動這項功能,全部檔案的擁有者與羣組都爲ftp,也就是使用者登入使用ls -al 之類的指令,所看到的檔案擁有者跟羣組均爲ftp。默認值爲關閉。 
ls_recurse_enable 
如果啓動此功能,則容許登入者使用ls -R 這個指令。默認值爲NO。 
write_enable 
用法:YES/NO 
這個選項能夠控制FTP 的指令是否容許更改file system,譬如STOR、DELE、 RNFR、RNTO、MKD、RMD、APPE 以及SITE。預設是關閉。 
setproctitle_enable 
用法:YES/NO 
啓動這項功能,vsftpd 會將全部聯機的情況已不一樣的process 呈現出來,換句話說,使用ps -ef 這類的指令就能夠看到聯機的狀態。默認值爲關閉。 
tcp_wrappers 
用法:YES/NO 
若是啓動,則會將vsftpd 與tcp wrapper 結合,也就是能夠在/etc/hosts.allow 與 /etc/hosts.deny 中定義可聯機或是拒絕的來源地址。 
pam_service_name 
這邊定義PAM 所使用的名稱,預設爲vsftpd。 
secure_chroot_dir 
這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的權限,當vsftpd 不須要file system 的權限時,就會將使用者限制在此數據夾中。默認值爲/usr/share/empty 
===紀錄文件設定===================== 
xferlog_enable 
用法:YES/NO 
若是啓動,上傳與下載的信息將被完整紀錄在底下xferlog_file 所定義的檔案中。預設爲開啓。 
xferlog_file 
這個選項可設定紀錄文件所在的位置,默認值爲/var/log/vsftpd.log。 
xferlog_std_format 
若是啓動,則紀錄文件將會寫爲xferlog 的標準格式,如同wu-ftpd 通常。默認值爲關閉。 
===逾時設定====================== 
accept_timeout 
接受創建聯機的逾時設定,單位爲秒。默認值爲60。 
connect_timeout 
響應PORT 方式的數據聯機的逾時設定,單位爲秒。默認值爲60。 
data_connection_timeout 
創建數據聯機的逾時設定。默認值爲300 秒。 
idle_session_timeout 
發呆的逾時設定,如果超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線, 單位爲秒。默認值爲300。 
===速率限制====================== 
anon_max_rate 
匿名登入所能使用的最大傳輸速度,單位爲每秒多少bytes,0 表示不限速度。默認值爲0。 
local_max_rate 
本機使用者所能使用的最大傳輸速度,單位爲每秒多少bytes,0 表示不限速度。預設值爲0。 
===新增檔案權限設定================== 
anon_umask 
匿名登入者新增檔案時的umask 數值。默認值爲077。 
file_open_mode 
上傳檔案的權限,與chmod 所使用的數值相同。默認值爲0666。 
local_umask 
本機登入者新增檔案時的umask 數值。默認值爲077。 
===port 設定====================== 
connect_from_port_20 
用法:YES/NO 
若設爲YES,則強迫ftp-data 的數據傳送使用port 20。默認值爲YES。 
ftp_data_port 
設定ftp 數據聯機所使用的port。默認值爲20。 


listen_port 
FTP server 所使用的port。默認值爲21。 
pasv_max_port 
創建資料聯機所可使用port 範圍的上界,0 表示任意。默認值爲0。 
pasv_min_port 
創建資料聯機所可使用port 範圍的下界,0 表示任意。默認值爲0。 
===其它======================== 
anon_root 
使用匿名登入時,所登入的目錄。默認值爲無。 
local_enable 
用法:YES/NO 
啓動此功能則容許本機使用者登入。默認值爲YES。 
local_root 
本機使用者登入時,將被更換到定義的目錄下。默認值爲無。 
text_userdb_names 
用法:YES/NO 
當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。如果但願出現擁有者的名稱,則將此功能開啓。 默認值爲NO。 
pasv_enable 
如果設爲NO,則不容許使用PASV 的模式創建數據的聯機。默認值爲開啓。 
===更換檔案全部權=================== 
chown_uploads 
用法:YES/NO 
如果啓動,全部匿名上傳數據的擁有者將被更換爲chown_username 當中所設定的使用者。這樣的選項對於安全及管理,是頗有用的。默認值爲NO。 
chown_username 
這裏能夠定義當匿名登入者上傳檔案時,該檔案的擁有者將被置換的使用者名稱。預設值爲root。 
===guest 設定===================== 
guest_enable 
用法:YES/NO 
如果啓動這項功能,全部的非匿名登入者都視爲guest。默認值爲關閉。 
guest_username 
這裏將定義guest 的使用者名稱。默認值爲ftp。 
===anonymous 設定================== 
anonymous_enable 
用法:YES/NO 
管控使否容許匿名登入,YES 爲容許匿名登入,NO 爲不容許。默認值爲YES。 
no_anon_password 
如果啓動這項功能,則使用匿名登入時,不會詢問密碼。默認值爲NO。 
anon_mkdir_write_enable 
用法:YES/NO 
若是設爲YES,匿名登入者會被容許新增目錄,固然,匿名使用者必需要有對上層目錄的寫入權。默認值爲NO。 
anon_other_write_enable 
用法:YES/NO 
若是設爲YES,匿名登入者會被容許更多於上傳與創建目錄以外的權限,譬如刪除或是改名。默認值爲NO。 
anon_upload_enable 
用法:YES/NO 
若是設爲YES,匿名登入者會被容許上傳目錄的權限,固然,匿名使用者必需要有對上層目錄的寫入權。默認值爲NO。 
anon_world_readable_only 
用法:YES/NO 
若是設爲YES,匿名登入者會被容許下載可閱讀的檔案。默認值爲YES。 
ftp_username 
定義匿名登入的使用者名稱。默認值爲ftp。 
deny_email_enable 
如果啓動這項功能,則必須提供一個檔案/etc/vsftpd.banner_emails,內容爲email 
address
如果使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不容許聯機。默認值爲NO。 
===Standalone 選項================== 
listen 
用法:YES/NO 
如果啓動,則vsftpd 將會以獨立運做的方式執行,如果vsftpd 獨立執行,如 RedHat9 的默認值,則必須啓動﹔如果vsftpd 包含在xinetd 之中,則必須關閉此功能,如RedHat8。在RedHat9 的默認值爲YES。 
listen_address 
若 是vsftpd 使用standalone 的模式,可以使用這個參數定義使用哪一個IP address 提供這 項服務,如果主機上只有定義一個IP address,則此選項不需使用,如果有多個IP  address,可定義在哪一個IP address 上提供ftp 服務。如果不設定,則全部的IP address 均會提供此服務。默認值爲無。 
max_clients 
如果vsftpd 使用standalone 的模式,可以使用這個參數定義最大的總聯機數。超過這個數目將會拒絕聯機,0 表示不限。默認值爲0。 
max_per_ip 
如果vsftpd 使用standalone 的模式,可以使用這個參數定義每一個ip address 所能夠聯機的數目。超過這個數目將會拒絕聯機,0 表示不限。默認值爲0。 

FTP 數字代碼的意義  windows

110 從新啓動標記應答。 
120 服務在多久時間內ready。 
125 數據鏈路埠開啓,準備傳送。 
150 文件狀態正常,開啓數據鏈接端口。 
200 命令執行成功。 
202 命令執行失敗。 
211 系統狀態或是系統求助響應。  瀏覽器



212 目錄的狀態。 
213 文件的狀態。 
214 求助的訊息。 
215 名稱系統類型。 
220 新的聯機服務ready。 
221 服務的控制鏈接埠關閉,能夠註銷。 
225 數據連結開啓,但無傳輸動做。 
226 關閉數據鏈接端口,請求的文件操做成功。 
227 進入passive mode。 
230 使用者登入。 
250 請求的文件操做完成。 
257 顯示目前的路徑名稱。 
331 用戶名稱正確,須要密碼。 
332 登入時須要帳號信息。 
350 請求的操做須要進一部的命令。 
421 沒法提供服務,關閉控制連結。 
425 沒法開啓數據鏈路。 
426 關閉聯機,終止傳輸。 
450 請求的操做未執行。 
451 命令終止:有本地的錯誤。 
452 未執行命令:磁盤空間不足。 
500 格式錯誤,沒法識別命令。 
501 參數語法錯誤。 
502 命令執行失敗。 
503 命令順序錯誤。 
504 命令所接的參數不正確。 
530 未登入。 
532 儲存文件須要帳戶登入。 
550 未執行請求的操做。 
551 請求的命令終止,類型未知。 
552 請求的文件終止,儲存位溢出。 
553 未執行請求的的命令,名稱不正確。
 VSFTPd架設及要點補充
1。操做環境是 RedHat 9.0,vsFTPd的版本是Redhat 9.0所帶的vsftpd-1.1.3-8.i386.rpm,在安裝盤的第三張中
2。vsFTPd實現的最基本的目的:用系統中存在的真實用戶能登入FTP,能用匿名訪問。
3。 本帖中vsFTPd運行模式是在standalone模式下運行的,也就是說,本帖中vsFTPd全部的功能都是在standalone模式下運行的。至 於有些功能是否能在xinetd模式下運行,您就得測試了,不能照搬照抄。由於有些功能是必須運行在特定的模式下的。
4。服務器的IP和和DNS設定
第一塊網卡
IP:192.168.0.1
子掩碼:255.255.255.0
網關不設置:
第二塊網卡:
IP:192.168.0.2
子掩碼:255.255.255.0
網關不設置
因 爲個人操做環境是一個小型的局域網,因此其它的機器的IP都是在192.168.0這個網段上。ADSL是接在服務器的第一個網卡上。服務器的第二個網卡 是接集線器,其它的客戶機都是接在集線器上。爲了能讓ADSL訪問internet,由於本身手動設置了IP,因此DNS也要本身來設置,DNS以下:
202.96.134.133
202.96.168.68
設置工具是:
[root@linuxsir001 root]# RedHat-config-network
一。用vsFTPd來架設FTP服務器,vsFTPd服務器是目前最好的FTP服務器軟件,優勢是體積小,可定製強,效率高
1。查看是否安裝了vsFTPd軟件
[root@linuxsir001 root]# rpm -qa | grep vsftpd
若是沒有任何顯示,說明沒有把vsFTPd安裝上,若是出現的是下面的這樣的提示,就證實已經安裝上了。
[root@linuxsir001 root]# rpm -qa | grep vsftpd
vsftpd-1.1.3-8
我以 RedHat 9.0,以其自帶的vsFTPd包vsftpd-1.1.3-8版原本爲本帖約定。
[root@linuxsir001 root]# rpm -ivh vsftpd*.rpm
2。打開vsFTPd服務器。
[root@linuxsir001 root]# ntsysv
把vsftpd服務器打開,也就是在運行 ntsysv命令後,把vsftpd服務選中。
[*] vsftpd
3。運行/etc/init.d/vsftpd start
[root@linuxsir001 root]# /etc/init.d/vsftpd start
爲 vsftpd 啓動 vsftpd: [ 肯定 ]
[root@linuxsir001 root]#
4。 配製vsFTPd,vsFTPd的運行有兩種模式,一種是standalone "initd"模式,另一種是xinetd模式,上面咱們所說的就是standalone "initd"運行模式。兩種模式運行機制不是相同的,stardard initd模式,適合專業FTP,且FTP老是一直有人訪問,佔用資源也是比較大,若是您的FTP老是有人訪問和登入。就要用這種模式。若是您的FTP訪 問人數比較小,建議您用xinetd模式。xinetd模式,是當用戶請求時,vsFTPd纔會啓動。
不一樣的環境,固然得用不一樣的啓動模式。

1]咱們主要把vsFTPd的配製文件改一下就好了。配製文件在/etc/vsftpd/vsftpd.conf,用您喜歡的編輯器打開。請參考下面的配製文件。安全

# Example config file /etc/vsftpd.conf
#
# The default compiled in settings are very paranoid. This sample file服務器



# loosens things up a bit, to make the ftp daemon more usable.
#
# Allow anonymous FTP?
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in
# ASCII mode.
# These ASCII options are split into upload and download because you may wish
# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
# on the client anyway..
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
#enable for standalone mode
listen=YES
tcp_wrappers=YES
2]更改完配製文件後,咱們能夠用下面的命令來重啓vsFTPd服務器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
關閉 vsftpd: [ 肯定 ]
爲 vsftpd 啓動 vsftpd: [ 肯定 ]
[root@linuxsir001 root]#
3]以匿名方式來訪問測試,在text模式下:
注意:在text模式下,要用用戶名ftp,密碼ftp來訪問,這纔是在text中匿名訪問FTP。看以下的操做:
[root@linuxsir001 root]# ftp 192.168.0.1
Connected to 192.168.0.1.
220 (vsFTPd 1.1.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.0.1:root): ftp 這裏寫上ftp
331 Please specify the password.
Password:[這裏添寫ftp的密碼],匿名登入密碼也是ftp
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,1,137,151)
150 Here comes the directory listing.
drwxr-xr-x 6 0 0 4096 May 25 13:54 RedHat90
drwxr-xr-x 2 0 0 4096 Feb 28 19:21 pub
226 Directory send OK.
ftp>
那匿名用戶所訪問的是哪一個目錄?是/var/ftp這個目錄
出現問題的解決:有時出錯,是由於沒有ftp和nobody用戶,因此要在系統中添加這兩個用戶,通常的狀況下,這兩個用戶在系統中是存在的。看下面的操做。
[root@linuxsir001 root]# adduser ftp
adduser: user ftp exists
[root@linuxsir001 root]# adduser nobody
adduser: user nobody exists
從上面的操做中可知ftp和nobody用戶是存在的,因此沒有必要添加ftp和nobody用戶了。若是不存在,必定要添加這兩個用戶,不然會出現匿名用戶不能訪問的狀況。
4]若是要以系統中存在的普通用戶登入FTP,也沒有什麼能夠設置的,添加一個用戶就行。好比我要添加beinan這個用戶,就要用下面的辦法
[root@linuxsir001 root]# adduser beinan
[root@linuxsir001 root]# passwd beinan
Changing password for user beinan.
New password:


BAD PASSWORD: it does not contain enough DIFFERENT characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@linuxsir001 root]#
這樣的話,就在/home目錄中出現一個beinan的用戶目錄:以下:
[root@linuxsir001 root]# ls /home/
beinan
若是咱們想讓beinan這個用戶做爲虛擬用戶,也就是說,beinan這個用戶是不能登入系統的,只能是登入FTP。 那這樣的用戶應該如何添加呢??
[root@linuxsir001 backupNow]# adduser -g ftp -s /sbin/nologin beinan
[root@linuxsir001 backupNow]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@linuxsir001 backupNow]#
注: 這僅僅是vsFTPd添加虛擬用戶的一個方法,還有更好的辦法須要咱們去學習!另外的辦法也在測試之中。嚴格上來講,這種辦法不能算虛擬用戶。還有另外的 一個辦法,就是經過pam認證,用db_load來添加用戶,目前我也弄成功了,不過相對要複雜一點。正在測試之中。
若是咱們想把用戶目錄定位到別的目錄應該怎麼辦呢??這個也比較簡單,看一下useradd就比較明白了。好比我想添加beinan這個用戶,並把目錄放在/opt目錄中:以下操做:
[root@linuxsir001 root]# adduser -d /opt/beinan beinan
[root@linuxsir001 root]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
若是是添加虛擬用戶,也就是不讓用戶登入系統,只能登入FTP的用戶。若是咱們想把beinan這個用戶目錄定位在/opt/beinan這個目錄中,根據上面的方法。咱們應該以下操做
[root@linuxsir001 backupNow]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
[root@linuxsir001 backupNow]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@linuxsir001 backupNow]#
看一下是否是已經成功添加到了beinan這個用戶,並把beinan的家目錄放在了/opt目錄中呢??
[root@linuxsir001 root]# ls /opt/
beinan
證實已經成功。
咱們能夠在text模式下以beinan用戶登入,而後來訪問ftp。
[root@linuxsir001 root]# ftp 192.168.0.1
Connected to 192.168.0.1.
220 (vsFTPd 1.1.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.0.1:root): beinan
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
是否是成功了???
咱們也能夠用gftp來訪問beinan用戶,並上傳相應的東西,所傳上的東西就放在beinan用戶所在的家目錄中,普通用戶的家目錄在哪裏,寫您所用的添加用戶的方法有關。我在前面已經說了兩種辦法,一種是默認的添加方法,就是放在/home目錄中。
在本例中,我是採用默認的添加用戶的方法。也就是不特別指定用戶用戶,這樣的話,用戶目錄就在/home目錄中。好比用beinan登入FTP時,訪問的就是/home/beinan這個目錄。讓傳的東西也在這個目錄中。
那匿名用戶所訪問的是哪一個目錄呢???
應該是:/var/ftp這個目錄
5]訪問ftp的幾種方法
第一種方法就是text訪問,也就是用ftp命令來訪問。這個前面已經說過了。
第 二種方法是以客戶端FTP軟件來訪問,在linux中有gftp。在本例中,個人FTP地址是經過局域網訪問的。地址欄中,添上192.168.0.1, 端口是21,用戶名和密碼的添寫,若是您是用匿名登入,請不要添寫用戶名和密碼。若是用普通用戶登入,這個是必需要用用戶名和密碼的。
第三種辦法是和瀏覽器訪問:若是匿名登入,就直接用下面的方法:
ftp://192.168.0.1
若是是用戶登入方式,應該是
ftp://beinan@192.168.0.1
若是想讓在互聯網上的用戶能訪問到,若是您是用ADSL來訪問互聯網,要查找到您的動態IP,用下面的辦法
[root@linuxsir001 root]# ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:218.61.7.23 P-t-P:218.61.7.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:24245 errors:0 dropped:0 overruns:0 frame:0
TX packets:20411 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:23103297 (22.0 Mb) TX bytes:3588337 (3.4 Mb)
從上面的能夠知道,能讓在internet訪問的地址是:218.61.7.23
二。如何讓局域網經過這個FTP安裝Linux呢??以 RedHat 9.0爲例:
1。咱們要在/var/ftp中,爲每一個發行版建一個目錄,而後把每一個發行版的每一個版本再建一個目錄。把每一個版本的ISO都解壓到相應的目錄裏。舉個例子:
好比我想讓其它的客戶機,經過個人服務器來安裝 RedHat9.0,我就要在/var/ftp目錄中建一個RedHat90的目錄,而後把RedHat 9.0的三個ISO都解到這個目錄中。
這樣服務器的設置就完成了。
2。客戶機方面如何引導及設置???咱們能夠作一個系統的引志盤,但有的發行版也沒有必要。這也要以各個發行版的狀況而定。好比 RedHat 9.0的安裝,若是您的客戶機上有windows,就直接經過局域網的FTP,dosutils images isolinux三個目錄放到一個在fat32分區中建的目錄中,好比說在客戶機上建一個Redhat9的目錄,而後把三個文件拷到客戶機中的fat32 分區中的Redhat9的目錄中。
3.客戶機安裝及操做:
以DOS盤引導,不要加載CDROM,直接進入客戶機中fat32分區 RedHat9dosutils目錄,執行下面的命令。
autoboot
這樣就開始了安裝:
4.出現的畫面中,咱們要選ftp安裝。在設置網絡環境時,咱們要設置好IP和網關之類的。
以個人局域網爲例:
客戶機的IP設置成192.168.0.5,掩碼也是2552555.255.0,網關設置成192.168.0.1。name 服務能夠不設置。以匿名方式訪問FTP。
下一步會出現讓咱們添寫FTP,及安裝源的地址,仍是以個人局域網爲例:
地址:192.168.0.1
路徑:由於我是把三個ISO放在了/var/ftp/ RedHat90的目錄下,我應該寫以下的
/ RedHat90
這樣就OK了,一切和其它的安裝方式都是同樣的了。
由於每一個發行版不太同樣,因此經過網絡安裝,有的要作引導盤,如何作引導盤,我想你們早就知道了。若是不知道這方面的,請用搜索來找這方面的帖子。
vsFTP服務器,相關的一系統補充
補充一:如何有選擇的把用戶限制在家目錄中呢?
咱們要本身建一個文件,在/etc目錄中
#touch /etc/vsftpd.chroot_list
以beinan和nanbei這兩個用戶限制在他們所在的家目錄中,而其它的FTP用戶不作此限制。
在vsftpd.chroot_list這個文件中,把beinan和nanbei添上去就行,注意,每一個用戶佔一行。
beinan
nanbei
而後改/etc/vsftpd/vsftpd.conf文件,找以下的兩行
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
把前面的#號去掉,也就是這樣的
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
若是沒有這樣的兩行,就能夠本身添加上去也是同樣的。
設置好後,從新vsFTPD服務器。
補充一之補充:如何把系統內全部的FTP用戶都限制在家目錄中呢??經juliaugong兄的提示,我查找了vsFTPd的洋文說明,證實這個選項是一刀切的解決全部的用戶都能限制在家目錄中
咱們能夠經過更改vsftpd.conf文件,加入以下的一行
chroot_local_user=YES
改完配製文件,不要忘記重啓vsFTPd服務器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart


關閉 vsftpd: [ 肯定 ]
爲 vsftpd 啓動 vsftpd: [ 肯定 ]
[root@linuxsir001 root]#
補充二:打開vsFTP服務器的日誌功能:
把下面xferlog_file前面的#號對掉,也就是把vsftp的log功能打開,這樣咱們就能在/var/log目錄下查看vsftpd.log。這是vsFTP的日誌功能,這對於咱們來講是極爲重要的。
#xferlog_file=/var/log/vsftpd.log
補充三:如何讓綁定IP到vsFTP?也就是說,如何讓用戶只能經過某個IP來訪問FTP。其實這個功能頗有意思。若是綁定的是內網的IP,外部是沒有辦法訪問的。若是綁定的是對外服務的IP,內網也只能經過對外服務的IP來訪問FTP
在/etc/vsftpd/vsftpd.conf中加一行,以個人局域網爲例,請看第一帖中的操做環境,這樣外網就不能訪問個人FTP了,內網也可能經過192.168.0.2來訪問FTP
listen_address=192.168.0.2
加完後,要重啓vsFTP服務器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
關閉 vsftpd: [ 肯定 ]
爲 vsftpd 啓動 vsftpd: [ 肯定 ]
[root@linuxsir001 root]#
補充四:如何讓vsFTP服務器限制連接數,以及每一個IP最大的連接數??
答:應該改vsFTP服務器的配製文件vsftpd.conf,加入下面的兩行:
max_clients=數字
max_per_ip=數字
舉例:我想讓個人vsFTP最大支持連接數爲100個,每一個IP,最多能支持5個連接,因此我應該在vsftpd.conf中加上以下的兩行:
max_clients=100
max_per_ip=5
改好了配製文件,不要忘記啓動vsftp服務器。
補充五:如何限制下載的速度?
anon_max_rate=數字 注:這是匿名的下載速度
local_max_rate=數字 注:這是vsFTP服務器上普通用戶的下載速度
注:這個數字的單位是字節,因此咱們要計算一下。好比我想讓匿名用戶和vsFTP上的用戶都以80KB下載,因此這個數字應該是1024x80=81920
因此咱們要在vsftpd.conf中加入下面的兩行
anon_max_rate=81920
local_max_rate=81920
不要忘記重啓vsftpd服務
補充六:個人硬盤空間有限,如何把賬號ftp默認的路徑/var/ftp更改到別處?或者是,個人linux全部的目錄都放在/根分區,由於空間緊張,我可否把ftp這個用戶的默認路徑放到別的分區??
能夠,應該以下操做!
首先要把ftp這個用戶刪除
#userdel -r ftp
會有錯誤信息,不過不用理,這是正常的。
而後咱們再把這個用戶添加上,好比我想爲賬號ftp的家目錄設置在/mnt/LinG/ftp,咱們就能夠以下操做
[root@linuxsir001 root]# mkdir /mnt/LinG
[root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp
僅僅是這樣作還不行,由於這樣仍是不能讓匿名用戶找到它的家目錄,因此咱們必須改變/mnt/LinG/ftp這個目錄的權限。
[root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/
[root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/
補充七:如何定製歡迎信息,也就是咱們登入有些FTP以後,會出現相似:歡迎您來到LinuxSir FTP,在這裏,您會獲得最真誠的幫助,若是有什麼問題和建議,請來信,多謝。
實現這個並不難,咱們能夠查看vsftpd.cof文件中,是否有這行。
dirmessage_enable=YES
若是沒有就加上,若是dirmessage_enable=YES前面有#號,就把#號去掉。
而後咱們制定一個.message文件,寫上您想要寫的東西,好比是.message的內容是以下的:
歡迎您來到LinuxSir FTP!
在這裏,您會獲得最真誠的幫助;
若是有什麼問題和建議,請來信,多謝。
咱們能夠用編輯器來寫這個.message,我想這個過程就不用說了吧。
而後咱們把.message這個文件複製到各個用戶的家目錄中。好比個人FTP的一個用戶是beinan,這個用戶所在的家目錄是/home/beinan
我 們就要把.message放在/home/beinan這個目錄下。若是系統用戶ftp,他的目錄就是/var/ftp這個目錄,這個是默認的,當匿名用 戶登入時就訪問的是/var/ftp這個目錄。咱們要讓匿名用戶能看到歡迎信息。就要把.message放在/var/ftp目錄中。其它的用戶,也無非 就是相似的操做。
補充八:如何實現虛擬路徑?
好比:
/home/a 映射爲 ftp://localhost/a
/home/b/c 則爲 ftp://localhost/c
其實這個不能說是vsFTPd的內容,其實咱們早就接觸過了,可能咱們沒有注意,咱們能夠經過以下的方法來實現。
#mount --bind [原有的目錄] [新目錄]
好比個人ftp的默認目錄是/var/ftp,我想把/mnt/LinG/WinSoft文件夾,映射到/var/ftp目錄中,我就以下操做
咱們要先在/var/ftp目錄中建一個目錄
#mkdir /var/ftp/WinSoft
而後執行mount命令
#mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft
這樣就OK了。
補充九:如何上匿名訪問、上傳,並支持下載和執行?
在默認的狀況下,vsftp是不支持匿名用戶的訪問的,因此咱們要本身打開相應的選項。如今我針對這個問題,咱們要打開以下的選項。
anonymous_enable=YES 注:容許匿名訪問
anon_upload_enable=YES 注:容許上傳
anon_mkdir_write_enable=YES 注:容許創建相應的目錄
anon_umask=022 把上傳到FTP的文件或者目錄改變權限
當 然打開這些選項仍是不行的,咱們還要讓匿名寫入文件的上一級目錄有寫入權,以我所作的FTP爲例,我所作的FTP的匿名訪問的目錄是/var/ftp,在 vsFTPd中,/var/ftp這個目錄是不能讓匿名用戶有寫入權限的,這是爲了安全考慮,因此咱們必須本身在/var/ftp目錄中建一個目錄,讓這 個目錄有寫入權。
好比:我在/var/ftp目錄建一個upload目錄,而後把它的權限設置成777,這樣匿名用戶就能寫入了。
#mkdir /var/ftp/upload
#chmod 777 /var/ftp/upload
改了一系列的文件,不要忘記重啓vsFTPd服務器
我是用standalone模式的,固然用下面的方法
[root@linuxsir001 root]# service vsftpd restart
關閉 vsftpd: [ 肯定 ]
爲 vsftpd 啓動 vsftpd: [ 肯定 ]
[root@linuxsir001 root]#
若是您用的是xinetd模式來啓動vsFTPd,咱們要重啓xinetd服務器
[root@linuxsir001 root]# service xinetd restart
中止 xinetd: [ 肯定 ]
啓動 xinetd: [ 肯定 ]
[root@linuxsir001 root]# ]
補充十:經過pam認證方式,添加虛擬用戶
經過pam認證,用db_load添加用戶,是真正的虛擬用戶。如今咱們簡單的介紹一下,經過之後的學習,咱們再深刻補充:
1。在/etc/pam.d/目錄中建立一個文件ftp
[root@linuxsir001 root]# touch /etc/pam.d/ftp
2。在/etc/pam.d/ftp裏面加上以下的兩行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
3。建立一系統的用戶名用密碼的文件logins.txt
[root@linuxsir001 root]# touch logins.txt
在 logins.txt文件中,輸入以下的內容。這個內容您能夠本身來定。好比我下面的。其實linuxsir007是FTP的虛擬用戶名,123456是 linuxsir007的密碼;linuxsir008是虛擬用戶名,234567是linuxsir008的密碼,以此類推,您想加入幾個就是幾個;下 面是我添加的FTP的虛擬用戶名和密碼。
linuxsir007
123456
linuxsir008
234567
linuxsir009
567890
linuxsir010
678901
linuxsir011
789012
4。建立一個真實的用戶名linuxsir006,這個linuxsir006的用戶,所在的家目錄由您來定。我在這裏很少說了。我是按系統默認的來添加的。
[root@linuxsir001 root]# useradd linuxsir006
5。把/etc/hosts複製到/home/linuxsir006,並改變它的屬主
[root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts
[root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts
6。經過db_load來建立虛擬用戶的庫文件。咱們在前面建的logins.txt文件,我是放在了/root用戶目錄下。因此我們得把目錄切換到/root目錄來建立虛擬用戶的庫文件。
[root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
7。更改vsftpd.conf文件,加入以下的幾行
pam_service_name=ftp
guest_enable=YES
guest_username=linuxsir006
anon_world_readable_only=NO
8。重啓vsFTPd服務器;改了一系列的文件,不要忘記重啓vsFTPd服務器
我是用standalone模式的,固然用下面的方法
[root@linuxsir001 root]# service vsftpd restart
關閉 vsftpd: [ 肯定 ]
爲 vsftpd 啓動 vsftpd: [ 肯定 ]
[root@linuxsir001 root]#
若是您用的是xinetd模式來啓動vsFTPd,咱們要重啓xinetd服務器
[root@linuxsir001 root]# service xinetd restart
中止 xinetd: [ 肯定 ]
啓動 xinetd: [ 肯定 ]
[root@linuxsir001 root]#
9。若是您想讓用戶登入FTP時,登入成功的相應的信息,請把您製做的.message複製到您的用戶的家目錄中,這方面的請參考前面的補充。
10。測試:
[root@linuxsir001 root]# ftp 192.168.0.1
Connected to 192.168.0.1.
220 (vsFTPd 1.1.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.0.1:root): linuxsir007
331 Please specify the password.
Password:
230-歡迎光臨LinuxSir自由FTP
230-在這裏,您將獲得最真誠的幫助!
230-本站限度爲30KB!
230-每一個IP限四個線程
230-請你們遵照FTP的有關規定。
230-多謝合做!
230-
230-LinuxSir管理部
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,1,85,171)
150 Here comes the directory listing.
-rw-r--r-- 1 ftp ftp 174 Jun 01 12:59 hosts
drwxr-xr-x 3 ftp ftp 4096 Jun 01 13:29 linuxsir008
drwxr-xr-x 2 ftp ftp 4096 Jun 01 13:24 sun
226 Directory send OK.
ftp>
補充十一:如何把 RedHat 9.0中系統默認安裝的vsftpd-1.1.3-8.i386.rpm,系統默認vsFTPd是用standalone啓動方式 ,改成xinetd啓動方式 ?
若是是用源碼包安裝的,安裝後就是xinetd模式,若是是用RPM包安裝的,在 RedHat 9.0中,應該用下面的方法來解決。 1.在/etc/xinetd.d/目錄中建立一個文件vsftpd [root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd /etc/xinetd.d/vsftpd內容以下: service ftp { socket_type = stream wait = no user = root server = /usr/sbin/vsftpd # server_args = # log_on_success += DURATION USERID # log_on_failure += USERID nice = 10 disable = no } 2。 複製vsftpd.conf到/etc/目錄下,由於xinetd對vsFTPd配製文件應該在/etc目錄下,因此咱們就必須把這個文件複製到/etc 目錄下,不然會出現系統中local用戶沒法登入,也就是說,不復制這個文件會出現ftp非匿名用戶沒法訪問,只能用匿名用戶訪問。 [root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf 3。更改配製文件/etc/vsftpd.conf,把以下的項注掉: 也就是把 listen=YES改成 #listen=YES 或者是把這行刪除也行。 4。把/etc/init.d/vsftpd這個文件刪除。其實最好的備份到別處,由於咱們有時實驗來實驗去,可能還會轉到standalone模式啓動。我就直接移動到別的目錄,好比是/root下面的backup目錄。 [root@linuxsir001 root]#mkdir /root/backup [root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup 5。運行ntsysv,把vsftpd的服務取消 [root@linuxsir001 root]#ntsysv [ ] vsftpd 6。重啓xinetd服務 [root@linuxsir001 root]# service xinetd restart
相關文章
相關標籤/搜索