歡迎您光臨本站 註冊首頁

vsftpd配置文件詳解

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

vsftpd配置文件詳解

vsftpd配置文件詳解



1.默認配置:


1>允許匿名用戶和本地用戶登陸。


anonymous_enable=YES


local_enable=YES


2>匿名用戶使用的登陸名為ftp或anonymous,口令為空;匿名用戶不能離開匿名

用戶家目錄/var/ftp,且只能下載不能上傳。


3>本地用戶的登錄名為本地用戶名,口令為此本地用戶的口令;本地用戶可以在自己家目錄中進行讀寫操作;本地用戶可以離開自家目錄切換至有許可權訪問的其他目錄,並在許可權允許的情況下進行上傳/下載。



write_enable=YES


4>寫在文件/etc/vsftpd.ftpusers中的本地用戶禁止登陸。




2.配置文件格式:



vsftpd.conf 的內容非常單純,每一行即為一項設定。若是空白行或是開頭為#的一行,將會被忽略。內容的格式只有一種,如下所示


option=value


要注意的是,等號兩邊不能加空白。



3.匿名用戶(anonymous)設置


anonymous_enable=YES/NO(YES)


控制是否允許匿名用戶登入,YES 為允許匿名登入,NO 為不允許。默認值為YES。


write_enable=YES/NO(YES)


是否允許登陸用戶有寫許可權。屬於全局設置,默認值為YES。


no_anon_password=YES/NO(NO)


若是啟動這項功能,則使用匿名登入時,不會詢問密碼。默認值為NO。


ftp_username=ftp


定義匿名登入的使用者名稱。默認值為ftp。


anon_root=/var/ftp


使用匿名登入時,所登入的目錄。默認值為/var/ftp。注意ftp目錄不能是777的許可權屬性,即匿名用戶的家目錄不能有777的許可權。


anon_upload_enable=YES/NO(NO)


如果設為YES,則允許匿名登入者有上傳文件(非目錄)的許可權,只有在write_enable=YES時,此項才有效。當然,匿名用戶必須要有對上層目錄的寫入權。默認值為NO。


anon_world_readable_only=YES/NO(YES)


如果設為YES,則允許匿名登入者下載可閱讀的檔案(可以下載到本機閱讀,不能直接在FTP伺服器中打開閱讀)。默認值為YES。


anon_mkdir_write_enable=YES/NO(NO)


如果設為YES,則允許匿名登入者有新增目錄的許可權,只有在write_enable=YES時,此項才有效。當然,匿名用戶必須要有對上層目錄的寫入權。默認值為NO。


anon_other_write_enable=YES/NO(NO)


如果設為YES,則允許匿名登入者更多於上傳或者建立目錄之外的許可權,譬如刪除或者重命名。(如果anon_upload_enable=NO,則匿名用戶不能上傳文件,但可以刪除或者重命名已經存在的文件;如果anon_mkdir_write_enable=NO,則匿名用戶不能上傳或者新建文件夾,但可以刪除或者重命名已經存在的文件夾。)默認值為NO。


chown_uploads=YES/NO(NO)


設置是否改變匿名用戶上傳文件(非目錄)的屬主。默認值為NO。


chown_username=username


設置匿名用戶上傳文件(非目錄)的屬主名。建議不要設置為root。


anon_umask=077


設置匿名登入者新增或上傳檔案時的umask 值。默認值為077,則新建檔案的對應許可權為700。


deny_email_enable=YES/NO(NO)


若是啟動這項功能,則必須提供一個檔案/etc/vsftpd/banner_emails,內容為email address。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許進入。默認值為NO。


banned_email_file=/etc/vsftpd/banner_emails


此文件用來輸入email address,只有在deny_email_enable=YES時,才會使用到此檔案。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許進入。



4.本地用戶設置


local_enable=YES/NO(YES)


控制是否允許本地用戶登入,YES 為允許本地用戶登入,NO為不允許。默認值為YES。


local_root=/home/username


當本地用戶登入時,將被更換到定義的目錄下。默認值為各用戶的家目錄。


write_enable=YES/NO(YES)


