當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]互聯(lián)網(wǎng)文件傳輸協(xié)議(File Transfer Protocol ,FTP) 標(biāo)準(zhǔn)是在RFC959說(shuō)明的。該協(xié)議定義了一個(gè)從遠(yuǎn)程計(jì)算機(jī)系統(tǒng)和本地計(jì)算機(jī)系統(tǒng)之間傳輸文件的一個(gè)標(biāo)準(zhǔn)。一般來(lái)說(shuō),傳輸文件的用戶需要先經(jīng)過(guò)認(rèn)證以后才能登錄網(wǎng)站,然后方能訪問(wèn)在遠(yuǎn)程服務(wù)器的文件。而大多數(shù)的FTP服務(wù)器往往提供一個(gè)GUEST的公共帳戶來(lái)允許沒(méi)有遠(yuǎn)程服務(wù)器的用戶可以訪問(wèn)該FTP服務(wù)器。

1.1 什么是FTP:文件傳輸協(xié)議原理
1.1.1 命令選擇
1.1.2 命令格式
1.2 wu-Ftpd的安裝
1.3 讓FTP服務(wù)器運(yùn)轉(zhuǎn)起來(lái)
1.4 配置文件的設(shè)置
1.4.1 /etc/ftpaccess的設(shè)置
1.4.2 /etc/ftpusers和/etc/ftphosts的設(shè)置
1.4.3 /etc/ftpconversions設(shè)置
1.4.1 wu-ftp的相關(guān)程序
1.5 開(kāi)設(shè)只能FTP的帳戶
1.6 設(shè)置虛擬FTP主機(jī)

什么是FTP:文件傳輸協(xié)議原理
互聯(lián)網(wǎng)文件傳輸協(xié)議(File Transfer Protocol ,FTP) 標(biāo)準(zhǔn)是在RFC959說(shuō)明的。該協(xié)議定義了一個(gè)從遠(yuǎn)程計(jì)算機(jī)系統(tǒng)和本地計(jì)算機(jī)系統(tǒng)之間傳輸文件的一個(gè)標(biāo)準(zhǔn)。一般來(lái)說(shuō),傳輸文件的用戶需要先經(jīng)過(guò)認(rèn)證以后才能登錄網(wǎng)站,然后方能訪問(wèn)在遠(yuǎn)程服務(wù)器的文件。而大多數(shù)的FTP服務(wù)器往往提供一個(gè)GUEST的公共帳戶來(lái)允許沒(méi)有遠(yuǎn)程服務(wù)器的用戶可以訪問(wèn)該FTP服務(wù)器。

一個(gè)FTP會(huì)話通常包括五個(gè)軟件元素的交互。

用戶接口 提供了一個(gè)用戶接口并使用客戶端協(xié)議解釋器的服務(wù)
客戶 PI 客戶協(xié)議解釋器,其項(xiàng)遠(yuǎn)程服務(wù)器協(xié)議機(jī)發(fā)送命令并且驅(qū)動(dòng)客戶數(shù)據(jù)傳輸過(guò)程
服務(wù)器PI 服務(wù)器協(xié)議解釋器,響應(yīng)客戶協(xié)議機(jī)發(fā)出的命令并驅(qū)動(dòng)服務(wù)器端數(shù)據(jù)傳輸過(guò)程
客戶 DTP 客戶數(shù)據(jù)傳輸過(guò)程,其負(fù)責(zé)完成和服務(wù)器數(shù)據(jù)傳輸過(guò)程及客戶端本地文件系統(tǒng)的通信
服務(wù)DTP 服務(wù)器數(shù)據(jù)傳輸過(guò)程,其負(fù)責(zé)完成和客戶數(shù)據(jù)傳輸過(guò)程及服務(wù)器端文件系統(tǒng)的通信

在RFC 959中,一般使用用戶這個(gè)名詞來(lái)指代客戶。RFC 959定義了客戶PI和服務(wù)器PI交互的方式和規(guī)范。用戶接口與PI和DTP交互的機(jī)理都并不是協(xié)議標(biāo)準(zhǔn)的一部分。PI和DTP往往通常是在同一個(gè)程序模塊中實(shí)現(xiàn)的。

在FTP會(huì)話中,一共會(huì)存在有兩個(gè)獨(dú)立的網(wǎng)絡(luò)連接,一個(gè)是由兩端的PI使用的,另一個(gè)是由兩端的DTP使用的。PI之間的連接一般被稱作控制連接(control connection),DTP之間的連接被稱做數(shù)據(jù)連接(data connection)

使用TCP服務(wù)的控制和數(shù)據(jù)連接

通常情況下,F(xiàn)TO服務(wù)器監(jiān)聽(tīng)端口號(hào)21來(lái)等待控制連接建立請(qǐng)求。而數(shù)據(jù)連接端口號(hào)的選擇依賴于控制連接上命令。通常是客戶發(fā)送一個(gè)控制消息來(lái)指定客戶監(jiān)聽(tīng)并等待服務(wù)器端發(fā)送數(shù)據(jù)連接建立請(qǐng)求的端口號(hào)。

對(duì)數(shù)據(jù)傳輸和控制命令傳輸來(lái)使用不同的獨(dú)立連接有如下優(yōu)點(diǎn):兩個(gè)連接可以選擇不同的合適服務(wù)質(zhì)量,如:對(duì)控制連接來(lái)說(shuō)高需要更小的延遲時(shí)間,對(duì)數(shù)據(jù)連接來(lái)說(shuō)需要更大的數(shù)據(jù)吞吐量;而且可以避免實(shí)現(xiàn)數(shù)據(jù)流中的命令的通明性及逃逸。

當(dāng)傳輸建立時(shí),總是由客戶端首先發(fā)起。然而客戶和服務(wù)器都可能是數(shù)據(jù)發(fā)送者。除了傳輸用戶請(qǐng)求下載文件,數(shù)據(jù)傳輸過(guò)程同樣在客戶端請(qǐng)求列服務(wù)器端目錄結(jié)構(gòu)時(shí)建立。

1.1.1 命令選擇
當(dāng)一個(gè)傳輸建立時(shí),一般通常需要指定四個(gè)方面的屬性:

文件類型
該屬性指定如何將文件的數(shù)據(jù)匹配成適于傳輸?shù)母袷剑还灿兴姆N可能的選擇:

ASCII文件類型
在發(fā)送端,文件從本地文本文件格式轉(zhuǎn)換為 NVT ASCII格式,每行結(jié)束有一個(gè)CR/LF對(duì)來(lái)標(biāo)識(shí)。 在接收端,再被轉(zhuǎn)換為本地的文本格式。

