天天看點

linux下vsftp安裝配置詳解

一:簡介

FTP是File Transfer Protocol(檔案傳輸協定)的縮寫,用來在兩台計算機之間互相傳送檔案。相比于HTTP,FTP協定要複雜得多。複雜的原因,是因為FTP協定要用到兩個TCP連接配接,一個是指令鍊路,用來在FTP用戶端與伺服器之間傳遞指令;另一個是資料鍊路,用來上傳或下載下傳資料。 

FTP協定有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。 

PORT(主動)方式的連接配接過程是:用戶端向伺服器的FTP端口(預設是21)發送連接配接請求,伺服器接受連接配接,建立一條指令鍊路。 當需要傳送資料時,用戶端在指令鍊路上用 PORT指令告訴伺服器:“我打開了****端口,你過來連接配接我”。于是伺服器從20端口向用戶端的****端口發送連接配接請求,建立一條資料鍊路來傳送資料。 

PASV(被動)方式的連接配接過程是:用戶端向伺服器的FTP端口(預設是21)發送連接配接請求,伺服器接受連接配接,建立一條指令鍊路。 當需要傳送資料時,伺服器在指令鍊路上用 PASV指令告訴用戶端:“我打開了****端口,你過來連接配接我”。于是用戶端向伺服器的****端口發送連接配接請求,建立一條資料鍊路來傳送資料。 

從上面可以看出,兩種方式的指令鍊路連接配接方法是一樣的,而資料鍊路的建立方法就完全不同。而FTP的複雜性就在于此。 

 vsftp提供3種遠端的登入方式:

(1)匿名登入方式

  就是不需要使用者名,密碼。就能登入到伺服器電腦裡面

(2)本地使用者方式

  需要帳戶名和密碼才能登入。而且,這個帳戶名和密碼,都是在你linux系統裡面,已經有的使用者。

(3)虛拟使用者方式

  同樣需要使用者名和密碼才能登入。但是和上面的差別就是,這個使用者名和密碼,在你linux系統中是沒有的(沒有該使用者帳号)

二:安裝

1、配置相關服務 

啟動服務: 

[root@localhost root]#yum install vsftpd;安裝vsftpd服務 

#/etc/init.d/vsftpd start ;啟動服務 

#chkconfig --level 235 vsftpd on ;讓系統服務随着系統啟動而啟動 

配置相關文檔: 

#vi /etc/vsftpd/vsftpd.conf 

 ######### 核心設定 ###########

local_enable=YES                                 # 允許本地使用者登入

write_enable=YES                                 # 本地使用者的寫權限  

local_root=/home                                    #系統賬戶對應的ftp根目錄

local_umask=027                                  #設定上傳檔案的權限(777減去此數的權限)

local_max_rate=3000000                       #限制系統使用者傳輸速率,機關bite

dirmessage_enable=YES                       # 切換目錄時,是否顯示目錄下.message的内容

dirlist_enable = NO

pam_service_name=vsftpd                    #vsftpd驗證方式

connect_from_port_20=YES                  #啟用FTP資料端口的資料連接配接

listen=YES                                          #以獨立的FTP服務運作

listen_port=2121                                   # 修改連接配接端口,預設值為21。

ftp_data_port=2020                               # 修改資料端口,預設值為20。此參數用于PORT FTP模式。

port_enable=YES                                 #如果你要在資料連接配接時取消PORT模式時,設此選項為NO。預設值為YES

port_promiscuous=NO                          #取消PORT安全檢查。該檢查確定外出的資料隻能連接配接到用戶端上。小心打開此選項

#async_abor_enable=NO                      #設定支援異步傳輸功能。

#ascii_upload_enable=YES                   #設定支援ASCII模式的上傳功能。

#ascii_download_enable=YES               #設定支援ASCII模式的下載下傳功能。

######### 匿名登入設定 ###########

anonymous_enable=NO                         #禁止匿名 

anon_root=/data                                    #匿名賬戶對應的ftp根目錄

anon_upload_enable=YES                     #如果允許匿名登入,是否允許虛拟使用者和匿名使用者上傳

anon_mkdir_write_enable=YES              #如果允許匿名登入,是否允許匿名建立檔案夾并在檔案夾内上傳檔案

anon_other_write_enable=YES               #如果允許匿名登入,允許虛拟使用者和匿名使用者修改檔案名和删除檔案

anon_max_rate=30000                           #如果允許匿名登入,限制匿名使用者傳輸速率,機關bite

 ######### 使用者限制設定 ###########

#### 限制登入

userlist_enable=yes                               # 用userlist來限制使用者通路

userlist_deny=no                                   # YES禁止檔案中的使用者登入,NO,隻允許在檔案中的使用者登入FTP伺服器。

userlist_file=/etc/vsftpd.user_list            # 被讀取的包含使用者清單的檔案

#### 限制目錄

chroot_list_enable=NO                          # 鎖定某些使用者在自家目錄中,是否調用限制在家目錄的使用者名單

chroot_local_user=YES                         # 是否限制所有使用者都在家目錄