是否允許登陸用戶有寫許可權。屬於全局設置,默認值為YES。


local_umask=022


本地用戶新增檔案時的umask 值。默認值為077。


file_open_mode=0755


本地用戶上傳檔案后的檔案許可權,與chmod 所使用的數值相同。默認值為0666。



5.歡迎語設置


dirmessage_enable=YES/NO(YES)


如果啟動這個選項,那麼使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,如果有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。默認值為開啟。


message_file=.message


設置目錄消息文件,可將要顯示的信息寫入該文件。默認值為.message。


banner_file=/etc/vsftpd/banner


當使用者登入時,會顯示此設定所在的檔案內容,通常為歡迎話語或是說明。默認值為無。如果歡迎信息較多,則使用該配置項。


ftpd_banner=Welcome to BOB's FTP server


這裡用來定義歡迎話語的字元串,banner_file是檔案的形式,而ftpd_banner 則是字元串的形式。預設為無。



6.控制用戶是否允許切換到上級目錄


在默認配置下,本地用戶登入FTP后可以使用cd命令切換到其他目錄,這樣會對系統帶來安全隱患。可以通過以下三條配置文件來控制用戶切換目錄。


chroot_list_enable=YES/NO(NO)


設置是否啟用chroot_list_file配置項指定的用戶列表文件。默認值為NO。


chroot_list_file=/etc/vsftpd.chroot_list


用於指定用戶列表文件,該文件用於控制哪些用戶可以切換到用戶家目錄的上級目錄。


chroot_local_user=YES/NO(NO)


用於指定用戶列表文件中的用戶是否允許切換到上級目錄。默認值為NO。


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


①當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時,所有的用戶均可以切換到其他目錄。



7.數據傳輸模式設置


FTP在傳輸數據時,可以使用二進位方式,也可以使用ASCII模式來上傳或下載數據。


ascii_upload_enable=YES/NO(NO)


設置是否啟用ASCII 模式上傳數據。默認值為NO。


ascii_download_enable=YES/NO(NO)


設置是否啟用ASCII 模式下載數據。默認值為NO。



8.訪問控制設置


兩種控制方式:一種控制主機訪問,另一種控制用戶訪問。


①控制主機訪問:


tcp_wrappers=YES/NO(YES)


設置vsftpd是否與tcp wrapper相結合來進行主機的訪問控制。默認值為YES。如果啟用,則vsftpd伺服器會檢查/etc/hosts.allow 和/etc/hosts.deny 中的設置,來決定請求連接的主機,是否允許訪問該FTP伺服器。這兩個文件可以起到簡易的防火牆功能。


比如:若要僅允許192.168.0.1—192.168.0.254的用戶可以連接FTP伺服器,則在/etc/hosts.allow文件中添加以下內容:


vsftpd:192.168.0. :allow


all:all :deny


②控制用戶訪問:


對於用戶的訪問控制可以通過/etc目錄下的vsftpd.user_list和ftpusers文件來實現。


userlist_file=/etc/vsftpd.user_list


控制用戶訪問FTP的文件,裡面寫著用戶名稱。一個用戶名稱一行。


userlist_enable=YES/NO(NO)


是否啟用vsftpd.user_list文件。


userlist_deny=YES/NO(YES)


決定vsftpd.user_list文件中的用戶是否能夠訪問FTP伺服器。若設置為YES,則vsftpd.user_list文件中的用戶不允許訪問FTP,若設置為NO,則只有vsftpd.user_list文件中的用戶才能訪問FTP。


/etc/vsftpd/ftpusers文件專門用於定義不允許訪問FTP伺服器的用戶列表(注意:如果userlist_enable=YES,userlist_deny=NO,此時如果在vsftpd.user_list和ftpusers中都有某個用戶時,那麼這個用戶是不能夠訪問FTP的,即ftpusers的優先順序要高)。默認情況下vsftpd.user_list和ftpusers,這兩個文件已經預設置了一些不允許訪問FTP伺服器的系統內部賬戶。如果系統沒有這兩個文件,那麼新建這兩個文件,將用戶添加進去即可。



9.訪問速率設置