這說(shuō)明了為什么Unix主機(jī)之間傳輸文本文件為何傳輸?shù)臄?shù)據(jù)量要大于文件的實(shí)際大小。若傳輸一段端或傳輸兩端都不使用ASCII文本編碼,則是應(yīng)該由數(shù)據(jù)傳輸過(guò)程來(lái)實(shí)現(xiàn)本地編碼和NVT ASCII 編碼之間的轉(zhuǎn)換。

EBCDIC文件類型
類似于ASCII,區(qū)別僅僅上使用EBCDIC字符編碼

圖象 (或二進(jìn)制)文件類型
文件以本地傳輸內(nèi)容傳輸,在遠(yuǎn)端以同本地完全相同的內(nèi)容存儲(chǔ)。

本地文件系統(tǒng)
用在字節(jié)大小不是8位的環(huán)境下。沒(méi)字節(jié)位數(shù)由發(fā)送者指定。

在實(shí)際應(yīng)用中,只有ASCII和圖象格式使用的較多。

格式控制
該屬性是和將文本文件最后傳送到打印設(shè)備相關(guān)的,其中有多種方式來(lái)實(shí)現(xiàn)將垂直格式信息編碼到文件中,包括指示一個(gè)新頁(yè)開(kāi)始的方式。有如下方式可供選擇:

無(wú)須打印格式控制,這是缺省值
Telnet打印控制,在telnet協(xié)議中定義的控制字符包含在數(shù)據(jù)流中。.
Fortran打印控制,
該屬性在實(shí)際中很少使用。

結(jié)構(gòu)
文件可以擁有內(nèi)部結(jié)構(gòu),在傳輸中該結(jié)構(gòu)被保留。由數(shù)據(jù)傳輸過(guò)程來(lái)負(fù)責(zé)在傳輸中的結(jié)構(gòu)及本地結(jié)構(gòu)之間相互匹配,有三種可能性:

文件結(jié)構(gòu)
這實(shí)際上意味著文件被看作沒(méi)有內(nèi)部結(jié)構(gòu)的連續(xù)的字節(jié)流。

記錄結(jié)構(gòu)
文件是有一系列記錄組成的結(jié)構(gòu)。這只適用于文本文件。

頁(yè)面結(jié)構(gòu)
也可以稱做塊結(jié)構(gòu)。每一頁(yè)都伴隨一個(gè)頁(yè)號(hào)來(lái)傳輸,從而以順序的方式來(lái)完成傳輸。

頁(yè)面結(jié)構(gòu)很少在實(shí)際中遇到。記錄結(jié)構(gòu)也不是很常見(jiàn)。對(duì)于文本文件使用ASCII文件類型可以獲得相同的效果。

傳輸模式
該屬性可以取三個(gè)不同的值:

流模式
文件的以字節(jié)流的方式傳輸。

塊模式
文件以一個(gè)塊連接一個(gè)塊的方式傳輸,每個(gè)塊的開(kāi)頭都有一個(gè)頭。

壓縮模式
一個(gè)簡(jiǎn)單的運(yùn)程長(zhǎng)度壓縮編碼被應(yīng)用,來(lái)壓縮連續(xù)的相同的字節(jié)。

實(shí)際中,一般只有流模式被使用。而壓縮一般通過(guò)使用各種其他的工具程序來(lái)獲得。

當(dāng)一次傳輸被建立,客戶端一般指定一個(gè)或多個(gè)前面說(shuō)明的屬性。若服務(wù)器端不能支持某個(gè)選項(xiàng),服務(wù)器將用一個(gè)錯(cuò)誤信息來(lái)響應(yīng)客戶端,并不具有協(xié)商機(jī)制。

FTP提供了充足的命令來(lái)使用戶和遠(yuǎn)程建立連接并訪問(wèn)遠(yuǎn)程文件系統(tǒng)。

1.1.2 命令格式
命令以NVT ASCII串的格式被傳輸。每個(gè)命令以三個(gè)或四個(gè)大寫的NVT ASCII字符開(kāi)始,后面帶有選項(xiàng)參數(shù)和一個(gè)CR/LF對(duì)來(lái)標(biāo)識(shí)命令結(jié)束

應(yīng)答由三個(gè)NVT ASCII數(shù)字及一個(gè)選項(xiàng)消息組成。

一個(gè)長(zhǎng)的應(yīng)答也許會(huì)有多個(gè)消息組成,第一個(gè)消息的三個(gè)數(shù)字后帶有一個(gè)破折號(hào),最后的消息不帶有破折號(hào)。中間的消息無(wú)須攜帶三個(gè)數(shù)字,但是如果帶了三個(gè)數(shù)字,則也需要破折號(hào)。

下面是所有的命令的列表。帶有星號(hào)的命令一般很少使用,所以往往在具體實(shí)現(xiàn)中不支持。

String Meaning
ABOR 放棄傳輸
*ACCT 某些系統(tǒng)將帳號(hào)和用戶與文件系統(tǒng)相關(guān)聯(lián)
*ALLO 為即將傳送的文件分配空間。后面攜帶的參數(shù)來(lái)確定字節(jié)數(shù)
*APPE 將文件附加到已經(jīng)存在的文件后面
CDUP 在遠(yuǎn)程系統(tǒng)上將當(dāng)前目錄切換到上級(jí)父目錄
CWD 改變遠(yuǎn)程系統(tǒng)的工作目錄
DELE 刪除遠(yuǎn)程系統(tǒng)的文件
HELP 讀取服務(wù)器的幫助信息,如:支持的命令的列表
LIST 在一個(gè)新建立的數(shù)據(jù)連接上發(fā)送當(dāng)前工作目錄下的文件名列表
MKD 創(chuàng)建目錄
MODE 指定傳輸模式,可攜帶的參數(shù)是:S、B或 C.
NLST 在一個(gè)新建立的數(shù)據(jù)連接上發(fā)送一個(gè)當(dāng)前目錄下的“完全”的目錄列表
NOOP 空操作,防止連接斷掉
PASS 提供一個(gè)用戶登錄密碼,必須立即跟隨在USER命令后
*PASV 指定服務(wù)器數(shù)據(jù)傳輸過(guò)程監(jiān)聽(tīng)等待客戶端的數(shù)據(jù)連接連接建立請(qǐng)求
PORT 指定客戶端監(jiān)聽(tīng)等待服務(wù)器端建立的連接的端口號(hào)
PWD 顯示服務(wù)器端的當(dāng)前工作目錄名
QUIT 退出登錄并終止連接
*REIN 重新初始化,退出登錄但是并不斷開(kāi)連接,后面必須隨后發(fā)出一個(gè)新的USER命令
*REST 從服務(wù)器的一個(gè)標(biāo)識(shí)處重新開(kāi)始傳輸
RETR 從遠(yuǎn)程系統(tǒng)取回一個(gè)文件
RMD 刪除一個(gè)目錄
*RNFR 指定要被命名的文件的老的路徑名,隨后必須是一個(gè)RNTO命令
*RNTO 指定要被命名的文件的新的路徑名
*SITE 站點(diǎn)特有的服務(wù)器提供的服務(wù)
*SMNT 結(jié)構(gòu)加載,提供一個(gè)文件系統(tǒng)結(jié)構(gòu)的遠(yuǎn)程系統(tǒng)路徑名
*STAT 狀態(tài)信息
STOR 上載一個(gè)文件到服務(wù)器上,若文件已經(jīng)存在則覆蓋
*STOU 上載一個(gè)文件到服務(wù)器上,不覆蓋已經(jīng)存在的文件
STRU 指定文件結(jié)構(gòu),參數(shù)可以是F、R或P.
*SYST 報(bào)告遠(yuǎn)程系統(tǒng)的操作系統(tǒng)類型
TYPE 指定文件類型,參數(shù)可以是A、E、I、L只有TYPE A和TYPE I常用

