天天看點

RHEL5中配置vsftpd搭建FTP伺服器

RHEL5中配置vsftpd搭建FTP伺服器

RPM安裝包名:<b>vsftpd-2.0.5-10.el5.i386.rpm</b> (第二張CD光牒)

源代碼最新版本:<b>vsftpd-2.0.5.tar.gz</b>

<b>#rpm –ivh vsftpd-2.0.5-10.el5.i386.rpm</b>  安裝<b>rpm</b>程式包

<b>#service vsftpd start  =/etc/init.d/vsftpd start</b> 啟動<b>vsftpd</b>服務

<b>#service vsftpd stop  =/etc/init.d/vsftpd stop</b> 停止<b>vsftpd</b>服務

<b>#service vsftpd restart  =/etc/init.d/vsftpd restart</b> 重新開機<b>vsftpd</b>服務

<b>#service vsftpd status  =/etc/init.d/vsftpd status </b>檢查<b>vsftpd</b>服務狀态

<b># ntsysv</b> 或<b> #chkconfig –level 35 vsftpd on</b> 更改服務自動加載

<b>Vsftpd</b><b>的配置檔案:</b>

<b>/etc/vsftpd/vsftpd.conf</b>

主配置檔案

<b>/usr/sbin/vsftpd</b>

<b>Vsftpd</b>的主程式

<b>/etc/rc.d/init.d/vsftpd</b>

啟動腳本

<b>/etc/pam.d/vsftpd</b>

<b>PAM</b>認證檔案(此檔案中file=/etc/vsftpd/ftpusers字段,指明阻止通路的使用者來自/etc/vsftpd/ftpusers檔案中的使用者)

<b>/etc/vsftpd/ftpusers</b>

禁止使用<b>vsftpd</b>的使用者清單檔案。記錄不允許通路FTP伺服器的使用者名單,管理者可以把一些對系統安全有威脅的使用者賬号記錄在此檔案中,以免使用者從FTP登入後獲得大于上傳下載下傳操作的權利,而對系統造成損壞。(注意:<b>linux-4</b>中此檔案在<b>/etc/</b>目錄下)

<b>/etc/vsftpd/user_list</b>

禁止或允許使用<b>vsftpd</b>的使用者清單檔案。這個檔案中指定的使用者預設情況(即在<b>/etc/vsftpd/vsftpd.conf</b>中設定<b>userlist_deny=YES</b>)下也不能通路FTP伺服器,在設定了<b>userlist_deny=NO</b>時,僅允許<b>user_list</b>中指定的使用者通路<b>FTP</b>伺服器。(注意:<b>linux-4</b>中此檔案在<b>/etc/</b>目錄下)

<b>/var/ftp</b>

匿名使用者主目錄;本地使用者主目錄為:<b>/home/</b><b>使用者主目錄</b>,即登入後進入自己家目錄

<b>/var/ftp/pub</b>

匿名使用者的下載下傳目錄,此目錄需賦權根<b>chmod 1777 pub</b>(<b>1</b>為特殊權限,使上載後無法删除)

<b>/etc/logrotate.d/vsftpd.log</b>

<b>Vsftpd</b>的日志檔案

<b>vsftpd</b><b>的主配置檔案/etc/vsftpd/vsftpd.conf</b><b>說明(</b><b>修改前先備份)</b><b>:</b>

# Example config file /etc/vsftpd/vsftpd.conf

# The default compiled in settings are fairly paranoid. This sample file

# loosens things up a bit, to make the ftp daemon more usable.

# Please see vsftpd.conf.5 for all compiled in defaults.

# READ THIS: This example file is NOT an exhaustive list of vsftpd options.

# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's

# capabilities.

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).