anon_max_rate=0


設置匿名登入者使用的最大傳輸速度,單位為B/s,0 表示不限制速度。默認值為0。


local_max_rate=0


本地用戶使用的最大傳輸速度,單位為B/s,0 表示不限制速度。預設值為0。



10.超時時間設置


accept_timeout=60


設置建立FTP連接的超時時間,單位為秒。默認值為60。


connect_timeout=60


PORT 方式下建立數據連接的超時時間,單位為秒。默認值為60。


data_connection_timeout=120


設置建立FTP數據連接的超時時間,單位為秒。默認值為120。


idle_session_timeout=300


設置多長時間不對FTP伺服器進行任何操作,則斷開該FTP連接,單位為秒。默認值為300 。



11.日誌文件設置


xferlog_enable= YES/NO(YES)


是否啟用上傳/下載日誌記錄。如果啟用,則上傳與下載的信息將被完整紀錄在xferlog_file 所定義的檔案中。預設為開啟。


xferlog_file=/var/log/vsftpd.log


設置日誌文件名和路徑,默認值為/var/log/vsftpd.log。


xferlog_std_format=YES/NO(NO)


如果啟用,則日誌文件將會寫成xferlog的標準格式,如同wu-ftpd 一般。默認值為關閉。


log_ftp_protocol=YES|NO(NO)
如果啟用此選項,所有的FTP請求和響應都會被記錄到日誌中,默認日誌文件在/var/log/vsftpd.log。啟用此選項時,xferlog_std_format不能被激活。這個選項有助於調試。默認值為NO。



12.定義用戶配置文件


在vsftpd中,可以通過定義用戶配置文件來實現不同的用戶使用不同的配置。


user_config_dir=/etc/vsftpd/userconf


設置用戶配置文件所在的目錄。當設置了該配置項后,用戶登陸伺服器后,系統就會到/etc/vsftpd/userconf目錄下,讀取與當前用戶名相同的文件,並根據文件中的配置命令,對當前用戶進行更進一步的配置。


例如:定義user_config_dir=/etc/vsftpd/userconf,且主機上有使用者 test1,test2,那麼我們就在user_config_dir 的目錄新增文件名為test1和test2兩個文件。若是test1 登入,則會讀取user_config_dir 下的test1 這個檔案內的設定。默認值為無。利用用戶配置文件,可以實現對不同用戶進行訪問速度的控制,在各用戶配置文件中定義local_max_rate=XX,即可。



13.FTP的工作方式與埠設置


FTP有兩種工作方式:PORT FTP(主動模式)和PASV FTP(被動模式)


listen_port=21


設置FTP伺服器建立連接所監聽的埠,默認值為21。


connect_from_port_20=YES/NO


指定FTP使用20埠進行數據傳輸,默認值為YES。


ftp_data_port=20


設置在PORT方式下,FTP數據連接使用的埠,默認值為20。


pasv_enable=YES/NO(YES)


若設置為YES,則使用PASV工作模式;若設置為NO,則使用PORT模式。默認值為YES,即使用PASV工作模式。


pasv_max_port=0


在PASV工作模式下,數據連接可以使用的埠範圍的最大埠,0 表示任意埠。默認值為0。


pasv_min_port=0


在PASV工作模式下,數據連接可以使用的埠範圍的最小埠,0 表示任意埠。默認值為0。



14.與連接相關的設置


listen=YES/NO(YES)


設置vsftpd伺服器是否以standalone模式運行。以standalone模式運行是一種較好的方式,此時listen必須設置為YES,此為默認值。建議不要更改,有很多與伺服器運行相關的配置命令,需要在此模式下才有效。若設置為NO,則vsftpd不是以獨立的服務運行,要受到xinetd服務的管控,功能上會受到限制。


max_clients=0


設置vsftpd允許的最大連接數,默認值為0,表示不受限制。若設置為100時,則同時允許有100個連接,超出的將被拒絕。只有在standalone模式運行才有效。


max_per_ip=0


設置每個IP允許與FTP伺服器同時建立連接的數目。默認值為0,表示不受限制。只有在standalone模式運行才有效。


