FTP服務是Internet上的標準服務之一,用來在網絡上傳輸文件。在linux系統中,通常用wu-ftpd來實現該服務(www.wu-ftpd.org)。
1、安裝
根據服務對象的不同,FTP服務可以分為兩類:一類是系統FTP服務器,它只允許系統上的合法用戶使用;另一類是匿名FTP服務器,它允許任何人登錄到FTP服務器,和服務器連接后,在登錄提示中輸入Anonymous,即可訪問服務器。針對這兩種服務,可以通過RedHat的第一張光盤安裝Wu-Ftpd的RPM包,只需以Root身份進入系統并運行下面的命令即可:
Rpm - ivh anonftp -x.x-x.i386.rpm
Rpm - ivh wu-ftpd-x.x.x-x.i386.rpm
其中-x.x-x和-x.x.x-x是版本號。
2、啟動
和Apache一樣,Wu-Ftpd也可以配置為自動啟動:執行RedHat附帶的Setup程序,在“System Service”選項中選中Wu-Ftpd,按下[OK]按鈕確定退出即可。
自動啟動固然方便,但是,當我們更改了Wu-Ftpd配置文件,需要用到手工啟動:
啟動:/usr/sbin/ftprestart
關閉:/usr/sbin/ftpshut
3.FTP服務器的配置
通常,wu-ftpd提供三種ftp登錄形式:
1、anonymous ftp
2、real ftp
3、guest ftp
anonymous ftp 應用最廣泛的一種ftp,通常,用戶以anonymous為用戶名,以電子郵件地址為密碼進行登錄。
real ftp 就是以真實的用戶名和密碼進行登錄,登錄以后,用戶可以訪問整個目錄結構。通常認為,real ftp 能對系統安全構成極大威脅,所以,除非萬不得以,應盡量避免使用real ftp。
guest ftp 也是real ftp 的一種形式,不同之處在于,一個geust登錄后,他就不能訪問除宿主目錄以外的內容。
在wu-ftpd中,是通過特定的配置文來控制ftp 訪問的,主要的配置文件有:
/etc/ftpaccess
/etc/ftpusers
/etc/ftphosts
/etc/ftpconversions
等等,下面我們就分別來講講這些配置文件。
ftpaccess是主要的ftp配置文件,在該文件內你可以實現對ftp各方面的控制,由于控制命令名目繁多,我們將以wu-ftpd的2.6版本為例分幾個部分來講,相關文檔可見wu-ftpd手冊。
1、訪問控制
class [...]
說明:該命令用于定義用戶類,定義用戶類的目的是為了方便對服務的控制。其中:
為類名,為一字符串;
可以以逗號分隔的"anonymous"、"guest"、"real"關鍵字之一,real說明該用戶類中的用戶可以用真實的賬號來訪問ftp,anonymous說明該用戶類中的用戶使用匿名ftp,guest說明該用戶類中的用戶用guest賬號訪問ftp。
定義該用戶類源ip地址或域名,可以用以下定義方法:ip地址:子網掩碼,或address/cidr。這里也可以指定一個文件,該文件包含了該用戶類源ip地址的定義。之前還可以用驚嘆號表示除以外的地址類。
例子:
class anon anonymous *
class mng real 210.221.80.0/24
class user real !domainname.com
第一條定義了anon用戶類,為匿名用戶,可以是來自任何地方。
第二條定義了mng用戶類,為真實用戶,來自210.221.80網段。
第三條定義了user用戶類,為真實用戶,可以是除domainname.com以外的任何地址。
我們接著來看ftpaccess的其他配置。
deny
說明:拒絕源地址符合的訪問,同時顯示文件的內容。也可以是某一文件,該文件包含了拒絕的ip地址類的定義??梢杂?!nameserverd來拒絕沒有注冊域名的客戶端請求。
如:
deny !nameserverd /home/ftp/etc/noname.msg
拒絕沒有注冊域名的客戶端請求,并且顯示noname.msg的內容。
guestgroup [...]
guestuser [...]
realgroup [...]
realuser [...]
說明:如果客戶端為中的真實用戶(real user)則該客戶端被當作guest用戶處理;如果客戶端為真實用戶則該客戶端也被當作guest用戶處理;realgroup和realuser把非匿名連接視為真實用戶連接。和也可以用用戶id和組id代替。
比如:guestuser *
realgroup admin
表示除了admin組以外的任何非匿名連接視為guest用戶連接,admin仍舊視為真實用戶連接。
nice []
說明:如果為中的用戶連接的話,則調整ftpd進程的nice值為中指定的值。
keepalive
說明:是否在會話過程中保持數據通道的激活狀態。
timeout accept
timeout connect
timeout data
timeout idle
timeout maxidle
timeout RFC931
說明:設置各種超時。
accept設置ftpd服務等待被動數據通道連接請求的超時。(缺省為120秒)
connect設置ftpd服務標準數據通道連接請求的超時。(缺省為120秒)
data設置ftpd服務等待客戶端在數據通道上多長時間沒有動作為超時。(缺省為1200秒)
idle 設置ftpd服務等待客戶端用戶在命令通道上多長時間沒有動作為超時。(缺省為900秒)
maxidle 設置用戶可以在客戶端設置的更長的空閑時間的上限。(缺省為10秒)
RFC931 設置一個RFC931協議會話的最長時間。為零則取消對該協議的支持。
tcpwindows []
說明:設置tcp 窗口的大小。一般linux系統缺省值為6。如果網絡連接情況較好可以增大該值,否則,應減小之。
我們接著來看ftpaccess的其他配置。
file-limit [] []
說明:用來限制在給定類中的用戶可以傳輸的文件數目??煞譃檫M、出、合計三類。如果沒有指定類,則改選項將應用于所有沒有傳輸文件限制的類。可選參數raw用來限制總的流量。
byte-limit [] []
說明:說明:用來限制在給定類中的用戶可以傳輸的數據流量??煞譃檫M、出、合計三類。如果沒有指定類,則改選項將應用于所有沒有傳輸文件限制的類??蛇x參數raw用來限制總的流量。
limit-time {*|anonymous|guest}
說明:用于限制一個ftp會話的總時間。缺省值為無限,真實用戶不受限制。
guestserver []
說明:控制那一部主機用來提供anonymous或guest訪問。如果沒有指定,則拒絕所有anonymous或guest訪問。
limit
說明:控制在一定的時間內,可以訪問ftp的指定),當達到最大限制數時,顯示的內容。
的格式有些復雜:星期天到星期六分別為Su、Mo、Tu、We、Th、Fr、Sa,時間采用軍用格式,在小時和分鐘間沒有冒號,范圍用破折號指定。
如:
limit anon 20 MoTuWe,Th0800-1730 /home/ftp/etc/topmsg
表示在星期一、星期二、星期三的全天,星期四的上午八點到下午五點半這段時間內,對anon類的用戶登錄數目限制為20,達到這一限制時顯示topmsg的內容。
noretrieve [absolut|relative][class=]...[-]
說明:拒絕傳送某些文件。你可以指定該文件的絕對路徑,也可以只給出文件名。如果只給出文件名,則將拒絕傳送所有符合該文件名的文件。
如:
noretrieve /etc/group passwd anon
將拒絕向anon類傳送etc目錄下的group文件及任何目錄下的passwd文件。
allow-retrieve [absolut|relative] [class=]...[-]
說明:定義允許傳送的文件,即使被noretrieve拒絕。
loginfails
說明:當登錄失敗的次數達到時,顯示“repeated login failures"并終止ftp會話。
private
說明:是否允許用戶利用SITE GROUP和SITE GPASS命令進入需要密碼的特權用戶組中。
在這里要引用到/etc/ftpgroups文件,該文件的格式為:
access_groupname:encrypted_passard:real_group
access_groupname為用來引用特殊組的名字,encrypted_passard是該組的密碼, real_group為/etc/group中實際被引用的組。
2、顯示信息控制
指當用戶連接到ftp或做出某些特定行為(如改變目錄)時,向用戶顯示的特定信息。
greeting full|breif|terse
greeting text
說明:定義再用戶登錄前向用戶顯示的信息。
full 向用戶顯示主機名和ftp服務程序的版本,為缺省設置。
breif 只向用戶顯示主機名。
terse 僅僅顯示“FTP server ready"
text 可以指定你所想顯示的任何信息。
從安全角度出發,建議用terse.
banner
說明:在用戶鍵入用戶名和密碼前向用戶顯示的信息。
為想要顯示的文件的完整路徑名。
如:banner /home/ftp/etc/.banner
hostname
說明:定義在greeting時,向用戶顯示的主機名。
email
說明:定義網絡管理員的email地址。
message { {...}}
說明:當用戶登錄或更改目錄時,向用戶顯示所定義的文件的內容。
可以是LOGIN,說明當用戶登錄成功時向用戶顯示信息。
也可以是CWD=,即當用戶更改目錄到時顯示信息。
為了避免迷惑用戶,該信息將只顯示一次。
當anonymous用戶觸發message時,必須相對于ftp主目錄。
在該文件中可以包含一些特殊的參數(完整參數請參考手冊):
%T 本地時間
%F 目錄的可用空間
%C 當前的工作目錄
%E 管理員的email地址
%R 遠程主機名
%L 本地主機名
%U 用戶登錄時的用戶名
%M 在該用戶類中最大的允許登錄數
%N 該用戶類的再線人數
readme {}
說明:基本用法和功能同message.
3、日志控制
log commands
說明:對特定的typelist的任何命令都進行日志。
typelist可以是real、anonymous、guest 中的一種。
log transfers
說明:對特定的typelist的文件傳輸進行日志。
typelist同上,direction可以是inbound或oubound兩種。
如:
log transfers real inbound,outbound
對real用戶下載或上傳進行日志。
log security
說明:對種種違反安全規則的行為進行日志,typelist同上。
log syslog
說明:把特定文件inbound或oubound的傳輸日志重定向到syslog.沒有該條語句則會把這些日志寫到xferlog.
log syslog+xferlog
說明:把特定文件inbound或oubound的傳輸日志寫到系統日志和xferlog.
4、其他控制
alias
說明:為目錄定義已個別名。
比如:alias tools /pub/soft/tools
則當用戶使用cd tools命令時,不管用戶當前處于什么目錄都將進入/pub/soft/tools目錄,從這里我們也可以看出是相對于ftp宿主目錄的。
cdpath
說明:和dos中的path命令一樣,cdpath 是用來定義ftp會話中的用戶使用cd命令時的搜索路徑。
如:cdpath /pub/soft
cdpath /pub/doc
假設用戶執行了一條cd net命令,則搜索的順序如下:
a. ./net (搜索當前目錄)
b. 搜索所有別名定義
c. /pub/soft/net
d. /pub/doc/net
compress []...
tar []...
說明:使符合定義的用戶在傳輸之前可以對文件進行壓縮、解壓和歸檔。實際的傳輸過程在/etc/ftpconversions中定義。
shutdown
說明:如果指向的文件存在的話,則服務程序將定期地檢查該文件,看看服務器是不是將被關閉。如果服務器將被關閉,則會通知用戶,并在指定的時間后拒絕新的用戶連接,在指定的時間后中斷當前的用戶會話。
該文件的格式如下:
其中:
必須大于1970
范圍為0—11
范圍為0—23
范圍為0—59
拒絕新的用戶連接的時間,格式為HHMM。
中斷當前的用戶會話的時間,格式為HHMM。
為向用戶的信息??梢园韵伦兞浚?br /> %s 系統關閉的時間
%r 拒絕新的用戶連接的時間
%d 中斷當前的用戶會話的時間
daemonaddress
說明:讓ftp監聽指定的ip地址,缺省將監聽說有的ip地址。
linux ftp
新聞熱點
疑難解答