控制連接命令應(yīng)答有如下形式:

Type Description
1yz 主動(dòng)初步應(yīng)答,在發(fā)送另一個(gè)命令以前等待另一個(gè)應(yīng)答
2yz 主動(dòng)最后應(yīng)答,最后一個(gè)命令成功結(jié)束
3yz 主動(dòng)中間應(yīng)答,必須再發(fā)送一個(gè)命令
4yz 暫時(shí)被動(dòng)應(yīng)答,要求的動(dòng)作當(dāng)時(shí)不能完成,但可以重試
5yz 永久被動(dòng)應(yīng)答,要求的動(dòng)作不能完成,不應(yīng)該重試

"y"數(shù)字編碼進(jìn)一步的信息

Digit Meaning
0 語(yǔ)法錯(cuò)誤
1 信息
2 連接狀態(tài)
3 認(rèn)證和記帳
4 保留
5 File s文件系統(tǒng)狀態(tài)

下面是一些典型的消息:

Number Meaning
125 數(shù)據(jù)連接打開(kāi),傳輸開(kāi)始
200 命令OK
331 用戶名OK 需要輸入密碼
425 不能打開(kāi)數(shù)據(jù)連接
452 錯(cuò)誤寫文件
500 語(yǔ)法錯(cuò)誤-不可識(shí)別的命

具體的詳細(xì)情況可以參見(jiàn)RFC



wu-Ftpd的官方權(quán)威站點(diǎn)地址是:http://www.wu-ftpd.org/。



1.2 wu-Ftpd的安裝
當(dāng)前,Linux環(huán)境下有許多ftp服務(wù)器軟件可供選擇,但是目前最常見(jiàn)的仍然是wu-Ftpd服務(wù)器。這里主要討論該軟件的安裝和配置。

一般來(lái)說(shuō),在安裝了linux時(shí),缺省都會(huì)自動(dòng)安裝wu-ftpd服務(wù)器,但是有時(shí)候?yàn)榱四撤N需要也需要自己親自重新安裝該服務(wù)器軟件。安裝wu-Ftpd有兩方式,一種是安裝rpm形式的發(fā)布包;一種是自己動(dòng)手去編譯生成Ftp服務(wù)器。


rpm包可以在http://rpmfind.net/linux/RPM/WByName.html處下載得到,以rpm包方式安裝非常簡(jiǎn)單,只需要在按下面的簡(jiǎn)單的幾個(gè)步驟就可以完成,假設(shè)下載得到的rpm包存放在/tmp目錄下:

#cd /tmp
#rpm -ivh wu-ftpd-1.6.0-9.i386.rpm

壓縮的源代碼可以在ftp://ftp.wu-ftpd.org/pub/wu-ftpd/出得到。這里我們以最新的1.6.0為例說(shuō)明如何編譯安裝wu-ftpd。

1、解開(kāi)源代碼

1) 將壓縮的源代碼拷貝到/usr/src下

#cp wu-ftpd.1.6.0.tar.gz /usr/src

2) 對(duì)壓縮文檔進(jìn)行解壓縮:

#tar xvfz wu-ftpd.1.6.0.tar.gz
#cd wu-ftpd-1.6.0

2、敲入命令 "./build xxx" ,可以在這里指定一個(gè)C語(yǔ)言編譯器:"./build CC=yyy xxx" yyy 指用來(lái)替代 "cc" 的其他的編譯器。對(duì)于linux環(huán)境下的gcc編譯器,命令應(yīng)該為:"./build CC=gcc xxx"

#build CC=gcc lnx


xxx可以取下面的值:
gen : 通用make(當(dāng)移植到心得系統(tǒng)時(shí)需要拷貝它)
aix : IBM AIX
aux : AU/X
bdi : BSD/OS
bsd : BSD
dec : DEC Unix 3.X
du4 : DEC Unix 4.X or later
dyn : Dynix
fbs : FreeBSD 1.0 or later
hiu : Hitachi Unix
hpx : HP-UX
lnx : Linux (tested on 1.0.30)
nbs : NetBSD 1.X
nx2 : NeXTstep 1.x
nx3 : NeXTstep 3.x
osf : OSF/1
osx : Mac OS X
ptx : ???
sco : SCO Unix 3.2v4.2/SCO OpenServer 5
sgi : SGI Irix 4.0.5a
sny : Sony NewsOS
sol : SunOS 5.x / Solaris 1.x
s41 : SunOS 4.1.x
ult : Ultrix 4.x
uxw : UnixWare 1.1 or later
clean : Clean up object files and such to reduce disk space after building.
install: Install ftpd


Copying Makefiles.

Linking src/config.h

Making support library.
gcc -O3 -fomit-frame-pointer -fno-strength-reduce -pipe -c strcasestr.c
gcc -O3 -fomit-frame-pointer -fno-strength-reduce -pipe -c authuser.c
gcc -O3 -fomit-frame-pointer -fno-strength-reduce -pipe -c snprintf.c
rm -f libsupport.a
ar cq libsupport.a strcasestr.o authuser.o snprintf.o
ranlib libsupport.a
: : :
: : :
: : :

編譯成功以后將生成如下幾個(gè)可執(zhí)行文件:

ftpd FTP服務(wù)器程序
ftpshut 用于關(guān)閉FTP守護(hù)進(jìn)程的程序
ftpcount 記數(shù)程序,顯示目前ftp登錄的人數(shù)
ftpwho 查看當(dāng)前FTP服務(wù)器的連線情況,類似與系統(tǒng)的who命令,只不過(guò)是查看ftp登錄的用戶
ckconfig 檢查FTP的設(shè)置是否正確
ftprestart 重新啟動(dòng)ftp服務(wù)器
privatepw 改變wu_ftpd組訪問(wèn)文件信息