listen_address=IP地址


設置FTP伺服器在指定的IP地址上偵聽用戶的FTP請求。若不設置,則對伺服器綁定的所有IP地址進行偵聽。只有在standalone模式運行才有效。


setproctitle_enable=YES/NO(NO)


設置每個與FTP伺服器的連接,是否以不同的進程表現出來。默認值為NO,此時使用ps aux |grep ftp只會有一個vsftpd的進程。若設置為YES,則每個連接都會有一個vsftpd的進程。



15.虛擬用戶設置


虛擬用戶使用PAM認證方式。


pam_service_name=vsftpd


設置PAM使用的名稱,默認值為/etc/pam.d/vsftpd。


guest_enable= YES/NO(NO)


啟用虛擬用戶。默認值為NO。


guest_username=ftp


這裡用來映射虛擬用戶。默認值為ftp。


virtual_use_local_privs=YES/NO(NO)


當該參數激活(YES)時,虛擬用戶使用與本地用戶相同的許可權。當此參數關閉(NO)時,虛擬用戶使用與匿名用戶相同的許可權。默認情況下此參數是關閉的(NO)。



16.其他設置


text_userdb_names= YES/NO(NO)


設置在執行ls –la之類的命令時,是顯示UID、GID還是顯示出具體的用戶名和組名。默認值為NO,即以UID和GID方式顯示。若希望顯示用戶名和組名,則設置為YES。


ls_recurse_enable=YES/NO(NO)


若是啟用此功能,則允許登入者使用ls –R(可以查看當前目錄下子目錄中的文件)這個指令。默認值為NO。


hide_ids=YES/NO(NO)


如果啟用此功能,所有檔案的擁有者與群組都為ftp,也就是使用者登入使用ls -al之類的指令,所看到的檔案擁有者跟群組均為ftp。默認值為關閉。


download_enable=YES/NO(YES)


如果設置為NO,所有的文件都不能下載到本地,文件夾不受影響。默認值為YES。




文中有不對或者有不清楚的地方,請大家告訴我,謝謝!



vsftp實例



在眾多網路應用中,FTP(文件傳輸協議)有著非常重要的地位。它可以用於文件的存儲和共享。與大多數Internet服務一樣,FTP也是一個客戶機/伺服器系統。用戶通過一個支持FTP協議的客戶機程序,連接到主機上的FTP伺服器程序。用戶通過客戶機程序向伺服器程序發出命令,伺服器程序執行用戶發出的命令,並將執行結果返回給客戶機。



現在我們通過一個例子來看看FTP是如何搭建起來的。在此,我們用著名的Vsftp來搭建FTP伺服器。此FTP伺服器主要用於公司內部文件的存儲和共享。



一.需求


1. 某公司有5個大部門,分別為:人事行政部、財務部、技術部、市場部、生產部。


2. 各部門的文件夾只允許本部門員工有權訪問;各部門之間交流性質的文件放到公用文件夾中。


3. 每個部門都有一個管理本部門文件夾的管理員賬號和一個只能上傳、下載和查看文件的普通用戶許可權的賬號。


4. 公用文件夾中分為存放工具的文件夾和存放文件的文件夾。


5. 用戶只能對自己的家目錄文件夾及其下面的目錄文件有操作許可權,不允許切換到上級目錄,不允許匿名用戶訪問。



二.規劃


根據公司需求情況,現做出如下規劃:


1.
在系統分區時單獨分一個Company的區,在該區下有以下幾個文件夾:HR、CaiWu、JiShu、ShiChang、ShengChan和Share。在Share下又有以下幾個文件夾:HR、CaiWu、JiShu、ShiChang、ShengChan和Tools。


2.
各部門對應的文件夾由各部門自己管理,Tools文件夾由管理員維護。


3. HR管理員賬號:hradmin;普通用戶賬號:hruser。



CaiWu管理員賬號:caiwuadmin;普通用戶賬號:caiwuuser。



JiShu管理員賬號:jishuadmin;普通用戶賬號:jishuuser。



ShiChang管理員賬號:shichangadmin;普通用戶賬號:shichanguser。



