FTP:文件傳輸協議,客戶/服務器模式
一、安裝WU-FTPD
#rpm -ivh wu-ftpd*.rpm
#tar zxvf wu-ftpd*.tar.gz
#cd wu-ftp*
#./configure
#make
#make install
如果沒有指定安裝目錄,那麼其執行文件默認會分別安裝在/usr/bin和/usr/sbin 中。
二、啟動WU-FTPD
cd 到/etc/xinetd.d/目錄
打開wu-ftpd文件,將其中的disable = yes 改為disable = no。
然後重新啟動xinetd服務:
#/etc/rc.d/init.d/xinetd restart三、確認FTP是否啟動
#telnet localhost 21
Trying 127.0.0.1
connected to rh
escape character is '^]',
220 rh.china.com FTP server (version wu-2.6.1) mon jul 24 01:59:25 EDT 2000)ready.
^] //按ctrl+]號中斷。
telnet>q //按Q鍵退出。
四、匿名FTP的設置與組織
/etc/ftpaccess //WU-FTPD 最重要的設定文件WU-FTPD的可執行程序
/etc/ftpconversions //設置FTP匿名用戶傳輸文件時,可對文件做tar,壓縮,解壓縮等處理。
/etc/ftpgroups //限定哪些用戶組不能登陸到FTP服務器。
/etc/ftphosts //限定哪些網絡地址的機器不能連接到FTP服務器
/etc/ftpusers //限定誰不能登陸FTP服務器。
/usr/bin/ftpcount //查詢目前各類的上線用戶人數。放置上,下載文件的目錄
/usr/bin/ftprestart //重新激活FTP
/usr/bin/ftpshut //產生shutmsg文件,並暫停FTP服務。
/usr/bin/ftpwho //查詢聯機情況
/var/ftp
為了增加系統的安全性,可以使用adduser添加FTP服務器資源的管理者,如:ftpadm,並將ftpadm加入到adm組,這樣當別人對FTP有所建議時,可以發email給ftpadm,而不必凡事都要root出馬。
修改 /etc/group內容應該如下:
adm:x4:root,adm,daemon,ftpadm然後:
#adduser ftpadm
/var/ftp/bin目錄
因為匿名用戶看不到除/var/ftp以外的東西,所以必須提供足夠的文件供匿名FTP使用,默認/var/ftp是FTP用戶的根目錄,/var/ftp/bin目錄
放置一些常用的FTP命令,如:ls,tar,gzip,compress等執行文件,此目錄權限應該是111。
/var/ftp/etc目錄
這個目錄放置一些匿名FTP用戶需要的設置文件,如passwd,group。當匿名用戶執行ls -l時,FTP服務器的文件、目錄才會顯示擁有者的名稱和組而不是出現數字。此目錄的權限是111。
/var/ftp/pub目錄
放置下載文件的起點,通常在pub目錄下,會將文件資源特性分類,再建立子目錄,由管理員自行規劃。
/var/ftp/upload目錄
上傳目錄。系統默認不提供上傳目錄,如果需要做文件上傳,要自己建立此目錄,以提供匿名FTP用戶上傳文件,為了避免病毒,一個好的管理員會篩選upload裡的文件和目錄,一切都沒有問題後,才將上傳的文件移至下載區。一般設置upload目錄的權限是:chmod 733
/var/ftp/upload/
五、限制登入的用戶和主機
將可登入的用戶分為3類,分別是real,anonymous,guest。
real:
在此服務器擁有帳號的用戶,並以他的帳號登陸,此類帳戶默認的登入的目錄是其專屬目錄,但只要他擁有某目錄的讀取權限,即使該目錄不在其專屬目錄中,也能切換到哪個目錄。
anonymous:
指的是在此服務器上沒有帳戶的用戶,可以用anonymous及電子郵件地址當作帳號名稱和密碼,以匿名方式登入服務器,登入後的根是/var/ftp,此類用戶不能切換到除/var/ftp以外的目錄。
guest:
來賓帳號。在某些情況下,管理員可能只希望某些擁有帳號的用戶登入後,只能存取專屬目錄下的文件,而不得存取專屬目錄以外的文件,因此管理員可以利用ftpaccess設定文件中的 guestuser或guestgroup參數指定屬於這類的用戶有哪些。
設定不可以登入的用戶
/etc/ftpusers設定文件用來設定不允許哪些用戶登入,方法是每個用戶占一行。
修改/etc/ftphosts設定文件
該文件是用來設定允許或拒絕用戶從不同的地址登入,有allow和deny兩種設定格式。
1允許特定用戶從指定地址登入 allow
格式如下:
allow <帳號名稱> <主機地址> ...例如,允許test用戶從*.china.com網域登陸,
allow test *.china.com
2拒絕特定用戶從指定地址登入 deny
格式如下:
deny <帳號名稱> <主機名稱> ...例如,不允許test用戶從202.198.16.8地址登陸,
deny test 202.198.16.8
六、服務器環境設定(/etc/ftpaccess文件)
指令
class
class 用來定義用戶工作組,並指定屬於這工作組的是哪些類別的用戶,或來自哪個阻擊地址,同時我們可以在一個ftpaccess文件中定義多個工作組,格式如下:
class <工作組名稱><用戶類別><用戶所在的主機地址>
工作組名稱:此工作組名稱,由管理員定義
用戶類別: 可以使用的類別是real,anonymous,guest。
主機地址:登入用戶所在的主機的IP或域名,此處可明確指明主機地址,或采用通配符*也可以。
下例為缺省值:
class all real,guest,anonymous *例如,class group1 real *
//此定義的工作組名稱是all,並設定此工作組成員為從任何地方登入的所有類別的用戶。
class group2 real,guest,anonymous *.china.com 203.84.200.*
設定FTP服務器管理員的E-mail地址,當WU-FTPD要顯示管理者email地址時,即會顯示此處的設定格式:
email [email protected]
練習:
1啟動FTP
2建立用戶帳戶aaa和bbb,設置不允許bbb登陸
3建立工作組group1,定義此工作組成員是從192.168.9.0網絡登陸的real,和anonymous類別的用戶
guestuser
指定屬於guest類別的用戶
例如(格式):
guestuser aaa bbb
guestgroup
用來指定屬於guest 類別的工作組有哪些,下例將指定屬於guestgp工作組的用戶,都屬於guest類別:guestgroup guestgp //guestgp工作組要先建立才行。
loginfails
設定允許用戶最多登入失敗的次數,格式如下:
loginfails <登入次數> //登入次數指當用戶輸入了錯誤的帳號和密碼超過了設定的登入次數之後,即不再允許用戶再嘗試登入。
例如:
loginfails 3
readme
用來設定當用戶登入FTP後,或第一次切換某目錄時,會出現提示信息提醒用戶自行讀取說明文件,其格式如下:
readme <說明文件路徑><時機><工作組名稱>
說明文件路徑:
設定說明文件的位置,此處設定值可以使用通配符*
時機:
設定要顯示提示信息的時機,使用login選項,表示用戶登入後;使用cwd=<路徑>選項,表示用戶第一次切換到該目錄時。
工作組名稱:
只針對指定的工作組,才顯示提示信息。
練習:
設定:
readme README* login //當用戶登入FTP時,系統會提示用戶讀取同一目錄下的README*文件在user的專屬目錄下建立以README文件,或建立以README名稱開頭的文件,並輸入些內容。
重新啟動xinetd服務
/etc/rc.d/init.d/xinetd restart
在shell狀態以user身份連接ftp server。會有提示你讀取README文件
例二
設定readme README* cwd=* //表示當用戶地一次切換到任一目錄時,系統會提示用戶讀取同一目錄下的README*文件。
例三
設定readme README* CWD=/LIB GROUP1 //表示當group1工作組的用戶第一次切換到/lib目錄時,系統才會提示該用戶讀取README*文件。
message
是用來設定當用戶登入後,或第一次切換到某目錄時,系統所要顯示的歡迎信息,其格式如下:
message <信息文件路徑><時機><類別>
信息文件路徑:
設定歡迎信息文件存放的位置,此位置的路徑是相對於/var/ftp目錄的。
時機:
設定要顯示提示信息的時機。使用login選項,表示用戶登入後,cwd=< 路徑>則表示用戶第一次切換到該目錄時,只有當用戶地一次切換到該目錄時,才顯示此提示信息,若再次切換回到同一目錄則不再顯示信息。
只針對指定的工作組,才顯示歡迎信息。
可使用的變量
%T默認值是:
FTP服務器主機的時間
%F
目前目錄分區所剩下的空間大小
%C
目前所在的FTP目錄名稱
%E
FTP服務器管理員的EMAIL地址
%R
用戶原來主機的名稱(遠程的)
%L
FTP服務器的主機名稱
%U
登入的用戶名稱
%M
同一工作組可允許最多幾個用戶登入
%N
同一工作組目前已經登入的用戶數目
message /welcome.msg login //表示當匿名用戶登入時,可以在welcome.msg文件內輸入下列內容:
執行/var/ftp目錄下的welcome.msg文件message .
message cwd=* //表示當匿名用戶轉換
目錄時(cwd=*),執行轉換目錄下的.message隱藏文件。
歡迎來自%R的朋友!
本地主機地址是%L!
您是目前站上第%N位用戶!
目前本地時間是:%T。
您目前所在的目錄是:%C。
如果有問題,請和我聯系:%E。
tar
設定文件壓縮功能。tar可以設定是否允許某些工作組利用tar方式在線壓縮文件,格式:
tar <設定值><工作組名稱>
設定值:可使用的選項有yes,no;分別表示啟動和關閉使用tar功能。
工作組名稱:利用class定義的工作組名稱。
例如(默認為允許all工作組使用tar在線壓縮文件)
tar yes all
指令的執行權限
此類可用來設定允許哪些類別的用戶執行chmod等命令,格式:
chmod <設定值><用戶類別>
delete<設定值><用戶類別>
overwrite<設定值><用戶類別>
rename<設定值><用戶類別>
umask<設定值><用戶類別>
設定值:可使用的選項有yes,no。分別表示是否允許執行此指令,默認所有人都能執行用戶類別:可使用的類別為real,anonymous,guest。
例如(不允許guest,anonymous身份登入的用戶執行chmod,delete,overwrite,rename指令)
chmod no guest,anonymous
delete no guest,anonymous
overwrite no guest,anonymous
rename no guest,anonymous
compress
可設定是否允許某些工作組利用compress方式進行在線壓縮文件,格式:
compress <設定值><工作組名稱>設定值:可使用的選項有yes,no。分別表示啟動和關閉使用compress功能工作組名稱:利用class定義的工作組名稱例如(允許all組可以使用compress功能)
compress yes all
log commands
可用來指定要記錄哪些用戶所執行的命令,其格式如下:
log commands <用戶類別>
用戶類別:可使用的用戶類別是real,anonymous,guest
例如:
log commmands real
//記錄內容會被存儲在/var/log/xferlog內。
log transfers
可用來指定要記錄哪些用戶傳輸文件的動作,格式:
log transfers <用戶類別><傳輸動作>
用戶類別:可使用的類別是real,anonymous,guest。
傳輸動作:可使用的選項有兩種:inbound(用來記錄上傳到服務器的動作);outbound(表示記錄從服務器端下載文件的動作)
例如(記錄anonymous用戶所有上傳和下載文件的動作):
log transfers anonymous inbound,outbound
//記錄內容會寫到/var/log/xferlog內。
shutdown
設定何時關閉FTP服務器,格式:
shutdown <設定文件的路徑>
設定文件的路徑:
此設定文件的內容是有關shutdown指令的設定,默認值是/etc/shutmsg文件。
此文件格式如下:
<年><月><日><時><分><不能FTP登入的時間><用戶被踢出的時間>例如:
2003 12 7 0 30 20 5
//表示FTP服務器在2003年12月7日0時30分關閉,0時10分鐘後禁止用戶FTP登入,0時25分時所有用戶會被系統踢出。
若要啟動FTP,將/etc/shutmsg文件刪除即可
七、設置上傳目錄
按下面步驟完成:
按下面步驟完成:
1 #cd /var/ftp //切換到匿名FTP根目錄
2 #mkdir upload //建立用來上傳的目錄upload
3 #chmod 733 upload //設置此目錄權限為733,即任何人都具備寫入和執行的權限。或333。
4 在/etc/ftpaccess文件內加入如下內容:
upload /var/ftp /upload yes root ftp 0600 nodir/*設置匿名FTP的根目錄是/var/ftp,後面的upload目錄(/var/ftp/upload)是可供上傳文件的目錄,允許上傳,上傳文件的擁有者為root,上傳文件的所屬組為FTP,上傳後的文件權限設置為0600(-rw-------),而且不能建立子目錄5檢查下列指令是否設置正確
chmod no guest,anonymous
delete no guest,anonymous
overwrite no guest,anonymous
rename no guest,anonymous
詳細說明
語法:
upload
[dirs/nodirs]>/*upload命令可設置用戶上傳文件的路徑,或是拒絕上傳文件的目錄,還可設置上傳後文件的歸屬與權限,如果決定要開放上傳到upload目錄,要先開放可寫入的權限*/
#chmod a+w /var/ftp/upload6設置/var/ftp目錄下不允許上傳文件:(/etc/ftpaccess文件)
upload /var/ftp * no
upload /var/ftp/bin no
upload /var/ftp/etc no
/*當權限設為0600 時,匿名用戶所上傳的文件不能立刻下載,需要等FTP管理者將文件權限改為0644才可提供下載,如果想把upload上傳的文件立即可供下載,只要將文件屬性改為0744即可,如下: upload /var/ftp /upload yes root ftp 0744 nodirs */
設置過濾功能
語法:
path-filter <用戶類別> <信息文件> <上傳文件名規則>
//path-filter的功能是過濾用戶上傳的文件名是否合法
存取控制
此處的設定可用來定義工作組,允許或拒絕哪些用戶,或從哪裡登陸
deny
用來設定此FTP服務器拒絕用戶從哪些網址登入,並決定此時要顯示提示文字,格式:
deny <主機地址><提示文字文件路徑>
主機地址:
IP地址或域名,此處可明確指明主機地址,或采用通配符*也可以。
提示文字文件路徑:
當拒絕用戶登入時,所要出現提示文字文件的位置。
例如(拒絕用戶從china.com網址登入,同時顯示 /etc/msgs/reject.msg文件的信息)
deny *.china.com /etc/msgs/reject.msg例如(拒絕用戶從192.168.1.0網絡登入,同時顯示/etc/msgs/reject.msg文件信息)
deny 192.168.1.* /etc/msgs/reject.msg
//注意:/etc/msgs/reject.msg文件要自己建立
limit
設定某一工作組在某段時間同時最多上線人數,格式:
limit <工作組名稱><人數><時間><提示文字文件路徑>
工作組名稱:
利用class定義的工作組名稱
人數:
允許登入的用戶數目
時間:指定要限制的時間,其時間格式可采用24小時制,如0800-1800表示從上午8點到下午6點,其他默認格式有以下幾種:
Any 任何日期
WK 非假日的工作天
Mo 星期一
To 星期二
We 星期三
Th 星期四
Fr 星期五
Sa 星期六
Su 星期日
//在時間項目中要想表示多個區段的時間,則時間跟時間之間可用“|”相串聯。
提示文字文件路徑:
當拒絕用戶登入時,所要顯示提示文字文件的位置。
舉例:
/*限制在任何時間內,同一時間最多只能有20個group1工作組的用戶登入,當超過此人數時,則拒絕同一工作組的用戶再次登入,並顯示
/etc/msgs/msg.toomany文件的信息*/
limit group1 20 Any /etc/msgs/msg.toomany
//此group1組要存在,並且由class定義,msg.toomany文件內容要管理者自己編寫.
msg.toomany文件內容舉例:
Sorry! Too many users!
The limit is %M.
舉例2:
/*設定在星期六,星期日,和周一到周五的18點到23點,同一時間最多允許30個group1組的用戶登入,當拒絕登入時,顯示
/etc/msgs/msg.toomany文件的信息*///為了防止同時有太多人登入FTP服務器,導致大家下載文件的速度難以接受,合理限制同時登入人數是有必要地。
limit group1 30 SaSu|Any 1800-2300 /etc/msgs/msg.toomany