3、若只是升級(jí)到一個(gè)新的版本,應(yīng)該首先備份系統(tǒng)所有的舊的配置文件。否則這些配置文件將被覆蓋。為了適應(yīng)自己的需求,應(yīng)當(dāng)編輯樣本配置文件來(lái)滿足自己的要求,具體配置文件的需求參見(jiàn)后面的內(nèi)容。


4、以超級(jí)用戶身份敲入命令"./build install"

#build install

installing binaries.
install -c -o bin -g bin -m 110 bin/ftpd /usr/sbin/in.ftpd
install -c -o bin -g bin -m 111 bin/ftpshut /usr/bin/ftpshut
install -c -o bin -g bin -m 111 bin/ftprestart /usr/bin/ftprestart
install -c -o bin -g bin -m 111 bin/ftpcount /usr/bin/ftpcount
install -c -o bin -g bin -m 111 bin/ftpwho /usr/bin/ftpwho
install -c -o bin -g bin -m 111 bin/privatepw /usr/bin/privatepw
installing manpages.
install -c -o bin -g bin -m 444 doc/ftpcount.1 /usr/man/man1/ftpcount.1
install -c -o bin -g bin -m 444 doc/ftpwho.1 /usr/man/man1/ftpwho.1
install -c -o bin -g bin -m 444 doc/ftpaccess.5 /usr/man/man5/ftpaccess.5
install -c -o bin -g bin -m 444 doc/ftpconversions.5 /usr/man/man5/ftpconversio5
install -c -o bin -g bin -m 444 doc/ftphosts.5 /usr/man/man5/ftphosts.5
install -c -o bin -g bin -m 444 doc/xferlog.5 /usr/man/man5/xferlog.5
install -c -o bin -g bin -m 444 doc/ftpd.8 /usr/man/man8/ftpd.8


5、編輯 "/etc/inetd.conf" 文件,指向新的ftpd守護(hù)進(jìn)程,大多數(shù)情況下,這一步是不必的,因?yàn)樵赽uild install時(shí),會(huì)將新的守護(hù)進(jìn)程拷貝覆蓋老的守護(hù)進(jìn)程。若希望使用ftpd的增強(qiáng)的擴(kuò)展功能,應(yīng)該在這行最后加上"-a"選項(xiàng)。

ftpd守護(hù)進(jìn)程一般可以攜帶如下參數(shù),也可以不帶任何參數(shù):

-d debug參數(shù),當(dāng)ftpd守護(hù)進(jìn)程出現(xiàn)錯(cuò)誤時(shí),會(huì)將錯(cuò)誤信息寫入到系統(tǒng)記錄文件/usr/adm/syslog中
-l 記錄每次ftp會(huì)話信息到/usr/adm/messages中
-t 設(shè)置當(dāng)FTP客戶端多久無(wú)操作就自動(dòng)斷線,這個(gè)參數(shù)后面指定等待的時(shí)間,如 -t 600 表示若客戶
端若連續(xù)10分鐘沒(méi)有動(dòng)作就自動(dòng)斷線,缺省值是15分鐘
-a 使用ftpaccess配置文件內(nèi)容對(duì)ftpd進(jìn)行更詳細(xì)復(fù)雜的設(shè)置
-A 不使用ftpaccess配置文件的設(shè)置,缺省值是-A
-i 當(dāng)客戶端有上載文件的動(dòng)作時(shí),就記錄在文件xferlog中
-L 使用戶連接ftp服務(wù)器期間使用的所有命令都被記錄到/usr/adm/messages中

6、拷貝tar、gzip、gunzip、compress、uncompress等文件到 "~ftp/bin"中,拷貝"ls"為"~ftp/bin/ls"。

7、若是第一次安裝,使用"ckconfig"程序查找ftpd的各種配置文件存放目錄:ftpconversions、ftpusers、 和ftpgroups。在"doc/examples"目錄下有樣本文件。"ckconfig"是一個(gè)可執(zhí)行程序,確保修復(fù)該程序檢測(cè)到的任何問(wèn)題。

1.3 讓FTP服務(wù)器運(yùn)轉(zhuǎn)起來(lái)
一般來(lái)說(shuō),只要正確地編譯安裝了wu-ftpd,該服務(wù)器就可以正常運(yùn)行。用戶可以通過(guò)FTP命令從各種系統(tǒng)上連接該服務(wù)器。

1.4 配置文件的設(shè)置

1.4.1 /etc/ftpaccess的設(shè)置
這個(gè)配置文件是FTP服務(wù)器最重要的配置文件,這個(gè)文件的設(shè)置決定了FTP是否可以正常工作及許多訪問(wèn)權(quán)限的設(shè)置。如下面的例子所示:
class all real,guest,anonymous *

limit all 10 Any /etc/msgs/msg.dead

readme README* login
readme README* cwd=*

message /welcome.msg login
message .message cwd=*

compress yes all
tar yes all

log commands real
log transfers anonymous,real inbound,outbound

shutdown /etc/shutmsg

email user@hostname


下面是設(shè)置文件各個(gè)指示(directive)的詳細(xì)說(shuō)明:

指示: loginfails n
密碼輸入n次就自動(dòng)斷開(kāi)連接

指示:autogroup 組名 類別 [ ...]
若一個(gè)匿名用戶屬于任何一個(gè)參數(shù)類別的類,則FTP服務(wù)器將實(shí)施setegid()調(diào)用使其屬于這個(gè)組名定義的組,這樣做是為了實(shí)現(xiàn)某些特定類別的匿名用戶可以訪問(wèn)一些只允許本組及擁有者可以訪問(wèn)的文件。組名必須是/etc/group內(nèi)定義的有效組。

指示: class 類名 類別(real、guest、anonumous) IP地址
這個(gè)指示是設(shè)定FTP服務(wù)器用戶的類別。
FTP服務(wù)器的用戶可以分為以下三種類別:
real 在該FTP服務(wù)器上擁有合法帳戶的用戶;
guest 另外定義某些特定組的用戶;
anonymous 匿名用戶;

舉例說(shuō)明:
class outworld real,guest,anonymous *
定義一個(gè)名為outworld的類,該類包含三種類型的用戶:real,guest,anonymous。該類在后面的指示中使用。其中"*"是類定義中的IP地址部分,表示網(wǎng)絡(luò)上的所用主機(jī)。也就是說(shuō)明允許任何主機(jī)連接FTP服務(wù)器。若希望對(duì)訪問(wèn)FTP的主機(jī)進(jìn)行一定的權(quán)限設(shè)置,可以這樣做:
class friend real,guest,anonymous *.linuxaid.com.cn 201.101.13.*
指定義一個(gè)friend類,該類從*.linuxaid.com.cn 及201.101.13.*訪問(wèn)FTP服務(wù)器時(shí)有特定的權(quán)限設(shè)定。