ShengChan管理員賬號:shengchanadmin;普通用戶賬號:shengchanuser。



Tools管理員賬號:admin。


4.
各部門管理員賬號有完全控制本部門文件夾的許可權以及下載Tools文件夾中工具的許可權,普通用戶賬號只有上傳、下載和查看本部門文件夾的許可權以及下載Tools文件夾中工具的許可權。


5.
因為此FTP伺服器主要用於公司內部使用,因此,FTP使用主動工作模式,在FTP伺服器上將其他不需要用到的埠屏蔽掉,增加伺服器安全。



文件夾之間的關係請見下圖:








三.Vsftp RPM安裝和啟動


在系統中使用rpm –qa |grep vsftp來查看系統有沒有安裝該軟體,如果沒有安裝則掛載系統盤,找到vsftp軟體包,使用rpm –ivh vsftp*即可安裝。


使用RPM包安裝后,vsftp的配置文件默認在/etc/vsftpd/下。


使用service vsftpd start啟動vsftp。Vsftp默認允許匿名用戶訪問。


使用chkconfig --level 35 vsftpd on,可以使vsftp隨系統一起啟動。


在/etc/sysconfig/iptables中將20和21埠開放,然後用service iptables restart重啟iptables服務。


在/etc/selinux/config中將「SELINUX」項關閉,SELINUX=disabled。



四.新建用戶


使用useradd命令新建用戶,使用passwd命令添加密碼。


useradd hradmin –r –m –d /Company/ –s /sbin/nologin


useradd hruser –r –m –g hradmin –d /Company/ –s /sbin/nologin


useradd caiwuadmin –r –m –d /Company/ –s /sbin/nologin


useradd caiwuuser –r –m –g caiwuadmin –d /Company/ –s /sbin/nologin


useradd jishuadmin –r –m –d /Company/ –s /sbin/nologin


useradd jishuuser –r –m –g jishuadmin –d /Company/ –s /sbin/nologin


useradd shichangadmin –r –m –d /Company/ –s /sbin/nologin


useradd shichanguser –r –m –g shichangadmin –d /Company/ –s /sbin/nologin


useradd shengchanadmin –r –m –d /Company/ –s /sbin/nologin


useradd shengchanuser –r –m –g shangchanadmin –d /Company/ –s /sbin/nologin


useradd admin –r –m –g root –d /Company/Share/Tools



五.新建目錄


在/Company中添加各部門的私密文件夾以及一個用於放置共享東西的共享文件夾。


cd /Company/


mkdir HR CaiWu JiShu ShiChang ShengChan Share


在/Company下的共享文件夾中,添加各部門的文件夾以及一個放置共享工具的文件夾,這些部門文件夾用於放置需要共享的文件。


cd /Company/Share/


mkdir HR CaiWu JiShu ShiChang ShengChan Tools



六.修改目錄屬性


修改/Company中的各部門文件夾的文件許可權為1770(實現效果:本部門管理員和普通用戶可以進入,非本部門用戶禁止進入;本部門管理員上傳的文件,本部門的普通用戶只能下載和查看,不能修改;本部門普通用戶上傳的文件,本部門的管理員可以查看,下載,刪除,重命名,但是不能修改裡面的內容;如果管理員想要修改普通用戶上傳的文件,可以先下載該文件,然後在FTP上刪除該文件,在本機編輯好后再將該文件上傳),屬主和組為各部門的管理員及管理員組。


cd /Company/


chmod –R 1770 HR CaiWu JiShu ShiChang ShengChan


chown –R hradmin.hradmin HR/


chown –R caiwuadmin.caiwuadmin CaiWu/


chown –R jishuadmin.jishuadmin JiShu/


chown –R shichangadmin.shichangadmin ShiChang/


chown –R shengchanadmin.shengchanadmin ShengChan/


chmod –R 1775 Share/


chown admin.root Share/



cd /Company/Share


chown –R hradmin.hradmin HR/


chown –R caiwuadmin.caiwuadmin CaiWu/


chown –R jishuadmin.jishuadmin JiShu/


