Linux下架設(shè)FTP
2024-07-21 02:35:45
供稿:網(wǎng)友
linux下一般最常用的工具wu-FTPd.
wu-ftpd的安裝非常輕易,大多數(shù)版本的Linux中都包含了wu-ftpd的rpm軟件包,你可以在安裝Linux時(shí)指定裝入。假如你想自行編譯源代碼,也可以到ftp://ftp.wu-ftpd.org下載最新版本的源代碼包。
安裝好以后,可以用ckconfig命令來檢查是否已經(jīng)正確安裝。在/etc/passwd中可以指定ftp用戶的登入目錄。
wu-ftpd主要有以下6個(gè)配置文件:
ftpaccess(主要配置文件,控制存取權(quán)限)
ftpconvertions(配置文件壓縮/解壓縮轉(zhuǎn)換)
ftpgroups(設(shè)定ftp自己定義的群組)
ftphosts(設(shè)定個(gè)別的用戶權(quán)限)
ftpservers(設(shè)定不同ip/Domain Name以對(duì)應(yīng)到不同的虛擬主機(jī))
ftpusers(設(shè)定哪些帳號(hào)不能用ftp連線)
下面我們來一一介紹。
⒈/etc/ftpaccess(wu-ftpd的主要配置文件)
class--定義群組,用法如下:
class<種類><用戶地址>[<用戶地址>……]
由class定義的群組用戶才可以連線進(jìn)來,可以使用多層式的class來規(guī)范哪些群組的用戶能夠從哪些地方上來。這里有三個(gè)重要的種類,real、anonymous個(gè)guest。real假如沒有列在定義中,那么這臺(tái)機(jī)器中任何真實(shí)的一般用戶都無法用自己的帳號(hào)連上來。anonymous假如沒有在定義,就表示不讓沒有帳號(hào)的的人連上來。假如有定義guest,那么guest群組的人就可以上來。另外<用戶地址>是指ftp上來的用戶會(huì)用到的IP地址,則可自行設(shè)定。以下是一些例子:
class all real,guest,anonymous *
定義了一個(gè)名為all的class,包含三種人,所有IP的連線用戶(也就是所有人都包括了)
class local real localhost loopback
local這個(gè)class說,只有real的用戶可以從本機(jī)機(jī)器連上來
class remote guest,anonymous *
remote這個(gè)class包含了從任何地方上來的guest和anonymous用戶,但是real用戶不算
class rmtuser real !*.example.com
rmtuser這個(gè)class包含了從外面來的(除了example.com)真實(shí)用戶
autogroup--自動(dòng)對(duì)應(yīng)群組,用法如下:
autogroup[……]
當(dāng)你定義好的那些同屬于一個(gè)class的用戶,一旦連線上來就會(huì)被對(duì)應(yīng)到一個(gè)相應(yīng)的群組下面,這樣你就可以用Unix的文件權(quán)限對(duì)某一群人做限制。
deny--拒絕某些地址連線,用法如下:
deny<拒絕連線的地址><信息文件>
禁止某些機(jī)器連線,并顯示<信息文件>。例如:
deny 210.62.146.*:255.255.255.254 /etc/reject.msg
guestgroup--設(shè)定訪客群
guestuser--設(shè)定訪客帳號(hào)
realgroup--設(shè)定真實(shí)群組
realuser--設(shè)定真實(shí)帳號(hào)
nice--設(shè)定給某些class多少優(yōu)先權(quán),用法如下:
nice
在Linux中,nice的值是-20(最優(yōu)先)到19(最后處理),這里你可以指定負(fù)的值來提高某class的優(yōu)先順序。
defumask--設(shè)定某class的umask,用法如下:
defumask[]
umask是建立文件時(shí)該文件的的權(quán)限掩碼
tcpwindow--設(shè)定tcpwindow的大小
keepalive--設(shè)定是否使用TCP SO_KEEPALIVE來控制斷線情形
timeout--設(shè)定連線超時(shí),用法如下:
timeout accept<秒>
接受連線超時(shí),預(yù)設(shè)120秒
timeout connect<秒>
連線建立超時(shí),預(yù)設(shè)120秒
timeout data<秒>
數(shù)據(jù)傳送超時(shí),預(yù)設(shè)1200秒
timeout idle<秒>
用戶發(fā)呆超時(shí),預(yù)設(shè)900秒
file-limit--限制某class只能傳幾個(gè)文件,用法如下:
file-limit[][]
對(duì)某個(gè)class限制存取文件的數(shù)目,包含了in(上傳)、out(下載),total raw代表整個(gè)傳輸?shù)慕Y(jié)果,不光是數(shù)據(jù)文件。例如:
file-limit out 20 lvfour
限制lvfour這個(gè)class的用戶最多只能下載20個(gè)文件
byte-limit--限制某class只能傳幾個(gè)字節(jié),用法跟file-limit相似
limit-time--限制一個(gè)連線只能持續(xù)多久,用法如下:
limit-time{*anonymousguest}<分鐘>
為了避免有人掛在站上不下來,可以用這個(gè)方法限制用戶的上線時(shí)間,例如:
limit-time guest 5
讓guest帳號(hào)的用戶只能用5分鐘
limit--限制某class能同時(shí)幾人上線,用法如下:
limit<連線數(shù)目><時(shí)間區(qū)段><額滿信息文件>
設(shè)定某個(gè)class在某一時(shí)間區(qū)段內(nèi)最多能夠幾人同時(shí)上線,后面是當(dāng)超過連線數(shù)目時(shí)要顯示的信息。
例如:
limit all 32 Any /home/ftp/etc/toomanyuser.msg
限制所有連線在任何時(shí)間只能有32個(gè)用戶,超過則拒絕連線并顯示信息
limit levellone 5 Any2300-0600 /home/ftp/etc/toomanyuser.msg
限制levellone這個(gè)class的用戶在23:00到6:00這段時(shí)間內(nèi)只能有5人連線
noretrieve--設(shè)定哪些文件不可下載
noretrieve[absolute/relative][class=]…[-][<文件名>…]
absolute或relative指文件是用絕對(duì)路徑還是相對(duì)路徑
allow=retrieve--設(shè)定哪些文件可以下載
allow[absolute/relative][class=]…[-][<文件名>…]
loginfails--設(shè)置登入錯(cuò)誤可嘗試的次數(shù)
當(dāng)用戶連線時(shí)可能打錯(cuò)ID或密碼,這個(gè)設(shè)定可以讓他打錯(cuò)幾次以后就斷線,避免有人用窮舉法猜測(cè)密碼。
PRivate--設(shè)定線上是否可以執(zhí)行SITE GROUP/SITE GPASS
當(dāng)開放SITE GROUP與SITE GPASS指令時(shí),可以用這兩個(gè)指令切換到/etc/ftpgroup的群組。一般而言我們不會(huì)用到這個(gè)功能,以避免安全漏洞。
greeting--顯示Server的版本信息,用法如下:
greeting
當(dāng)用戶登入畫面顯示的server信息,full是預(yù)設(shè)值,包含版本號(hào)以及hostname,brief只有hostname,而terse只有“FTP server ready”的信息。
barnner--設(shè)定未進(jìn)入Login畫面之前用戶看到的信息,用法如下:
banner<文件路徑>
這里敘述了在用戶登入時(shí),在還沒打ID/PassWord之前要出現(xiàn)的信息。文件路徑指的是相對(duì)于真實(shí)的路徑,而不是相對(duì)于ftp的根目錄。
host--設(shè)定ftp主機(jī)名
email--指定ftp治理者的email地址
message--信息文件的設(shè)定,用法如下:
message<文件>{<何時(shí)>{……}}
這里的文件的路徑是相對(duì)于ftp的根目錄的,“何時(shí)”是指當(dāng)你做了什么動(dòng)作之后的反應(yīng),有幾個(gè)選擇:
login(登入時(shí))
cwd=<目錄>(進(jìn)入某目錄時(shí))
class 名稱是前面已經(jīng)定義過的,答應(yīng)你的信息只對(duì)哪些人發(fā)出。
而信息文件的內(nèi)容除了文字以外,還可以使用以下一些事先定義好的代號(hào):
%T(本機(jī)時(shí)間)
%F(目前分區(qū)所剩余的空間)
%C(目前所在的目錄)
%E(治理者的E-mail)
%R(客戶端主機(jī)名稱)
%L(本機(jī)主機(jī)名稱)
%U(用戶名稱)
%M(與我相同class用戶答應(yīng)多少人連線)
%N(與我相同class用戶目前有多少人連線)
%B(絕對(duì)磁盤限制大小,目前分區(qū)(單位blocks))
%b(preferred磁盤限制大小,目前分區(qū)(單位blocks))
%Q(目前已使用的blocks)
%I(最大可使用的inodes(+1))
%i(Preferred inodes限制)
%q(目前使用的indoes)
%H(超量使用磁盤空間的時(shí)間限制)
%h(超量使用文件數(shù)目的時(shí)間限制)
readme--通知用戶哪些README文件已經(jīng)更新
log commands--記錄用戶所使用過的命令,用法如下:
log commands<用戶種類>
log transfers--記錄用戶所傳輸?shù)奈募梅ㄈ缦拢?
log transfers<用戶種類><傳輸方向>
設(shè)定有哪些類型的用戶傳輸文件需要記錄,包含了inbound(用戶上傳)和outbound(用戶下載),例如:
log transfers anonymous,guest inbound,outbound
log security--記錄安全性,用法如下:
log security<用戶種類>
非凡用于記錄某類用戶關(guān)于noretrive、notar等有關(guān)安全性的記錄
log syslog--記錄到系統(tǒng)的syslog文件
alias--設(shè)定目錄別名,用法如下:
alias<別名字符串><目錄>
cdpath--設(shè)定cd更換目錄搜索順序
compress,tar--設(shè)定是否自動(dòng)壓縮,用法如下:
compress[……]
tar[……]
定義哪些人可以執(zhí)行壓縮以及tar
shutdown--通知用戶要關(guān)站了
shutdown<信息文件>
假如信息文件存在的話,當(dāng)這個(gè)文件指定的某時(shí)間以后,就會(huì)拒絕連線并切斷已有的連線,等時(shí)間一到就關(guān)機(jī)。這個(gè)信息文件的格式如下:
<年><月><日><時(shí)><分><拒絕倒數(shù)><斷線倒數(shù)><文字>
daemon address--指定只監(jiān)聽某個(gè)IP地址,用法如下:
daemon address
當(dāng)你有許多IP的時(shí)候,使用這個(gè)選項(xiàng)將會(huì)取消其它任何虛擬FTP主機(jī)的設(shè)定。不設(shè)定的話,監(jiān)聽所有IP。
virtual--設(shè)定虛擬FTP站臺(tái)
wu-ftpd提供了虛擬主機(jī)的功能,也就是說,在同一臺(tái)機(jī)器上提供了不同F(xiàn)TP站臺(tái),以主機(jī)名稱或IP來區(qū)分;當(dāng)然你要用名稱的話,還需要跟DNS配合才行。virtual有很多個(gè)設(shè)定:
virtual
<路徑>
可以是主機(jī)名或IP地址
root指的是ftp的根目錄,
banner是歡迎信息,logfile指的是這個(gè)虛擬站臺(tái)的log文件
以下是一些例子:
virtual virtual.com.bj root /home/ftp2
virtual virtual.com.bj banner /etc/vftpbanner.2
virtual virtual.com.bj logfile /etc/viftplog.2
virtual
<字母>
用戶可以查到hostname跟治理者email,以下是一些例子:
virtual 210.62.146.50 hostname virtual.site.com.bj
virtual vritual.site.com.bj email ftpown@virtual.site.com.bj
virtual
all