指示: limit 類別 人數(shù) 時(shí)間 文件名
該指示設(shè)定在某個(gè)類在某個(gè)時(shí)間內(nèi)允許連接FTP服務(wù)器的人數(shù)的限制,并指定當(dāng)連接人數(shù)超過(guò)限制,后面的用戶連接時(shí)顯示給用戶的消息信息。

舉例說(shuō)明:
limit local 20 Any /tmp/message/msg.toomany
上面的例子限定local這個(gè)類中的擁護(hù)同一時(shí)間只能有20人同時(shí)上網(wǎng)連接這臺(tái)FTP服務(wù)器,若超過(guò)20人則顯示/tmp/message/msg.toomany的文件的內(nèi)容
limit outworld 100 MoTu|Any 2200-0800 /tmp/message/msg.limit
這個(gè)例子限制outworld這個(gè)類的用戶只能在周一周二或每天的晚上10點(diǎn)到第二天早上的8點(diǎn)之間訪問(wèn)該FTP服務(wù)器,而且同時(shí)連線的人數(shù)不可以超過(guò)100人,若超過(guò)100人,則顯示/tmp/message/msg.limit的文件的內(nèi)容

/tmp/message/msg.limit的內(nèi)容為:
對(duì)不起!本服務(wù)器只允許匿名用戶在周一周二全天及其他每天晚上10點(diǎn)到第二天早上的8點(diǎn)之間訪問(wèn),當(dāng)前時(shí)間為%T;而且只允許同時(shí)有%M個(gè)匿名用戶訪問(wèn),當(dāng)前有%N個(gè)用戶在訪問(wèn)該服務(wù)器。請(qǐng)?jiān)诤线m的時(shí)間訪問(wèn)本FTP服務(wù)器,謝謝!
這里的%M是一個(gè)變量,代表同時(shí)允許連接的人數(shù)的上限,F(xiàn)TP服務(wù)器可以用前面設(shè)置的值自動(dòng)替代該變量,其他允許的變量包括:
%T 本地當(dāng)前時(shí)間;
%F CWD所在分區(qū)剩余空間,以KB為單位。但該變量不是所有系統(tǒng)都支持。
%C 當(dāng)前工作目錄;
%E 定義在/etc/ftpaccess文件中的系統(tǒng)管理員的E-mail地址;
%R 遠(yuǎn)端主機(jī)名;
%L 本地主機(jī)名;
%U 登錄時(shí)所給的用戶名;
%N 這個(gè)類別當(dāng)前連接的用戶數(shù)目;
利用這些參數(shù),可以編輯一個(gè)詳細(xì)的說(shuō)明文件,這樣可以讓用戶清楚當(dāng)前服務(wù)器資源使用情況。

指示: readme 說(shuō)明文件 指令
當(dāng)用戶執(zhí)行指定的"指令"時(shí),系統(tǒng)就會(huì)自動(dòng)顯示所設(shè)置的說(shuō)明文件;
舉例說(shuō)明:
readme README* login
當(dāng)用戶執(zhí)行登錄動(dòng)作時(shí),只要以README開(kāi)頭的文件內(nèi)容就會(huì)顯示給用戶。
readme README* cwd=*
表示用戶切換目錄時(shí)(cwd),只要以README開(kāi)頭的文件內(nèi)容就會(huì)顯示給用戶。
通常README*應(yīng)該是該目錄下文件的說(shuō)明,讓登錄的用戶可以清楚地知道目錄中存放了那些文件;

指示: message 文件名 指令
使當(dāng)用戶執(zhí)行特定的"指令"時(shí),系統(tǒng)就將指定的文件內(nèi)容顯示給用戶;
舉例說(shuō)明:
message /msg.welcome login
指定當(dāng)用戶登錄時(shí),將自動(dòng)顯示/tmp/message/msg.welcome的內(nèi)容給用戶,注意這里的/msg.welcome指ftp根目錄下的msg.welcome文件,即/home/ftp/msg.welcome。
message /welcome cwd=*
指定當(dāng)用戶切換另一個(gè)目錄時(shí),只要目錄中有msg.welcome文件,就顯示給用戶

指示: compress (yes/no) 類別
設(shè)置哪個(gè)類別的用戶可以使用壓縮功能;
舉例: compress yes local outworld
允許local 和outworld兩個(gè)類別的 用戶使用壓縮功能

指示: tar (yes/no) 類別
指定哪個(gè)類別的用戶可以使用tar功能;


指示: passwd-check (none/trivial/rfc822) (enforce/warn)
設(shè)定當(dāng)用戶以匿名方式登錄服務(wù)器時(shí)密碼的方式:
none 表示不對(duì)密碼進(jìn)行驗(yàn)證,任何密碼都可以登錄;
trival 表示只要密碼中包含@就可以登錄;
rfc822 表示密碼一定要符合rfc822中規(guī)定的E-mail格式才能登錄。如:webmaster@linuxaid.com.cn
enforce 表示輸入的密碼不符合指定格式就不允許登錄;
warn 表示輸入的密碼不符合指定格式顯示警告信息,但仍然允許登錄;

指示: log commands 類別(read/guest/anonumous)
設(shè)定那些用戶登錄時(shí),所使用的操作會(huì)被記錄在文件/usr/adm/xferlog中。

指示: log transfer 類別(read/guest/anonumous) (inbound/outbound)
設(shè)定指定的用戶類別在上載還是下載時(shí)的相關(guān)信息被記錄到/usr/adm/xferlog中。
舉例說(shuō)明:
log transfer anonymous,real inbound,outbound
當(dāng)anonymous或real用戶登錄后,上載和下載的操作會(huì)被記錄在文件/usr/adm/xferlog中。

指示: shutdown 文件名
FTP服務(wù)器關(guān)閉的時(shí)間可以后面的文件名中指定的文件中指定,設(shè)定的時(shí)間一到,便無(wú)法登錄FTP服務(wù)器了,只有將這個(gè)文件刪除才能恢復(fù)FTP服務(wù)器。文件的格式可以由命令ftpshut來(lái)建立。

指示: delete (yes/no) 類別(real/anonymous/guest)
設(shè)定是否允許指定用戶使用delete命令。
舉例說(shuō)明:
delete no guest,anonymous
設(shè)定大概內(nèi)登錄的用戶為guest或anonymous上不允許執(zhí)行delete命令。

指示: overwrite (yes/no) 類別(real/anonymous/guest)
設(shè)定是否允許指定用戶使用overwrite指令。

指示: reame (yes/no) 類別(real/anonymous/guest)
設(shè)定是否允許指定用戶使用readme指令。