chown –R shichangadmin.shichangadmin ShiChang/


chown –R shengchanadmin.shengchanadmin ShengChan/


chown –R admin.root Tools/



七.配置vsftp


Vsftp的配置文件在/etc/vsftpd/下。文件名為vsftpd.conf。


cd /etc/vsftpd/


cp vsftpd.conf vsftpd.conf.bak


vi vsftpd.conf


write_enable=YES #允許登入者有寫許可權


anonymous_enable=NO #禁止匿名用戶訪問


local_enable=YES #允許本地用戶訪問


local_umask=022 #本地用戶新增檔案時的umask值


file_open_mode=0755 #本地用戶上傳檔案后的檔案許可權


ftpd_banner=Welcome to BOB's FTP server. #定義歡迎話語的字元串


xferlog_enable=YES #啟用上傳/下載日誌記錄


xferlog_file=/var/log/vsftpd.log #日誌文件所在的路徑及名稱


xferlog_std_format=YES #將日誌文件寫成xferlog的標準格式


ascii_upload_enable=YES #啟用ASCII 模式上傳數據


ascii_download_enable=YES #啟用ASCII 模式下載數據


chroot_list_enable=YES #在chroot_list中列出的用戶不允許切換到家目錄的上級目錄


chroot_local_user=NO #


chroot_list_file=/etc/vsftpd/chroot_list #


userlist_enable=YES #在user_list中列出的用戶不能訪問FTP伺服器,未列出的可以訪問


userlist_deny=YES #


userlist_file=/etc/vsftpd/user_list #


tcp_wrappers=NO #不使用tcp wrapper來控制主機訪問


setproctitle_enable=YES #每個與FTP伺服器的連接,都以不同的進程表現出來


listen=YES #FTP伺服器以standalone模式運行


port_enable=YES #FTP伺服器啟用PORT模式


pasv_enable=NO #禁用FTP伺服器的PASV模式


listen_port=21 #FTP伺服器監聽21埠


connect_from_port_20=YES #指定FTP伺服器使用20埠進行數據傳輸


ftp_data_port=20 #FTP伺服器數據傳輸埠為20


idle_session_timeout=600 #600秒鐘不對FTP伺服器進行任何操作,則斷開該FTP連接


data_connection_timeout=120 #建立FTP數據連接的超時時間為120秒


max_clients=0 #不限制用戶的連接數量


max_per_ip=3 #每個IP只能與FTP伺服器同時建立3個連接


local_max_rate=512000 #本地用戶使用的最大傳輸速度



編輯chroot_list,一個用戶一行。此文件中列出的用戶不允許訪問其家目錄的上級目錄。


vi /etc/vsftpd/chroot_list


hradmin


hruser


caiwuadmin


caiwuuser


jishuadmin


jishuuesr


shichangadmin


shichanguser


shengchanadmin


shengchanuser



編輯user_list,一個用戶一行。在此文件中列出的用戶不能訪問FTP伺服器,未列出的可以訪問。


vi /etc/vsftpd/user_list


八.測試


使用flashFXP軟體作為FTP客戶端。
《解決方案》

{:3_201:}{:3_201:}{:3_201:}
《解決方案》

樓主很犀利啊  最近在搞這個vsftp  搞的頭大了    剛看了你下面的例子,其實我和你的差不多的,我的要求是兩個用戶,用戶A對文件夾X有上傳、下載、新建許可權,用戶B對文件夾只有下載的許可權,兩個用戶最好是本地的,給我點提示什麼的啊   再次謝謝啊
《解決方案》

回復 3# 305838894

vsftpd:  http://linux.vbird.org/linux_server/0410vsftpd.php
    離線鳥哥私房菜: http://bbs.chinaunix.net/thread-3757881-1-1.html
《解決方案》

不錯,謝謝版主的奉獻!!!!
《解決方案》

CAMYD 發表於 2012-07-27 11:48 static/image/common/back.gif
不錯,謝謝版主的奉獻!!!!
錯了,是樓主。

[火星人 ] vsftpd配置文件詳解已經有656次圍觀

http://coctec.com/docs/service/show-post-656.html