chroot_list_file=/etc/vsftpd/chroot_list    #限制在家目錄的使用者名單所在路徑,檔案格式為一行一使用者

注:通過搭配能實作以下幾種效果:

①當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list檔案中列出的使用者,可以切換到其他目錄;未在檔案中列出的使用者,不能切換到其他目錄。

②當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list檔案中列出的使用者,不能切換到其他目錄;未在檔案中列出的使用者,可以切換到其他目錄。

③當chroot_list_enable=NO,chroot_local_user=YES時,所有的使用者均不能切換到其他目錄。

④當chroot_list_enable=NO,chroot_local_user=NO時,所有的使用者均可以切換到其他目錄。

######### 日志設定 ###########

xferlog_enable=YES                              #打開日志記錄

xferlog_file=/var/log/vsftpd.log                #日志存放位置

xferlog_std_format=YES                        #标準日志格式

 ######### 安全設定 ###########

idle_session_timeout=600                      #使用者空閑逾時,機關秒

data_connection_timeout=120                #資料連接配接空閑逾時,機關秒

accept_timeout=60                               # 将用戶端空閑1分鐘後斷開

connect_timeout=60                             # 中斷1分鐘後重新連接配接

local_max_rate=50000                          # 本地使用者傳輸速率,機關bite

max_clients=200                                  # FTP的最大連接配接數

max_per_ip=5                                      # 每個IP允許的連接配接數,0表示沒有限制,需要運作于獨立模式方可

######### 被動模式設定 ###########

pasv_enable=NO                                  #是否使用PASV被動模式

pasv_min_port=5000                            # 被動模式最小端口,0 表示任意。

pasv_max_port=6000                           # 被動模式最大端口,0 表示任意。

pasv_promiscuous=NO                        #PASV模式的安全檢查,該檢查確定資料連接配接和控制連接配接是來自同一個IP位址,小心打開此選項。

######### 其他設定 ###########

ftpd_banner=Welcome to Ftp Server!             #歡迎資訊

######### 虛拟使用者配置檔案###########

guest_enable=YES                               #允許虛拟使用者

guest_username=ftpadmin                    #指定虛拟使用者的宿主使用者

virtual_use_local_privs=NO                   #設定虛拟使用者的權限符合他們的宿主使用者

user_config_dir=/etc/vsftpd/vsftpd_user_conf          #設定虛拟使用者個人Vsftp的配置檔案存放路徑。也就是說,這個被指定的目錄裡,将存放每個Vsftp虛拟使用者個性的配置檔案,一個需要注意的地方就是這些配置檔案名必須和虛拟使用者名相同

2、添加虛拟主機使用者 

添加使用者abc,使用者目錄指定為/data/abc,且此使用者不能登陸系統. 

#/usr/sbin/adduser -d /home -s /sbin/nologin ftpadmin

注-s /sbin/nologin是讓其不能登陸系統,-d 是指定使用者目錄為/data/abc 

#passwd ftpadmin  設定密碼 

#chown –R ftpadmin:ftpadmin /home

注:将使用者目錄及其子目錄的所有和所屬的組設定為home

三:相關的配置詳解

1.匿名使用者相關設定 

當virtual_use_local_privs=YES時,虛拟使用者和本地使用者有相同的權限;

當virtual_use_local_privs=NO時,虛拟使用者和匿名使用者有相同的權限,預設是NO。

當virtual_use_local_privs=YES,write_enable=YES時,虛拟使用者具有寫權限(上傳、下載下傳、删除、重命名)。

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,

anon_upload_enable=YES時,虛拟使用者不能浏覽目錄,隻能上傳檔案,無其他權限。

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=NO時,虛拟使用者隻能下載下傳檔案,無其他權限。

anon_upload_enable=YES時,虛拟使用者隻能上傳和下載下傳檔案,無其他權限。

anon_mkdir_write_enable=YES時,虛拟使用者隻能下載下傳檔案和建立檔案夾,無其他權限。

anon_other_write_enable=YES時,虛拟使用者隻能下載下傳、删除和重命名檔案,無其他權限。

2.FTP伺服器的流量控制 

如何對指定使用者進行流量限制呢? 

#vi /etc/vsftpd/vsftpd.conf,添加一行: 

user_config_dir=/etc/vsftpd/vsftpd_user_conf   虛拟賬戶的配置目錄,會覆寫vsftpd.conf的配置

#touch /etc/vsftpd/vsftpd_user_conf/test01 為test01這個使用者建立一個test01檔案 

#vi /etc/vsftpd/vsftpd_user_conf/test01 添加以下内容 

local_max_rate=100000 

儲存重新開機服務即可. 

四、啟動服務: 

#chkconfig vsftpd on ;讓系統服務随着系統啟動而啟動

到此,整個小巧的ftp伺服器搭建成功。可以使用FileZilla FTP或FlashFXP等用戶端軟體登陸ftp server了。

本文轉自奔跑在路上部落格51CTO部落格,原文連結http://blog.51cto.com/qiangsh/1582286如需轉載請自行聯系原作者

qianghong000

繼續閱讀