當前位置:編程學習大全網 - 源碼下載 - 怎樣在linux中搭建FTP服務器

怎樣在linux中搭建FTP服務器

FTP服務可以根據服務對象的不同分為兩類:壹類是系統FTP服務器,它只允許系統上的合法用戶使用;另壹類是匿名FTP服務器,Anonymous FTP Server,它使用任何人都可以登錄到FTP服務器上去獲取文件。

5.1 選擇和安裝FTP服務器軟件

如果妳在安裝LINUX系統的時候,在選擇啟動進程的時候選擇了“ftpd”這壹項的話,安裝完LINUX系統後,它已經將壹個默認的FTP服務器安裝到系統中去了。我們已經可以利用它來實現系統FTP服務器的功能了。我們只需在此基礎上根據我們的需要進行壹些個性化設定就可以了。

在絕大多數的LINUX發行版本中都選用的是Washington University FTP,它是壹個著名的FTP服務器軟件,壹般簡稱為wu-ftp。它功能強大,能夠很好地運行於眾多的UNIX操作系統,例如:IBM AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服務器,壹大半以上采用了它。

wu-ftp擁有許多強大的功能,很適於吞吐量較大的FTP服務器的管理要求:

1) 可以在用戶下載文件的同時對文件做自動的壓縮或解壓縮操作;

2) 可以對不同網絡上的機器做不同的存取限制;

3) 可以記錄文件上載和下載時間;

4) 可以顯示傳輸時的相關信息,方便用戶及時了解目前的傳輸動態;

5) 可以設置最大連接數,提高了效率,有效地控制了負載。

5.2 wu-ftp的組成

安裝了wu-ftp後,妳將在/bin目錄下看到以下五個可執行文件:

ftpd FTP服務器程序

ftpshut 用於關閉FTP服務器程序

ftpcount 顯示目前在線人數

ftpwho 查看目前FTP服務器的連接情況

ckconfig 檢查FTP服務器的設置是否正確

除了這些可執行文件以外,它還在/etc和/var目錄下生成了七個配置文件:

/etc/ftpusers

/etc/ftpaccess

/var/run/ftp.pids

/etc/ftpconversions

/var/log/xferlog

/etc/ftpgroups

/etc/ftphosts

系統安裝了wu-ftp後,會建立壹個特殊的用戶ftp,並在/home目錄下建立了壹個ftpd目錄,當用戶以匿名登錄上來時,將會自動定位於這個目錄下。在這個目錄下壹般會建立幾個子目錄。

/home/ftpd/bin:存放壹些供FTP用戶使用的可執行文件

/home/ftpd/etc:存放壹些供FTP用戶使用的配置文件

/home/ftpd/pub:存放供下載的信息

/home/ftpd/incoming:存放供上載信息的空間

5.3 wu-ftp的配置

5.3.1 查看、修改/etc/inetd.conf文件

/etc/inetd.conf文件是LINUX系統的超級服務器inetd的配置文件。它負責監聽多個TCP/IP端口。當它收到請求,就根據配置文件派生壹個相應的服務器。通過使用超級服務器,其他服務就可以只在需要時才派生,從而大大節省了系統資源。

而wu-ftp就是利用超極服務器inetd來監聽請求的。當超級服務器inetd收到了客戶端的FTP請求時,就根據配置文件打開壹個FTP服務進程。所以我們如果要使用wu-ftp,就必須確認在超級服務器inetd的配置文件inetd.conf中有這樣壹句:

ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd

以便當超級服務器收到FTP請求的時候,能夠派生壹個wu-ftp的FTP服務進程。(註:要確認是否有這樣壹行時,可以使用文件內容查找命令來確認:

cat /etc/inetd.conf | grep ftp 如果沒有,則用手工加入或手工修改。

5.3.2 wu-ftpd的命令選項

wu-ftpd就是wu-ftp的服務進程。它可以不帶參數執行,也可以帶參數執行。下面簡單介紹壹下wu-ftpd的執行參數。

-d 當FTP服務器發生錯誤時,將錯誤入系統的syslog中;

-l 將每次FTP客戶端進行連接的入系統的syslog中;

-t 設置FTP客戶端連接幾分鐘無操作就切斷連接;

-a 使wu-ftp使用/etc/ftpaccess的設定;

-A 使wu-ftp不使用/etc/ftpaccess的設定;

-L 將FTP客戶端連線後所執行的程序記錄在系統的syslog中;

-I 將FTP客戶端上載文件的日誌記錄在/usr/adm.xferlog文件中;

-o 將FTP客戶端下載文件的日誌記錄在/usr/adm/xferlog文件中。

通過對以上參數的理解,我們建議,將上面系統安裝時的那條默認配置改為:

ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd ?a ?I

5.3.3 提供自動壓縮、解壓縮的功能

如果想讓FTP服務器有自動壓縮、解壓縮的功能,必須先將壹些壓縮、解壓縮的命令文件如tar、gzip、gunzip、compress、uncompress等命令文件拷貝到/home/ftpd/bin目錄下。

5.3.4 關於/etc/ftpaccess的設置

這個配置文件是FTP服務器上最重要的配置文件,它直接關系到妳的FTP服務器能否正常工作,還有許多權限上的設置。下面是壹個典型的配置實例。

loginfails 3

class local real *

class remote anonymous guest *

limit remote 100 Any /etc/ftpd/toomany.

msgmessage /etc/ftpd/welcome.msg login

compress yes local remote

tar yes local remote

private yes

passwd-check rfc822 warn

log commands real

log transfer anonymous guest inbound outbound

log transfer real inbound

shutdown /etc/ftpd/shut.msg

delete no anonymous,guest

overwrite no anonymous,guest

rename no anonymous

chmod no anonymous,guest

umask no anonymous

upload /home/ftpd * no

upload /home/ftpd /bin no

upload /home/ftpd /etc no

upload /home/ftpd /pub yes real 0644 dirs

upload /home/ftpd /incoming yes real guest anonymous 0644 dirs

alias in /incoming

email guest@xxx.net

email guest@yyy.net

deny *.com.tw /etc/ftpd/deny.msg

下面我們逐句進行講解,並給出每條設置的含義,以便大家觸類旁通,以便根據自己FTP服務器的具體情況進行合理的設置。

1. 格式:loginfails [次數]

功能:設定當用戶登錄到FTP服務器時,允許用戶輸錯密碼的次數。

實例:loginfails 3:密碼輸入錯誤三次就切斷連接。

2. 格式:class [類名] [real/guest/anonymous] [IP地址]

功能:這個指令的功能設定FTP服務器上用戶的類別。並可對客戶端的IP地址進行限制,允許某部分的IP地址或全部的IP地址訪問。而在FTP服務器上的用戶基本上可以分為以下三類:

real 在該FTP服務器有合法帳號的用戶;

guest 有記錄的匿名用戶;

anonymous 權限最低的匿名用戶

實例:class local real *:定義壹個名為local的類,它包含了在任何地方登錄(*代表所有IP地址)的real用戶。

class remote anonymous guest *:定義壹個名為remote的類,它包含了在任何地方登錄的anonymous用戶和guest用戶。

3. 格式:limit [類別] [人數] [時間] [文件名]

功能:這個指令的功能為設置指定的時間內指定的類別允許連接的指定人數上限。當達到人數上限的時候,顯示指定文件的內容。

實例:limit remote 100 Any /etc/ftpd/toomany.msg:在任何時間內,remote類的訪問用戶達到100人時,將不再允許無法產生新的連接,當第101位客戶要連接時,連接將失敗,並象用戶出示文件/etc/ftpd/toomany.msg的內容。

4. 格式:message [文件名稱] [指令]

功能:當用戶執行所指定的指令時,系統將指定的文件內容顯示出來。

實例:message /etc/ftpd/welcome.msg login:當用戶執行login命令時,也就是登錄到FTP服務器上的時候,系統將顯示文件/etc/ftpd/welcome.msg的內容。

5. 格式:compress [yes/no] [類別]

功能:設置哪壹個類別的用戶可以使用compress(壓縮)功能。

實例:compress yes local remote:允許local和remote兩個類別的用戶都能使用compress(壓縮)功能。

6. 格式:tar [yes/no] [類別]

功能:設置哪壹個類別的用戶可以使用tar(歸檔)功能。

實例:tar yes local remote:允許local和remote兩類的用戶都能使用tar功能。

7. 格式:private [yes/no]

功能:設定是否支持群組對文件的取用。

實例:private yes:支持群組對文件的取用。

8. 格式:passwd-check [none/trivial/rfc822] [enforce/warn]

功能:設定對匿名用戶anonymous的密碼使用方式。

none 表示不做密碼驗證,任何密碼都可以登錄;

trival 表示只要輸入的密碼中含有字符“@”就可以登錄;

rfc822 表示密碼壹定要符合RFC822中所規定的E-Mail格式才能登錄;

enfore 表示輸入的密碼不符合以上指定的格式就不讓登錄;

warn 表示密碼不符合規定時只出現警告信息,仍然能夠登錄。

實例:passwd-check rfc822 warn:希望能夠得到符合規定的E-Mail作為密碼,但如果不是,也允許登錄。

9. 格式:log command [real/guest/anonymous]

功能:設置哪些用戶登錄後的操作記錄在文件/usr/adm/xferlog中。

實例:log command real:當real用戶登錄後,將他的操作記錄下來。由於其它用戶權限較低,所以操作不會引起太大的安全隱患,所以壹般只需記下real用戶的操作就可以了。

10. 格式:log transfers [real/guest/anonymous] [inbound/outbound]

功能:設置哪些用戶的上載(inbound)和下載(outbound)操作做日誌。

實例:log transfer anonymous guest inbound outbound:對於匿名用戶要更加的關註它們的文件操作,所以無論上載、下載都進行記錄。

log transfer real inbound:對於合法用戶則只記錄他的上載記錄。

11. 格式:shutdown [文件名]

功能:FTP服務器關閉的時間可以設置在後面所指定的文件中,當設置的時間壹到,便無法登錄FTP服務器了,要恢復的話只有將這個文件刪掉。而這個文件必須由指令/bin/ftpshut來生成。

實例:shutdown /etc/ftpd/shut.msg

12. 格式:delete [yes/no] [real/anonymous/guest]

功能:設置是否允許指定用戶使用delete命令刪除文件。默認是允許。

實例:delete no anonymous,guest:為了更好地管理FTP服務器,壹般情況下,我們不允許匿名用戶執行delete命令。

13. 格式:overwrite [yes/no] [real/anonymous/guest]

功能:設置是否允許指定用戶覆蓋同名文件。默認是允許。

實例:overwrite no anonymous,guest:為了更好地管理FTP服務器,壹般情況下,我們不允許匿名用戶覆蓋同名文件。

14. 格式:rename [yes/no] [real/anonymous/guest]

功能:設置是否允許指定用戶使用rename命令來為文件改名。默認是允許。

實例:delete no anonymous:為了更好地管理FTP服務器,壹般情況下,我們不允許匿名用戶執行rename命令改變文件名。而對有記錄的匿名用戶則適當的放寬,允許他們使用改名命令。

15. 格式:chmod [yes/no] [real/anonymous/guest]

功能:設置是否允許指定用戶使用chmod命令更改文件權限。默認是允許。

實例:delete no anonymous,guest:為了更好地管理FTP服務器,壹般情況下,我們不允許匿名用戶執行chmod命令更改文件權限。

16. 格式:umask [yes/no] [real/anonymous/guest]

功能:設置是否允許指定用戶使用umask命令。默認是允許。

實例:delete no anonymous:為了更好地管理FTP服務器,壹般情況下,我們不允許匿名用戶執行umask命令。

17. 格式:upload [根目錄] [上載目錄] [yes/no] [用戶] [權限] [dirs/nodirs]

功能:對可以上載的目錄進行更加詳細的設置。

實例:upload /home/ftpd * no:表示在子目錄/home/ftpd下不允許上載;upload /home/ftpd /bin no:表示在子目錄/home/ftpd/bin下不允許上載;upload /home/ftpd /etc no:表示在子目錄/home/ftpd/etc下不允許上載;upload /home/ftpd /pub yes real 0644 dirs:允許用服務器上的合法用戶在子目錄/home/ftpd/pub目錄下能上載權限為0644(也就是-rw-r--r--)的文件,而且在這個目錄下可以新建子目錄。 upload /home/ftpd /incoming yes real guest anonymous 0644 dirs:允許所有的用戶在子目錄/home/ftpd/incoming下能上載權限為0644的文件,而且在這個目錄下可以新建子目錄。

18. 格式:alias [目錄別名] [目錄名]

功能:給指定目錄設置壹個別名,在切換目錄時就可以使用較短的目錄別名。

實例:alias inc: /incoming:為子目錄incoming設置壹個別名inc:。

19. 格式:email [guest的E-Mail地址]

功能:只要將某些E-Mail地址設置在這個地方,那麽這些用戶登錄到FTP服務器時,他的身份將為guest,壹般權限比real低壹些,比anonymous高。

實例:email guest@xxx.net email guest@yyy.net:這裏僅是壹個示例,實際上可以包含多個符合規範的E-Mail地址。

20. 格式:deny [IP地址/域名] [說明文件]

功能:這個設置可以限制哪壹些IP地址或域名的用戶無法登入FTP服務器。

實例:deny *.com.tw /etc/ftpd/deny.msg:設置凡是域名是以“.com.tw”結束的域名,都禁止其訪問。而將/etc/ftpd/deny.msg的內容顯示給用戶看。

5.3.5 設置/etc/ftpuser,禁止某些用戶登錄

有時我們需要禁止壹些用戶使用FTP服務。其實這個設置是十分簡單的,只需要將要禁止的用戶帳號寫入文件/etc/ftpuser中。由於從系統的安全考慮,壹般我們是不希望權限過大的用戶和壹些與命令名相同的用戶進入FTP服務器。所以在缺省的配置中,壹般以下用戶已經被列入了“黑名單”。

root uucp news bin adm nobody lp sync shutdown halt mail

5.3.6 設置/etc/ftphosts,禁止某些來自指定機器上的登錄

如果妳需要拒絕來自某些主機的登錄,壹種方法就是在/etc/ftpaccess中設置deny命令,另壹種更加簡單的方法就是在/etc/ftphosts中寫入妳要禁止的主機的IP地址或域名。

5.3.7 使新的配置生效

到此為止,我們已經能夠根據自己的需要對FTP服務器配置進行必要的修改和調整。而讓我們重新配置後,就必須使其生效。壹般的,對/etc/ftpaccess的配置是直接作用於設置後的下壹次FTP服務進程。而其它的則要對inetd進程重新啟動。

5.4 wu-ftp相關的其他壹些命令的使用

5.4.1 連接數統計命令ftpcount

我們可以使用ftpcount命令十分清楚地統計出當前連接到FTP服務器上的用戶數目,並且同時列出上限。命令輸出如下所示:

Service class local 0 Users(20maximum)

Service class remote 5 Users(100maximum)

5.4.2 在線用戶查看命令ftpwho

我們可以使用ftpwho命令十分清楚地列出當前連接的用戶的詳細情況。

5.4.2 FTP關閉文件生成命令ftpshut

我們可以使用ftpshut命令生成壹個在/etc/ftpaccess中設置的shut.msg文件,用於關機設定。ftpshut命令的格式為:

Ftpshut <-l min> <-d min> time <說明>

-l 這個參數設定在關閉FTP服務器功能前多少分鐘時停止用戶的連接;

-d 這個參數設定在關閉FTP服務器功能前多少分鐘時切斷用戶連接;

time 指定關閉FTP服務器的時間。例如6:20分則寫為0620;

  • 上一篇:warframe午夜電波間歇VOL.4第十七周任務攻略
  • 下一篇:c語言中如何使用txt文件中的數據變量
  • copyright 2024編程學習大全網