<b>anonymous_enable=YES</b> (是否允許匿名登入FTP伺服器,預設設定為YES允許,即使用者可使用使用者名ftp或anonymous進行ftp登入,密碼為使用者的E-mail位址。如不允許匿名通路去掉前面#并設定為NO)

# Uncomment this to allow local users to log in.

<b>local_enable=YES</b> (是否允許本地使用者(即linux系統中的使用者帳号)登入FTP伺服器,預設設定為YES允許,本地使用者登入後會進入使用者主目錄,而匿名使用者登入後進入匿名使用者的下載下傳目錄/var/ftp/pub;若隻允許匿名使用者通路,前面加上#,可阻止本地使用者通路FTP伺服器。)

# Uncomment this to enable any form of FTP write command.

<b>write_enable=YES</b>  (是否允許本地使用者對FTP伺服器檔案具有寫權限,預設設定為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)

<b>#</b><b>local_umask=022</b> (或其它值,設定本地使用者的檔案掩碼為預設022,也可根據個人喜好将其設定為其他值,預設值為077)

# 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.

<b>#anon_upload_enable=YES</b> (是否允許匿名使用者上傳檔案,須将<b>write_enable=YES</b>,預設設定為YES允許)

# Uncomment this if you want the anonymous FTP user to be able to create

# new directories.

<b>#anon_mkdir_write_enable=YES</b>  (是否允許匿名使用者建立新檔案夾,預設設定為YES允許)

# Activate directory messages - messages given to remote users when they

# go into a certain directory.

<b>#dirmessage_enable=YES</b> (是否激活目錄歡迎資訊功能,當使用者用CMD     模式首次通路伺服器上某個目錄時,FTP伺服器将顯示歡迎資訊,預設情況下,歡迎資訊是通過該目錄下的.message檔案獲得的,此檔案儲存自定義的歡迎資訊,由使用者自己建立)

# Activate logging of uploads/downloads.

<b>xferlog_enable=YES</b> (預設值為NO如果啟用此選項,系統将會維護記錄伺服器上傳和下載下傳情況的日志檔案,預設情況該日志檔案為/var/log/vsftpd.log,也可以通過下面的xferlog_file選項對其進行設定。)

# Make sure PORT transfer connections originate from port 20 (ftp-data).

<b>connect_from_port_20=YES</b> (設定FTP伺服器将啟用FTP資料端口的連接配接請求,ftp-data資料傳輸,21為連接配接控制端口)

# 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!-注意,不推薦使用root使用者上傳檔案

<b>#chown_uploads=YES</b><b> </b>(設定是否允許改變上傳檔案的屬主,與下面一個設定項配合使用)

<b>#chown_username=whoeve</b>r (設定想要改變的上傳檔案的屬主,如果需要,則輸入一個系統使用者名,例如可以把上傳的檔案都改成root屬主。whoever:任何人)

# You may override where the log file goes if you like. The default is shown

# below.

<b>#xferlog_file=/var/log/vsftpd.log</b>(設定系統維護記錄FTP伺服器上傳和下載下傳情況的日志檔案,/var/log/vsftpd.log是預設的,也可以另設其它)

# If you want, you can have your log file in standard ftpd xferlog format

<b>#xferlog_std_format=YES</b>(如果啟用此選項,傳輸日志檔案将以标準xferlog的格式書寫,該格式的日志檔案預設為/var/log/xferlog,也可以通過xferlog_file選項對其進行設定,預設值為NO)

<b>#dual_log_enable</b>(如果添加并啟用此選項,将生成兩個相似的日志檔案,預設在/var/log/xferlog和/var/log/vsftpd.log目錄下。前者是wu_ftpd類型的傳輸日志,可以利用标準日志工具對其進行分析;後者是vsftpd類型的日志)

<b>#syslog_enable</b>(如果添加并啟用此選項,則原本應該輸出到/var/log/vsftpd.log中的日志,将輸出到系統日志中)<b></b>

# You may change the default value for timing out an idle session.

<b>#idle_session_timeout=600</b> (設定資料傳輸中斷間隔時間,此語句表示空閑的使用者會話中斷時間為600秒,即當資料傳輸結束後,使用者連接配接FTP伺服器的時間不應超過600秒,可以根據實際情況對該值進行修改)

# You may change the default value for timing out a data connection.

<b>#data_connection_timeout=120</b> (設定資料連接配接逾時時間,該語句表示資料連接配接逾時時間為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.

<b>#nopriv_user=ftpsecure </b>(運作vsftpd需要的非特權系統使用者,預設是nobody)<b></b>

# 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.

<b>#async_abor_enable=YES</b>(如果FTP client會下達“async ABOR”這個指令時,這個設定才需要啟用,而一般此設定并不安全,是以通常将其取消)

# 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 on some FTP servers, ASCII support allows a denial of service

# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd

# predicted this attack and has always been safe, reporting the size of the

# raw file.

# ASCII mangling is a horrible feature of the protocol.

<b>#ascii_upload_enable=YES</b> (大多數FTP伺服器都選擇用ASCII方式傳輸資料,将#去掉就能實作用ASCII方式上傳和下載下傳檔案)

<b>#ascii_download_enable=YES</b> (将#去掉就能實作用ASCII方式下載下傳檔案)

# You may fully customise the login banner string:

<b>#ftpd_banner=Welcome to blah FTP service.</b> (将#去掉可設定登入FTP伺服器時顯示的歡迎資訊,可以修改=後的歡迎資訊内容。另外如在需要設定更改目錄歡迎資訊的目錄下建立名為.message的檔案,并寫入歡迎資訊儲存後,在進入到此目錄會顯示自定義歡迎資訊)

# You may specify a file of disallowed anonymous e-mail addresses. Apparently

# useful for combatting certain DoS attacks.

<b>#deny_email_enable=YES</b><b> </b>(可将某些特殊的email address抵擋住。如果以anonymous登入伺服器時,會要求輸入密碼,也就是您的email address,如果很讨厭某些email address,就可以使用此設定來取消他的登入權限,但必須與下面的設定項配合)

# (default follows)

<b>#banned_email_file=/etc/vsftpd/banned_emails</b><b> </b>(當上面的deny_email_enable=YES時,可以利用這個設定項來規定那個email address不可登入vsftpd伺服器,此檔案需使用者自己建立,一行一個email address即可!)<b></b>

# 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().

<b>#chroot_list_enable=YES</b>(設定為NO時,使用者登入FTP伺服器後具有通路自己目錄以外的其他檔案的權限,設定為YES時,使用者被鎖定在自己的home目錄中,vsftpd将在下面chroot_list_file選項值的位置尋找chroot_list檔案,此檔案需使用者建立,再将需鎖定在自己home目錄的使用者列入其中,每行一個使用者)<b></b>

<b>#chroot_list_file=/etc/vsftpd/chroot_list</b><b> </b>(此檔案需自己建立,被列入此檔案的使用者,在登入後将不能切換到自己目錄以外的其他目錄,由FTP伺服器自動地chrooted到使用者自己的home目錄下,使得chroot_list檔案中的使用者不能随意轉到其他使用者的FTP home目錄下,進而有利于FTP伺服器的安全管理和隐私保護)<b></b>

# 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.

<b>#ls_recurse_enable=YES</b><b> </b><b>(</b>是否允許遞歸查詢,大型站點的FTP伺服器啟用此項可以友善遠端使用者查詢<b>)</b>

# When "listen" directive is enabled, vsftpd runs in standalone mode and

# listens on IPv4 sockets. This directive cannot be used in conjunction

# with the listen_ipv6 directive.

<b>listen=YES</b><b> </b>(如果設定為YES,則vsftpd将以獨立模式運作,由vsftpd自己監聽和處理連接配接請求)

# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6

# sockets, you must run two copies of vsftpd whith two configuration files.

# Make sure, that one of the listen options is commented !!

<b>#listen_ipv6=YES</b><b> </b>(設定是否支援IPV6)<b></b>

<b>#pam_service_name=vsftpd</b><b> </b>(設定PAM外挂子產品提供的認證服務所使用的配置檔案名,即/etc/pam.d/vsftpd檔案,此檔案中file=/etc/vsftpd/ftpusers字段,說明了PAM子產品能抵擋的帳号内容來自檔案/etc/vsftpd/ftpusers中)<b></b>

<b>#userlist_enable=YES/NO</b>(此選項預設值為NO ,此時ftpusers檔案中的使用者禁止登入FTP伺服器;若此項設為YES,則user_list檔案中的使用者允許登入   FTP伺服器,而如果同時設定了userlist_deny=YES,則user_list檔案中的使用者将不允許登入FTP伺服器,甚至連輸入密碼提示資訊都沒有,直接被FTP伺服器拒絕)<b></b>

<b>#userlist_deny=YES/NO</b>(此項預設為YES,設定是否阻扯user_list檔案中的使用者登入FTP伺服器)<b></b>

<b>tcp_wrappers=YES</b> (表明伺服器使用tcp_wrappers作為主機通路控制方式,tcp_wrappers可以實作linux系統中網絡服務的基于主機位址的通路控制,在/etc目錄中的hosts.allow和hosts.deny兩個檔案用于設定tcp_wrappers的通路控制,前者設定允許通路記錄,後者設定拒絕通路記錄。例如想限制某些主機對FTP伺服器192.168.57.2的匿名通路,編緝<b>/etc/hosts.allow</b>檔案,如在下面增加兩行指令:<b>vsftpd:192.168.57.1:DENY </b>和<b>vsftpd:192.168.57.9:DENY</b>表明限制IP為192.168.57.1/192.168.57.9主機通路IP為192.168.57.2的FTP伺服器,此時FTP伺服器雖可以PING通,但無法連接配接)

<b>在FTP伺服器的管理中無論對本地使用者還是匿名使用者,對于FTP伺服器資源的使用都需要進行控控制,</b><b>避免由于負擔過大造成FTP伺服器運作異常,</b><b>可以添加以下配置項對FTP客戶機使用FTP伺服器資源進行控制:</b>

<b>max_client</b><b> </b>設定項用于設定FTP伺服器所允許的最大用戶端連接配接數,值為0時表示不限制。例如max_client=100表示FTP伺服器的所有用戶端最大連接配接數不超過100個。<b></b>

<b>max_per_ip</b>設定項用于設定對于同一IP位址允許的最大用戶端連接配接數,值為0時表示不限制。例如max_per_ip=5表示同一IP位址的FTP客戶機與FTP伺服器建立的最大連接配接數不超過5個。<b></b>

<b>local_max_rate</b>設定項用于設定本地使用者的最大傳輸速率,機關為B/s,值為0時表示不限制。例如local_max_rate=500000表示FTP伺服器的本地使用者最大傳輸速率設定為500KB/s.<b></b>

<b>ano­n_max_rate</b>設定項用于設定匿名使用者的最大傳輸速率,機關為B/s,值為0表示不限制。例如ano_max_rate=200000,表示FTP伺服器的匿名使用者最大傳輸速率設定為200KB/s.

<b>vsftpd.user_list</b><b>檔案需要與vsftpd.conf檔案中的配置項結合來實作對于vsftpd.user_list檔案中指定使用者賬号的通路控制:</b>

<b>(1)</b><b>        </b><b>設定禁止登入的使用者賬号</b>

當vsftpd.conf配置檔案中包括以下設定時,vsftpd.user_list檔案中的使用者賬号被禁止進行FTP登入:

<b>userlist_enable=YES</b>

<b>userlist_deny=YES</b>

userlist_enable設定項設定使用vsftpd.user_list檔案,userlist_deny設定為YES表示vsftpd.user_list檔案用于設定禁止的使用者賬号。

<b>(2)</b><b>        </b><b>設定隻允許登入的使用者賬号</b>

當vsftpd.conf配置檔案中包括以下設定時,隻有vsftpd.user_list檔案中的使用者賬号能夠進行FTP登入:

<b>userlist_deny=NO</b>

userlist_enable設定項設定使用vsftpd.user_list檔案,userlist­_deny設定為NO表示vsftpd.usre_list檔案用于設定隻允許登入的使用者賬号,檔案中未包括的使用者賬号被禁止FTP登入。

<b>userlist_deny</b><b>和</b><b>userlist_enable</b><b>選項限制使用者登入FTP</b><b>伺服器</b>(使用<b>userlist_deny</b>選項和<b>user_list</b>檔案一起能有效阻止<b>root,apache,www</b>等系統使用者登入<b>FTP</b>伺服器,進而保證<b>FTP</b>伺服器的分級安全性):<b></b>

<b>Userlist_enable=YES</b>

<b>Ftpusers</b>中使用者允許通路

<b>User_list</b>中使用者允許通路

<b>Userlist_enable=NO</b>

<b>Ftpusers</b>中使用者禁止通路

<b>Userlist_deny=YES</b>

<b>Ftpusers</b>中使用者禁止通路(登入時可以看到密碼輸入提示,但仍無法通路)

<b>user_list </b>中使用者禁止通路

<b>Userlist_deny=NO</b>

<b>ftpusers</b>中使用者禁止通路

<b>user_list</b>中使用者允許通路

<b>Userlist_enable=YES </b><b>并且</b><b></b>

<b>User_list</b>中使用者禁止通路(登入時不會出現密碼提示,直接被伺服器拒絕)

<b>Userlist_deny=NO</b><b></b>

<b>User_list</b>中使用者允許通路<b></b>

<b>配置FTP伺服器的虛拟使用者</b>

在vsftpd伺服器中支援匿名使用者,本地使用者,和虛拟使用者3類使用者賬号,用途及差別如下:

<b>匿名使用者</b>是名為anonymous或ftp的FTP使用者,匿名FTP使用者登入後将FTP伺服器中的/var/ftp作為FTP根目錄。匿名使用者通常用于提供公共檔案的下載下傳,如架設公共軟體下載下傳的FTP伺服器,所有人都可以使用匿名使用者進行軟體下載下傳。

<b>本地使用者</b>賬号是FTP伺服器中的系統使用者賬号,使用FTP本地使用者賬号登入FTP伺服器後,登入目錄為本地使用者的宿主目錄。本地FTP使用者賬号通常和Web伺服器一起提供虛拟主機服務,作為網頁虛拟主機更新網頁的途徑。

<b>虛拟使用者</b>賬号是為了保證FTP伺服器的安全性,由vsftpd伺服器提供的非系統使用者賬号。虛拟使用者FTP登入後将把指定的目錄作為FTP根目錄。虛拟使用者與本地使用者具有類似的功能,由于虛拟使用者相對安全,是以正逐漸替代本地使用者賬号。

<b>由于虛拟使用者賬号具有較高的安全性,可以替代本地使用者賬号使用,下面是vsftpd虛拟使用者賬号設定的幾個步驟:</b>

以設定miket 和 john 兩個虛拟使用者帳号為例來配置vsftpd伺服器

<b>(1)</b><b>建立虛拟使用者密碼庫檔案</b>

建立虛拟使用者的密碼檔案,檔案中奇數行設定虛拟使用者的使用者名,偶數行設定使用者的密碼。例如,使用vi編輯器建立名為logins.txt的使用者密碼庫檔案,在檔案中設定使用者mike的密碼為pwabcd,使用者john 的密碼是pw1234:

#vi logins.txt

mike      (奇數行設定虛拟使用者名)

pwabcd   (偶數行設定使用者密碼)

john

pw1234

:wq<b> </b>(儲存退出)<b></b>

<b>(2)</b><b>生成vsftpd 的認證檔案</b>

使用db_load 指令生成認證檔案。“-f”指令選項設定的值是虛拟使用者的密碼庫檔案,即上面建立的logins.txt。指令的參數設定為需要生成的認證檔案名如 vsftpd_login.db,該檔案放置在目錄/etc/vsftpd/下:

#db_load  -T  -t hash  –f  logins.txt  /etc/vsftpd_login.db   (生成認證檔案)

#file  /etc/vsftpd/vsftpd_login.db                            (檢視檔案類型)

<b> </b>/etc/vsftpd/vsftpd_login.db:Berkeley DB (Hash,version  8 , native byte-order)

生成的認證檔案的權限應設定為隻對root使用者可讀可寫,即600:

#chmod  600  /etc/vsftpd/vsftpd_login.db

<b>(3)</b><b>建立虛拟使用者所需的PAM配置檔案</b>

在/etc/pam.d目錄下建立vsftpd虛拟使用者身份認證所需的PAM配置檔案,名稱是vsftpd.vu,内容為:

#cat /etc/pam.d/vsftpd.vu

auth  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login

account  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login

<b>(4)</b><b>建立虛拟使用者及要通路的目錄并設定相應的權限</b>

建立vsftpd虛拟使用者所需的系統使用者賬号,賬号名為<b>virtual</b>,指定使用者的宿主目錄是<b>/home/ftpsite,</b>設定宿主目錄的權限為<b>700:</b>

#useradd  -d  /home/ftpsite  virtual

#chmod  700  /home/ftpsite/

這樣vsftpd伺服器中的所有虛拟使用者賬号登入後都将在/home/ftpsite目錄中

<b>(5)</b><b>設定vsftpd.conf主配置檔案</b>

在對vsftpd.conf配置檔案進行修改之前,應先将原有的檔案進行備份,以便出現配置錯誤時可進行恢複:

#cd /etc/vsftpd

#cp vsftpd.conf vsftpd.conf.bak

在vsftpd.conf配置檔案中添加虛拟使用者的配置項,内容為:

guest_enable=YES

guest_username=virtual

pam_service_name=vsftpd.vu

<b>(6)</b><b>重新啟動vsftpd服務程式</b>

在對vsftpd.conf配置檔案進行了任何修改後都需要重新啟動vsftpd服務,以便配置生效:

#service vsftpd restart

<b>(7)</b><b>測試vsftpd中的虛拟使用者賬号:mike 或 john</b>

在測試前可以先在/home/ftpsite目錄中建立測試檔案,用于測試時進行下載下傳,并設定該檔案的屬主和屬組為virtual

#touch /home/ftpsite/afile

#chown  virtual.virtual  /home/ftpsite/afile

使用ftp指令登入vsftpd伺服器,并使用已配置的虛拟使用者帳号mike進行登入

#ftp localhost

name (localhost:root):<b>mike</b>

password:

ftp&gt;get afile

在完成虛拟使用者的FTP登入後,可使用get指令下載下傳測試檔案,測試檔案會儲存到使用者的目前目錄中。

<b>(8)</b><b>對不同的虛拟使用者設定不同的權限</b>

vsftpd伺服器中的虛拟使用者可以靈活的針對不同的使用者賬号設定不同的使用者權限,配置的步驟如下:

1.設定主配置檔案

在vsftpd.conf配置檔案中添加user_config_dir配置項,并設定使用者配置檔案的儲存目錄

user_config_dir=/etc/vsftpd_user_conf

在上面的配置執行個體中,設定在/etc/vsftpd_user_conf目錄中儲存虛拟使用者的配置檔案

2.建立使用者配置檔案目錄

使用mkdir指令建立虛拟使用者配置檔案的儲存目錄

#mkdir  /etc/vsftpd_user_conf

3.為虛拟使用者建立單獨的配置檔案

在/etc/vsftpd_user_conf/目錄中可以為每個虛拟使用者建立獨立的配置檔案,配置檔案名稱和使用者名相同。例如,為使用者mike建立配置檔案mike ,并将anon_world_readable_only設定為NO,表示使用者具有浏覽和下載下傳的權限

#cat  /etc/vsftpd_user_conf/mike

anon_world_readable_only=NO

為使用者john建立配置檔案john,并設定該使用者具有浏覽,下載下傳,上傳,改名,删除檔案,建立和删除的權限。

#cat  john

anon_world_readable_only=NO   --表示使用者可以浏覽FTP目錄和下載下傳檔案

anon_upload_enable=YES        --表示使用者可以上傳檔案

anon_mkdir_write_enable=YES   --表示使用者具有建立和删除目錄的權利

anon_other_write_enable=YES   --表示使用者具有檔案改名和删除檔案的權限

通過對以上配置項的組合設定,vsftpd可以為每個虛拟使用者配置不同的FTP權限,使用者配置檔案中沒有的配置項将按照vsftpd.conf配置檔案中的内容設定。

<b>vsftpd</b><b>伺服器的其它主要設定</b><b>:</b>

1.最大傳輸速率設定:

設定匿名使用者的最大傳輸率為20Kbps,修改<b>/etc/vsftpd/vsftpd.conf</b>添加語句:<b>anon_max_rate=20000</b>

設定本地帳号最大傳輸率為1Mbps,修改<b>/etc/vsftpd/vsftpd.conf</b>添加語句:<b>local_max_rate=1000000</b>

2.伺服器最大并發數和使用者最大線程數設定:<b></b>

<b>    </b>例如設定伺服器允許的最大并發數為99,而每個使用者同一時段的最大并發線程數為5,修改<b>/etc/vsftpd/vsftpd.conf</b>添加兩行語句:<b>max_clients=99</b> 和 <b>max_per_ip=5</b>

3.修改預設端口:

<b>   </b> 預設FTP伺服器端口号是21,出于安全目的,有時需修改預設端口号,修改/etc/vsftpd/vsftpd.conf

添加語句(例):<b>listen_port=4449</b> 該語句指定了修改後FTP伺服器的端口号,應盡量大于4000,修改後通路

    <b>#ftp 192.168.57.2 4449</b>(需加上正确的端口号了,否則不能正常連接配接)

4.設定使用者組,增強FTP伺服器安全性:

<b>舉例:</b>

#mkdir –p /home/try  遞歸建立新目錄

#groupadd try        建立組

#useradd –g try –d /home/try try1 建立使用者try1并指定家目錄和屬組

#useradd –g try –d /home/try try2 建立使用者try2并指定家目錄和屬組

#useradd –g try –d /home/try try3 建立使用者try3并指定家目錄和屬組

#passwd try1  為新使用者設密碼

#passwd try2  為新使用者設密碼

#passwd try3  為新使用者設密碼

#chown try1 /home/try 設定目錄屬主為使用者try1

#chown .try /home/try 設定目錄屬組為組try

#chmod 750 /home/try  設定目錄通路權限try1為讀,寫,執行;try2,try3為讀,執行

由于本地使用者登入FTP伺服器後進入自己主目錄,而try1,try2 try3對主目錄/home/try配置設定的權限不同,是以通過FTP通路的權限也不同,try1通路權限為:上傳,下載下傳,建目錄 ;try2ty3通路權限為下載下傳,浏覽,不能建目錄和上傳。實作了群組中使用者不同通路級别,加強了對FTP伺服器的分級安全管理。

5.常見的vsftpd日志解決方案如下:

xferlog_enable=YES (表明FTP伺服器記錄上傳下載下傳的情況)

xferlog_std_format=YES (表明将記錄的上傳下載下傳情況寫在xferlog_file所指定的檔案中,即xferlog_file選項指定的/var/log/xferlog檔案中)

xferlog_file=/var/log/xferlog

dual_log_enable=YES (表明啟用了雙份日志,在用xferlog檔案記錄伺服器上傳下載下傳情況的同時,vsftpd_log_file所指定的檔案,即/var/log/vsftpd.log也将用來記錄伺服器的傳輸情況)

vsftpd_log_file=/var/log/vsftpd.log

vsftpdr的兩個日志檔案分析如下:

/var/log/xferlog 記錄内容舉例

Thu Sep 6 09:07:48 2007 7 192.168.57.1 4323279 /home/student/phpMyadmin-2.11.0-all-languages.tar.gz b – i r student ftp 0 * c

/var/log/vsftpd.log 記錄内容舉例

Tue Sep 11 14:59:03 2007 [pid 3460]    CONNECT: Client “127.0.0.1”

Tue Sep 11 14:59:24 2007 [pid 3459] [ftp] OK LOGIN;Client “127.0.0.1” ,anon password <b>”</b><b>?</b><b>”</b>

<b>                        /var/log/xferlog</b><b>日志檔案中資料的分析和參數說明</b>

<b>記錄資料</b>

<b>參數名稱</b>

<b>參數說明</b>

<b>Thu Sep 6 09:07:48 2007</b>

目前時間

目前伺服器本地時間,格式為:

DDD MMM dd hh:mm:ss YYY

<b>7</b>

傳輸時間

傳送檔案所用時間,機關為秒

<b>192.168.57.1</b>

遠端主機名稱/IP

<b>4323279</b>

檔案大小

傳送檔案的大小,機關為byte

<b>/home/student/phpMyadmin-</b>

<b>2.11.0-all-languages.tar.gz</b>

檔案名

傳輸檔案名,包括路徑

<b>b</b>

傳輸類型

傳輸方式的類型,包括兩種:

a以ASCII傳輸 b以二進制檔案傳輸

<b>–</b><b></b>

特殊處理标志

特殊處理的标志位,可能的值包括:

_ 不做任何特殊處理

C 檔案是壓縮格式

U 檔案是非壓縮格式

T 檔案是tar格式

<b>i</b>

傳輸方向

檔案傳輸方向,包括兩種:

o 從FTP伺服器向用戶端傳輸

i 從用戶端向FTP伺服器傳輸

<b>r</b>

通路模式

使用者通路模式,包括:

a 匿名使用者

g 來賓使用者

r 真實使用者,即系統中的使用者

<b>student</b>

使用者名

使用者名稱

<b>ftp</b>

服務名

所使用的服務名稱,一般為FTP

<b>0</b>

認證方式

認證方式,包括:

0 無

1 RFC931認證

<b>*</b>

認證使用者id

認證使用者的id,如果使用*,則表示無法獲得該id

<b>c</b>

完成狀态

傳輸的狀态:

c 表示傳輸已完成

i 表示傳輸示完成

<b>6</b><b>.匿名FTP設定方法:</b>

通常在登入FTP伺服器的使用者不确定的情況下,應将FTP伺服器設定為允許匿名賬号登入的FTP伺服器

1.啟用匿名帳号

<b>  anonymous_enable=YES</b>

<b>  local_enable=YES</b>

<b>  write_enable=YES</b>

<b>  listen=YES</b>

設定完成後,重新開機vsftd.将允許匿名賬号和本地賬号登入FTP伺服器,同時允許匿名使用者具有對FTP伺服器檔案的寫權限,并且隻能下載下傳檔案而不能上傳,不允許匿名賬号建立檔案夾,匿名使用者的密碼為一個E-mail位址。

2.允許匿名賬号上傳檔案

<b>anon_upload_enable=YES</b>

<b>anon_mkdir_write_enable=YES</b>

将#去掉即可,重新開機vsftpd.将允許匿名賬号上傳檔案,也就是具有在FTP伺服器的本地目錄中建立檔案和檔案夾的功能

3.僅允許匿名使用者通路

<b>#local_enable=YES</b>

<b>#write_enable=YES</b>

在前面加上#,即限制本地賬号通路,僅允許匿名使用者通路

4.禁止匿名通路,允許本地賬号通路

<b>anonymous_enable=NO</b>

<b>常見FTP指令及其功能</b>

<b>FTP</b><b>指令</b>

<b>功能</b>

<b>ls</b>

顯示伺服器上的目錄

<b>ls </b>[remote-dir][local-file]

顯示遠端目錄remote-dir,并存入本地檔案local-file

<b>get</b> remote-file [local-file]

從伺服器下載下傳指定檔案到用戶端

<b>mget </b>remote-files

下載下傳多個遠端檔案(mget指令允許用通配符下載下傳多個檔案)

<b>put</b> local-file [remote-file]

從用戶端上傳指定檔案到伺服器

<b>mput </b>local-file

将多個檔案上傳至遠端主機(mput指令允許用通配符上傳多個檔案)

open

連接配接FTP伺服器

mdelete [remote-file]

删除遠端主機檔案

close

中斷與遠端伺服器的ftp會話(與open對應)

mkdir dir-name

在遠端主機中建立目錄

open host[port]

建立指定的ftp伺服器連接配接,可指定連接配接端口

newer file-name

如果遠端主機中file-name的修改時間比本地硬碟同名檔案的時間更近,則重傳該檔案

<b>cd </b>directory

改變伺服器的工作目錄

rename [from][to]

更改遠端主機的檔案名

lcd directory

在用戶端上(本地)改變工作目錄

<b>pwd</b>

顯示遠端主機的目前工作目錄

<b>bye</b>

退出FTP指令狀态

<b>quit</b>

同bye,退出ftp會話

ascii

設定檔案傳輸方式為ASCII模式

reget remote-file [local-file]

類似于get,但若local-file存在,則從上次傳輸中斷處續傳

<b>binary</b>

設定檔案傳輸方式為二進制模式

rhelp [cmd-name]

請求獲得遠端主機的幫助

![cmd [args]]

在本地主機中互動shell後退回到ftp環境,如:!ls *.zip

rstatus [file-name]

若未指定檔案名,則顯示遠端主機的狀态,否則顯示檔案狀态

accout [password]

提供登入遠端系統成功後通路系統資源所需的密碼

hash

每傳輸1024位元組,顯示一個hash符号(#)

append local-file [remote-file]

将本地檔案追加到遠端系統主機,若未指定遠端系統檔案名,則使用本地檔案名

restart marker

從指定的标志marker處,重新開始get或put,如restart 130

bye

退出ftp會話過程

<b>rmdir</b> dir-name

删除遠端主機目錄

case

在使用mget指令時,将遠端主機檔案名中的大寫轉為小寫字母

size file-name

顯示遠端主機檔案大小,如:

size idle 7200

cd remote-dir

進入遠端主機目錄

status

顯示目前ftp狀态

cdup

進入遠端主機目錄的父目錄

system

顯示遠端主機的作業系統

delete remote-file

user user-name [password][account]

向遠端主機表明自己的身份,需要密碼時,必須輸入密碼,如:user anonymous my@email

dir [remote-dir][local-file]

顯示遠端主機目錄,并将結果存入本地檔案

help [cmd]

顯示ftp内部指令cmd的幫助資訊,如help get

<b>110 </b><b>重新啟動标記應答。</b><b></b>

<b>120 </b><b>服務在多久時間内</b><b>ready</b><b>。</b><b></b>

<b>125 </b><b>資料鍊路端口開啟,準備傳送。</b><b></b>

<b>150 </b><b>檔案狀态正常,開啟資料連接配接端口。</b><b></b>

<b>200 </b><b>指令執行成功。</b><b></b>

<b>202 </b><b>指令執行失敗。</b><b></b>

<b>211 </b><b>系統狀态或是系統求助響應。</b><b></b>

<b>212 </b><b>目錄的狀态。</b><b></b>

<b>213 </b><b>檔案的狀态。</b><b></b>

<b>214 </b><b>求助的訊息。</b><b></b>

<b>215 </b><b>名稱系統類型。</b><b></b>

<b>220 </b><b>新的聯機服務</b><b>ready</b><b>。</b><b></b>

<b>221 </b><b>服務的控制連接配接端口關閉,可以登出。</b><b></b>

<b>225 </b><b>資料連結開啟,但無傳輸動作。</b><b></b>

<b>226 </b><b>關閉資料連接配接端口,請求的檔案操作成功。</b><b></b>

<b>227 </b><b>進入</b><b>passive mode</b><b>。</b><b></b>

<b>230 </b><b>使用者登入。</b><b></b>

<b>250 </b><b>請求的檔案操作完成。</b><b></b>

<b>257 </b><b>顯示目前的路徑名稱。</b><b></b>

<b>331 </b><b>使用者名稱正确,需要密碼。</b><b></b>

<b>332 </b><b>登入時需要賬号資訊。</b><b></b>

<b>350 </b><b>請求的操作需要進一部的指令。</b><b></b>

<b>421 </b><b>無法提供服務,關閉控制連結。</b><b></b>

<b>425 </b><b>無法開啟資料鍊路。</b><b></b>

<b>426 </b><b>關閉聯機,終止傳輸。</b><b></b>

<b>450 </b><b>請求的操作未執行。</b><b></b>

<b>451 </b><b>指令終止</b><b>:</b><b>有本地的錯誤。</b><b></b>

<b>452 </b><b>未執行指令</b><b>:</b><b>磁盤空間不足。</b><b></b>

<b>500 </b><b>格式錯誤,無法識别指令。</b><b></b>

<b>501 </b><b>參數文法錯誤。</b><b></b>

<b>502 </b><b>指令執行失敗。</b><b></b>

<b>503 </b><b>指令順序錯誤。</b><b></b>

<b>504 </b><b>指令所接的參數不正确。</b><b></b>

<b>530 </b><b>未登入。</b><b>  532 </b><b>儲存檔案需要賬戶登入。</b><b> 550 </b><b>未執行請求的操作。</b><b> 551 </b><b>請求的指令終止,類型未知。</b><b></b>

<b>552 </b><b>請求的檔案終止,儲存位溢出。</b><b>   553 </b><b>未執行請求的的指令,名稱不正确。</b><b></b>

繼續閱讀