指示: chmod (yes/no) 類別(real/anonymous/guest)
設(shè)定是否允許指定用戶使用chmod指令。

指示: umask (yes/no) 類別(real/anonymous/guest)
設(shè)定是否允許指定用戶使用umask指令。


指示: upload [absolute|relative] [class=]... [-]

["dirs"|"nodirs"] []

定義允許用來(lái)上載的目錄。若允許上載,所有新上載的文件的所有者及組由和定義 ,訪問(wèn)權(quán)限將為。對(duì)于覆蓋老文件的上載文件將保持原來(lái)的所有者及訪問(wèn)權(quán)限信息。文件上載的權(quán)限信息由最大匹配目錄項(xiàng)定義,如:
upload /var/ftp * no
upload /var/ftp /incoming yes ftp daemon 0666
upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs
would only allow uploads into /incoming and /incom-
:
將只允許/incoming和/incom-ing/gifs目錄上載。上載到/incoming目錄下的文件將屬于ftp/daemon,訪問(wèn)權(quán)限為0666;而上載到/incoming/gifs下的文件將屬于jlc/guest,訪問(wèn)權(quán)限為0600。應(yīng)該注意的是 必須匹配"ftp"用戶的passwd文件中的主目錄。
"dirs"和"nodirs"選項(xiàng)用來(lái)設(shè)定是否允許在該目錄下創(chuàng)建新的子目錄。但是缺省是允許創(chuàng)建子目錄的。
設(shè)定新創(chuàng)建的目錄的訪問(wèn)權(quán)限,缺省為0777。
上載指示只能施用于用戶主目錄(chroot()的參數(shù))等同于的用戶,可以為*來(lái)表示匹配任何主目錄。
和也可能指定為*,在這種情況下,任何上載的文件或創(chuàng)建的目錄的所有者都等于起父目錄的所有者。
選項(xiàng)[absolute|relative]指定是是絕對(duì)路徑還是相對(duì)于chroot()參數(shù)指定的目錄的相對(duì)路徑。缺省是絕對(duì)路徑。也可以指定任意多個(gè)class='來(lái)進(jìn)行進(jìn)一步限定。若指定了任何目錄,則該上載指示只影響這些組的用戶。


指示: alias 目錄別名 目錄路徑
給指定目錄設(shè)置一個(gè)別名,當(dāng)切換目錄時(shí)可以使用別名。
舉例說(shuō)明:
alias xwin /pub/linux/xwindows
為/pub/linux/xwindows設(shè)置別名xwin,登錄以后只要輸入命令cd xwin就可以進(jìn)入該目錄。

指示: cdpath 目錄
該功能和系統(tǒng)的PATH環(huán)境變量設(shè)置類似,當(dāng)cd /etc時(shí),F(xiàn)TP首先查看當(dāng)前目錄下是否有etc子目錄,無(wú)則看是否有別名,若沒(méi)有則根據(jù)該指示設(shè)定的路徑查詢。

舉例說(shuō)明:
cdpath /pub/linux
cdpath /pub
cdpath /
搜索順序?yàn)?/pub/linux /pub /

指示: path-filter 類別(real/anonymous/guest) 目錄
設(shè)定上載文件名限制。
舉例說(shuō)明:
path-filter anonymous /etc/pathmsg^[-A-Za-z0-9_.]*$^.^-
path-filter guest /etc/pathmsg^[-A-Za-z0-9_.]*$^.^-
設(shè)置限制anonymous和guest用戶上載的文件名只能包含A-Z、a-z、0-9和._-,名字以"."和"-"開(kāi)頭的文件不能上載到服務(wù)器上。

指示: guestgroup [ ...]
guestuser [ ...]
realgroup [ ...]
realuser [ ...]
對(duì)于guestgroup指示,若一個(gè)真實(shí)(real)用戶屬于任何一個(gè)所指定的組,則其FTP會(huì)話都被FTP服務(wù)器以匿名的方式進(jìn)行處理。也就是說(shuō),chroot()被調(diào)用,用戶不再允許發(fā)出USER和 PASS 命令。必須是有效的組。
這里用戶的home目錄必須被爭(zhēng)取的設(shè)置,要確實(shí)和匿名用戶一致,/etc/passwd中的相關(guān)項(xiàng)的home目錄被分割為兩個(gè)部分,第一部分是chroot()調(diào)用的根目錄參數(shù),第二個(gè)是用戶相對(duì)于根目錄的主目錄,兩部分之間以"/./分隔",如:
guest1::100:92:Guest Account:/ftp/./incoming:/etc/ftponly
當(dāng)guest1成功登錄進(jìn)入,F(xiàn)TP服務(wù)器將調(diào)用chroot("/ftp"然后調(diào)用chdir("/incoming"。則guest1就如同匿名用戶一樣只能訪問(wèn)/ftp下面的容(對(duì)于guest1來(lái)說(shuō),它就是"/"。
可以是組名或數(shù)字ID。若使用數(shù)字ID,需要在數(shù)字前面加上一個(gè)"%"。使用*表示所有組。
guestuser和guestgroup指示類似,只不過(guò)是限定一個(gè)單一用戶罷了。
realuser和realgroup有同樣的語(yǔ)法,但是和guestuser及guestgroup起相反的作用,其是允許某個(gè)組的用戶或某個(gè)用戶以真實(shí)身份訪問(wèn)FTP服務(wù)器。如:
guestuser *
realgroup admin
指定所有的非匿名用戶登錄進(jìn)入服務(wù)器以后,都被做為匿名用戶處理,但是admin組的用戶是例外,登錄以后以真實(shí)身份存在。

指示: guestgroup 功能
設(shè)定guest組的功能。
舉例說(shuō)明:
guestgroup ftponly


指示: nice []
設(shè)定FTP服務(wù)器守護(hù)進(jìn)程的調(diào)度優(yōu)先級(jí)。

指示: defumask []
若遠(yuǎn)程用戶屬于class,則守護(hù)進(jìn)程創(chuàng)建的文件的umask為umask。若沒(méi)有指定class則將umask作為缺省的umask.

指示: tcpwindow []
設(shè)置數(shù)據(jù)連接的TCP窗口大小,若不明白含義,一般不要去設(shè)置它。

指示:keepalive
設(shè)置TCP socket的SO_KEEPALIVE參數(shù)選項(xiàng)。

指示:timeout accept
timeout connect
timeout data
timeout idle
timeout maxidle
timeout RFC931
設(shè)置各種超時(shí)時(shí)鐘,這些參數(shù)必須在對(duì)TCP協(xié)議非常熟悉的情況下才應(yīng)該去設(shè)定,一般不要改動(dòng)這些值,具體含義參見(jiàn)man ftpaccess。

指示: file-limit [] []
限制某個(gè)組的任何一個(gè)用戶允許上載的文件的數(shù)量,若沒(méi)有指定class,則該限制施用于所有沒(méi)有限定的組。raw指示這個(gè)限制包括所有的傳輸,而不僅僅是數(shù)據(jù)文件。

指示:byte-limit [] []

限制某個(gè)類的任何一個(gè)用戶允許傳輸?shù)臄?shù)據(jù)總量。

指示: limit-time {*|anonymous|guest}
限定一個(gè)對(duì)話允許的持續(xù)時(shí)間,缺省無(wú)限制。真實(shí)用戶沒(méi)有該限制。

指示:guestserver []
控制哪個(gè)站點(diǎn)允許進(jìn)行匿名連接,若沒(méi)有指定hostname,則拒絕所有匿名連接。

指示: noretrieve [absolute|relative] [class=] ... [-] ...
設(shè)定拒絕那些類訪問(wèn)哪些特定文件。例如:
noretrieve /etc/passwd core
指定任何訪問(wèn)者都不可以訪問(wèn)文件/etc目錄下的passwd文件和所有的名為"core"的文件。

指示:allow-retrieve [absolute|relative] [class=]... [-] ...
允許訪問(wèn)這些文件。


指示:private
當(dāng)一個(gè)用戶登錄進(jìn)入,,指示SITE GROUP和 and SITE GPASS用來(lái)指定一個(gè)增強(qiáng)的訪問(wèn)組和相應(yīng)的密碼。若輸入的組名和密碼有效的話,該用戶將變?yōu)樵摻M的成員,具有該組的訪問(wèn)權(quán)限。

指示:greeting full|brief|terse
greeting text
允許控制在遠(yuǎn)程用戶登陸進(jìn)來(lái)以后,給用戶多少greet信息及信息內(nèi)容。

指示:banner
和message類似,不過(guò)banner消息是在用戶輸入用戶名和密碼以前顯示給用戶的。


指示: hostname
定義FTP服務(wù)器缺省的主機(jī)名。


指示: email
定義FTP維護(hù)者的emai地址。

指示: log security (anonymous|guest|real)
使記錄違背安全規(guī)則如:(noretrieve, .notar, ...)的命令。

指示:log syslog
log syslog+xferlog
重定向記錄消息到系統(tǒng)記錄文件syslog,缺省只記錄到xferlog。

指示:daemonaddress
若該值沒(méi)有被設(shè)置,則服務(wù)器則監(jiān)聽(tīng)所有的接入請(qǐng)求,否則,服務(wù)器只接受來(lái)自定義的連接請(qǐng)求。這個(gè)設(shè)置一般不要設(shè)置,設(shè)置以后會(huì)阻止使用虛擬主機(jī)或其他一些以后擴(kuò)展的功能。

指示: virtual
打開(kāi)虛擬FTP服務(wù)器的支持。是虛擬服務(wù)器的IP地址。第二個(gè)參數(shù)指定如root目錄,bannner文件,log文件等的路徑。


指示:virtual
設(shè)置在greeting消息中顯示的主機(jī)名字或電子郵件。


指示:virtual allow [ ...]
virtual deny [ ...]
一般真實(shí)和guest用戶不允許登陸進(jìn)入虛擬主機(jī),該兩個(gè)指示用來(lái)重新對(duì)允許和拒絕訪問(wèn)的虛擬主機(jī)的用戶進(jìn)行細(xì)化定義。

指示:virtual private
通常,拒絕匿名用戶登陸進(jìn)入虛擬主機(jī)。


指示: defaultserver deny [ ...]
defaultserver allow [ ...]
對(duì)允許訪問(wèn)缺省(非虛擬)FTP服務(wù)器的用戶進(jìn)行定義。

指示:defaultserver private
拒絕匿名用戶訪問(wèn)缺省FTP服務(wù)器。


指示: deny ip地址/域名 說(shuō)明文件
設(shè)定限制哪個(gè)IP地址或域名的用戶不允許登錄到服務(wù)器。
舉例說(shuō)明:
deny 201.101.15* *.hacker,com /tmp/message/deny.msg
限制IP地址為201.101.15*及域名為*.hacker,com的機(jī)器不允許登錄服務(wù)器



1.4.2 /etc/ftpusers和/etc/ftphosts的設(shè)置
/etc/ftpusers是用來(lái)設(shè)定系統(tǒng)上的某些用戶不允許使用FTP傳送文件,/etc/ftphosts是用來(lái)設(shè)定某些主機(jī)不允許連接本FTP服務(wù)器的。這樣做的目的都是為了安全考慮。

/etc/ftpusers使用的范例如下:

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
限制某些用戶登入FTP服務(wù)器是出于系統(tǒng)安全的原因,例如要避免超級(jí)用戶登入系統(tǒng)。并且禁止某些和一些命令名相同的用戶進(jìn)入FTP服務(wù)器。

/etc/ftphosts的示例如下:

# Example host access file
#
# Everything after a '#' is treated as comment,
# empty lines are ignored
#allow [ ...]
# Only allow host(s) matching to log in as .
#deny [ ...]
# Always deny host(s) matching to log in as .

allow ideal *.linuxaid.com.cn 10.0.0.0/8
deny fred *.hacker.com 131.211.31.0/24

這里只允許ideal從域名以linuxaid.com.cn為后綴的主機(jī)及10.0.0.0/255.0.0.0的主機(jī)登錄進(jìn)入FTP服務(wù)器;禁止fred從*.hacker.com和131.211.31.0/24登錄進(jìn)入FTP服務(wù)器。這里的username若為anonymous或ftp都指匿名用戶。

1.4.3 /etc/ftpconversions設(shè)置
該文件用來(lái)設(shè)定當(dāng)用戶下載文件時(shí)應(yīng)該做那些操作,例如壓縮、解壓縮等。文件內(nèi)容如下所示:

:.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
: : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
:.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
: : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
: : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
: : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
: : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
: : :.crc:/bin/cksum %s:T_REG::CKSUM
: : :.md5:/bin/md5sum %s:T_REG::MD5SUM


文件設(shè)置說(shuō)明:

:.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
表示對(duì)所有以".Z"結(jié)尾的文件使用/bin/compress -d -c"的方式解壓縮。

: : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
表示將傳送的文件壓縮為".Z"格式。

:.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
表示將所有以".gz"的文件用"/bin/gzip -cd"解壓縮。

: : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
表示將傳送的文件壓縮為".gz"格式。

: : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
表示將要傳送的文件用"tar"打包。

: : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
表示將要傳送的文件壓縮成"tar.Z"的格式

: : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
表示將要傳送的文件壓縮成"tar.gz"的格式

: : :.crc:/bin/cksum %s:T_REG::CKSUM
表示將要傳送的文件進(jìn)行CRC校驗(yàn)處理。

: : :.md5:/bin/md5sum %s:T_REG::MD5SUM
表示將要傳送的文件進(jìn)行md5校驗(yàn)。

其實(shí)安裝FTP以后缺省的配置文件已經(jīng)將常用的壓縮也解壓縮的程序定義進(jìn)去了,所以一般不需要修改這個(gè)文件的內(nèi)容,但可以根據(jù)實(shí)際需要修改內(nèi)容的順序。例如,用戶要下載一個(gè)"file.tar.gz"的文件,但此FTP上沒(méi)有這個(gè)文件,但是有文件file,那么FTP服務(wù)器會(huì)將file打包壓縮為file.tar.gz在傳遞給用戶。若服務(wù)器上沒(méi)有file這個(gè)文件,服務(wù)器會(huì)按照/etc/ftpconversions文件中指定的順序去搜索,,以這個(gè)例子而言,會(huì)依次搜索file.Z、file.gz、file.tar、file.tar.Z、file.tar.gz、file.crc、file.md5文件,將先找到的傳送給用戶。所以文件/etc/ftpconversions的內(nèi)容可以按照需要而改變順序。

到現(xiàn)在為止,已經(jīng)安裝配置成功了一個(gè)提供匿名訪問(wèn)的FTP服務(wù)器,可以連接上去測(cè)試功能是否符合需要。

1.4.1 wu-ftp的相關(guān)程序
ftpcount這個(gè)程序可以統(tǒng)計(jì)當(dāng)前連接的用戶數(shù)目,并給出上限,如:

[root@linux doc]# ftpcount
Service class friend - 0 users (no maximum)
Service class local - 0 users (no maximum)
Service class outworld - 0 users (no maximum)
這里正在連接的屬于local的有0個(gè)人,沒(méi)有上限。其他幾個(gè)類別含義一樣。

[root@linux doc]# ftpwho
Service class friend:
- 0 users (no maximum)
Service class local:
- 0 users (no maximum)
Service class local:
- 0 users (no maximum)
當(dāng)前三個(gè)類別都沒(méi)有用戶連接。

ftpshut

該程序主要用來(lái)生成/etc/shutmsg,也就是前面/etc/ftpaccess中設(shè)定的shutdown命令,ftpshut的使用格式如下:

ftpshut [ -V ] [ -l min] [ -d min] time [ warning-message ... ]
-l 該選項(xiàng)設(shè)置在關(guān)閉FTP服務(wù)器以前多少分鐘停止用戶的連接請(qǐng)求
-d 該選項(xiàng)設(shè)置在關(guān)閉FTP服務(wù)器以前多少分鐘將已經(jīng)連接的用戶斷線
time 設(shè)置關(guān)閉FTP服務(wù)器的時(shí)間,例如希望在晚上10點(diǎn)關(guān)閉FTP服務(wù)器,則為2200
warning-message 斷線以前顯示給用戶的告警信息
例如:

[root@linux /etc]# ftpshut -l15 -d5 1800 "ftp server will shutdown"
[root@lix /etc]# less shutmsg
2000 04 07 18 00 0015 0005
ftp server will shutdown


1.5 開(kāi)設(shè)只能FTP的帳戶
很多時(shí)候需要開(kāi)設(shè)一些只允許ftp到服務(wù)器的用戶,實(shí)現(xiàn)方法如下:

1、按照通常的方式為這些用戶在系統(tǒng)上開(kāi)設(shè)帳戶。

[root@ns /etc]#useradd ftp_user1
[root@ns /etc]#chmod 700 /etc/shadows
[root@ns /etc]#vi /etc/shadows

刪除項(xiàng):
ftp_user1:!!:11113:0:99999:7:-1:-1:134537372
中第二個(gè)字段的"!!",然后再以ftp_usre1用戶登錄,就不會(huì)詢問(wèn)口令,然后使用passwd為該用戶設(shè)定口令

2、使用vi修改/etc/shells文件,添加/dev/null項(xiàng)或/bin/passwd,如下所示:

[root@ns /etc]# cat shells
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh

修改為:

[root@ns /etc]# cat shells
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
/dev/null
/bin/passwd


2、使用vi打開(kāi)文件/etc/passwd
3、將那些只允許FTP的系統(tǒng)的用戶的登錄shell改為/dev/null(若不允許用戶修改其口令)或/bin/passwd(若允許用戶修改其口令字),如下所示:

ftp_user1:503:504::/home/ftp_user1:/bin/bash
改為:
ftp_user1:503:504::/home/ftp_user1:/dev/null

ftp_user1:503:504::/home/ftp_user1:/bin/passwd

這樣,則該用戶只能使用如pop3、FTP等服務(wù),而不能通過(guò)telnet登錄到系統(tǒng)中。

1.6 設(shè)置虛擬FTP主機(jī)
所謂虛擬匿名主機(jī),指一臺(tái)機(jī)器上有多個(gè)IP地址,并且可以向外提供過(guò)個(gè)匿名的FTP服務(wù)器,這些服務(wù)器在邏輯上是獨(dú)立的,有不同的訪問(wèn)控制表,不同的下載內(nèi)容。下面是設(shè)置一臺(tái)虛擬FTP服務(wù)器的步驟:

1. 首先對(duì)本地某個(gè)網(wǎng)卡設(shè)置別名IP地址,即在一塊網(wǎng)卡上綁定多個(gè)IP地址:如你的內(nèi)部FTP主機(jī)為191.168.0.4

你可再綁定一個(gè)IP地址如下:
/sbin/ifconfig eth0:0 191.168.0.5 up //向接口添加一個(gè)新的IP
/sbin/route add -host 191.168.11.7 eth0:0 //增添路由信息

1. 先創(chuàng)建目錄/home/virtualftp和/var/log/virtualftp。生成banner文件/home/virtualftp/banner_message修改FTP服務(wù)器的主配置文件/etc/ftpaccess,增加對(duì)虛擬FTP的支持信息,加下面的行到該文件中:

virtual 191.168.0.5 root /home/virtualftp
virtual 191.168.0.5 banner /home/virtualftp/banner_message
virtual 191.168.0.5 logfile /var/log/virtualftp/xferlog

上面三條指示分別設(shè)置虛擬主機(jī)的根目錄,虛擬主機(jī)的記錄文件,虛擬主機(jī)的登錄顯示信息。上面路徑和文件名可隨便定義。


3. 拷貝所需要的匿名FTP文件,主要是/lib,/etc,/bin目錄
# cp /home/ftp/* /home/virtualftp -a

4.在DNS中定義191.168.0.5,設(shè)置成虛擬FTP的域名映射。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