歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux文化 >> 《Debian服務器設置入門》系列教程 第二章

《Debian服務器設置入門》系列教程 第二章

日期:2017/2/27 12:13:13   编辑:Linux文化

總目錄

前 言

第一章 在Debian上配置Apache+MySQL+PHP4

第二章 在Debian上用Wu-ftpd配置FTP服務器

第三章 在Debian上用Exim配置郵件服務器

第四章 在Debian上配置Samba服務器

第五章 在Debian上用Bind配置DNS服務器

《Debian服務器設置入門》系列教程之第二章:FTP服務器

第二章 在Debian上用Wu-ftpd配置FTP服務器

本章目錄

1 開場白

2 選擇wu-ftpd

3 安裝

4 配置

5 測試

6 TODO

7 結束語

8 參考文獻



1 開場白

  在五年之前,我還覺得Ftp這個東西很神秘。那時候,我身邊的大部分人,甚至以為http就是互聯網的全部。我們從網站下載文件,用的大多也是http連接。但是,事實上,ftp(File Transfer Protocol,文件傳輸協議)這個服務已經存在很長時間了,如果要提供文件下載,除了使用http的方式連接外,我們完全可以提供ftp服務,這樣可以節省一些服務器資源,比如連接數什麼的。ftp是專門設計用來在兩台電腦之間傳輸數據的,可以避免太多的遠端執行。尤其是,當傳輸的文件比較大時,ftp會比http節省資源。另外,ftp可非常方便地上傳文件,而http則沒有那麼方便快捷。

2 選擇wu-ftpd

  用apt-cache search 命令看一下,都有什麼ftp服務器可以選擇:

# apt-cache search ftpd

  你會發現,Debian為我們制作了很多個ftpd服務器軟件包,包括atftpd、bsd-ftpd、ftpd、oftpd、muddleftpd、proftpd、twoftpd、vsftpd、wu-ftpd等等。其中應用最廣泛的,應該是wu-ftpd了,這是目前最流行的一種免費FTP服務器軟件,目前絕大多數的FTP站點都是由wu-ftpd來架設的,它是當初由華盛頓大學wuarchive.wustl.edu開發出來的,是一個以效率以及穩定性為考量的程序。wu-ftp如此流行,一個重要的原因是因為它強大的功能,例如:
  ◆ 可控制不同網域的機器對 FTP服務器的存取權限和訪問時段。
  ◆ 使用者在下載文件時,可自動對文件進行壓縮或解壓縮工作。
  ◆ 可以記錄文件上傳或下載的過程。
  ◆ 可以限制最高訪問人數,以維持系統的最佳運行效率。
  ◆ 可顯示相關的信息,以便用戶了解當前的接收狀態。
  ◆ 可暫時關閉FTP服務器,以便系統維護。
  目前Debian提供的wu-ftpd版本是2.6.2。好,我們就選擇這個wu-ftpd了!

3 安裝

  安裝很簡單,用下面的命令安裝:

# apt-get install wu-ftpd

  它會問你,你想設置一個匿名ftp賬號嗎?輸入y,回車。
  接著讓你輸入ftp根目錄,默認是/home/ftp,我們就用默認的吧。
  然後它問你,你想創建一個目錄,用來讓用戶上傳文件嗎?輸入y,創建一個。
  安裝程序會創建一個新的用戶ftp,並把這個用戶加入到一個新創建的組ftp中去。
  然後它會說:

Anonymous FTP users will only see UID and GID numbers,instead of names, because the libnss_files.so library hasn't installed.

It is not installed by default, since there is no easy way to find out what version we need to install.

If you want to install it manually, it should be palced in /home/ftp/lib,owned by root, and with permissions of 444 (r--r--r--)

  (它說由於無法判斷所需的版本,libnss_files.so沒有安裝,要手工安裝的話,到/home/ftp/lib去找。這塊我還沒搗鼓明白,還請高手賜教)。這裡需要對初學者說明一下,系統從/etc/passwd這個文件裡面讀取資料,得到UID和GID,來決定用戶對文件的存取權限。一會兒我們會講到,在ftpaccess這個配置文件裡,可以為某些UID的用戶或者某些GID的組設置權限。

4 配置

  其實,在安裝完之後,不需要做任何配置,我們的ftp服務器已經可以使用了。如果你跟我一樣是個急性子,在進行配置之前你就可以嘗試登錄了。這時,Debian上的普通用戶,還有匿名用戶都可以訪問它,也可以向incoming目錄上傳文件,只不過看不到已經上傳的文件。但是我們仍然需要做一些配置,因為我們需要定制自己的安全性。

  
為了確保提供FTP服務不會給我們的系統帶來安全隱患,我們首先要采取以下措施:

# chmod 555 /home/ftp
# chmod 111 /home/ftp/bin/*
# chmod 555 /home/ftp/lib/*
# chmid 444 /home/ftp/etc/*

4.1 配置文件介紹

  wu-ftpd的配置文件放在/etc/wu-ftpd下面,主要有:

  ftpaccess —— 這個是wu-ftpd的主配置文件,控制存取權限
  ftpconvertions —— 這個文件定義了文件壓縮/解壓縮轉換方案
  ftpservers —— 用來設置多個IP地址和域名,以對應到不同的虛擬主機
  ftpusers —— 凡是寫入這個文件裡面的用戶,都不能連接ftp服務器
  msg.denu —— 拒絕訪問時,顯示給用戶的信息
  msg.nodns —— 當DNS查詢失敗時,顯示給用戶的信息
  msg.toomany —— 當連接數過多時,顯示給用戶的信息
  pathmsg —— 當用戶使用了非法路徑/文件名時,顯示給用戶的信息
  welcome.msg —— 當用戶建立連接時,顯示給用戶的歡迎信息

  在/usr/share/doc/wu-ftpd/examples下面,有一些配置文件的樣本,大家可以參照一下。

4.2 修改/etc/wu-ftpd/ftpaccess配置

  這個文件是wu-ftpd的主配置文件,許多重要的選項都包含在這裡面,比如,要想讓Debian上的用戶可以訪問,就必須在這個文件裡面的Class段落裡面做出定義。
  下面我們按照ftpaccess文件的順序,一段一段地介紹。平常不大用的,或者我不懂的,就不介紹了:-),要不然篇幅會非常大。

4.2.1 管理員的email地址

# 這個不多說了

email [email protected]

4.2.2 UID/GID設置

# 設置哪些UID/GID可以、不可以使用FTP服務。這裡的%-99我沒搞明白,請高手指教!
#deny-uid %-99
#deny-gid %-99
#allow-uid ftp ftpadmin
#allow-gid ftp ftpadmin

4.2.3 登錄失敗數

# 下面設置登錄5次失敗後,斷開連接

loginfails 5

4.2.4 目錄限制

# 除了用戶自己的根目錄,讓用戶看不到別的東西。這個很關鍵!
# 你可以在修改這項之前先登錄ftp服務器看看,然後去掉了這個#之後再登錄看看,大不一樣哦

restricted-uid kanaka

4.2.5 不可執行SITE GROUP/SITE GPASS

# private決定了用戶是否可以執行SITE GROUP/SITE GPASS命令
# 用這兩個指令切換到/etc/ftpgroup的群組。一般而言我們不會用到這個功能,以避免安全漏洞。
#private no

4.2.6 定義用戶類別——class

  由class定義的用戶和IP地址才能夠登錄進來。FTP服務器上有三種類型的使用者,分別是“real”——表示在該FTP服務器上有合法帳號的用戶;“guest”——表示另行定義的某些使用組的使用者;“anonymous”——權限最低的匿名用戶。有了這三種使用者以後,在ftpaccess文件中就可以根據不同的使用者設置不同的存取權限。但是,只有三種定義一般是不夠的,我們可以根據class的語法定義更多的控制命令。

  語法是:

class <class 名稱> <種類> <用戶地址> [<用戶地址>……]

  其中:<class 名稱>則可自行設定,<種類>就是上面說的三種,<用戶地址>是指ftp上來的用戶會用到的IP地址。
  以下是一些例子:

# 下面這一行時系統默認的,它定義了一個名為all的class,包含三種人,允許所有IP地址的連接

class all real,guest,anonymous *

# 下面這個叫做local的class說,只有real的用戶可以從本機機器連上來

class local real localhost loopback

# 下面這個叫remote的class,包含了從任何地方上來的guest和anonymous用戶,但是real用戶不算

class remote guest,anonymous *

# 下面這個叫rmtuser的class包含了從外面來的(除了example.com)真實用戶

class rmtuser real !*.example.com

4.2.7 為各個類別的用戶設置最大連接數

# 可以為每一個類別定義最大連接數,並顯示不同的錯誤信息。下面允許30個連接。

limit all 30 Any /etc/wu-ftpd/msg.toomany

4.2.8 設置readme文件

# readme命令:指定用戶登錄或進行其它操作(如更換目錄)時FTP服務器提示用戶閱讀的文件。

readme README* login
readme README* cwd=*

4.2.9 是否使用壓縮

# 下面定義的允許從local和remote登錄的機器在傳輸文件時,
# 可以執行compress壓縮文件或使用tar命令將多個文件打包成一個文件。

compress yes local remote all
tar yes local remote all

4.2.10 記錄日志

# 如果去掉前邊的注釋符號,它就會記錄相應的信息。
#log commands anonymous,guest,real
#log security
#log syslog
log transfers anonymous,guest,real inbound,outbound

4.2.11 超時設置

# 下面設置:如果超過30秒沒有動作,就斷開anonymous的連接

limit-time anonymous 30

4.2.12 一些命令的權限

rename no anonymous # rename 權限?
delete no anonymous # delete 權限?
overwrite no anonymous # overwrite 權限?
chmod no anonymous # chmod 權限?
umask no anonymous # umask 權限?

4.2.13 匿名用戶上傳權限

# 全給他們加上井號,不讓匿名用戶上傳文件

#upload /home/ftp * no
#upload /home/ftp /pub/incoming yes ftp daemon 0666 nodirs

  由於ftpd是被inetd調用的,所以,我們修改了配置文件後,不需要重新啟動wu-ftpd。
  對於普通ftp應用,修改一下上面這個文件就足夠了。如果你還有更高的要求,就繼續往下看。

4.3 修改/etc/wu-ftpd/ftpusers

  我們已經說過了,只要寫進這個文件裡面的用戶,是不能登錄我們的ftp服務器的。
  限制這些用戶使用FTP服務器主要是基於系統安全的考慮,避免權利過大的用戶(如root、ftpadm)登錄FTP服務器和避免使用系統命令作為帳號(如shutdown、sync),以避免系統管理上的困惑。我們可以根據自己使用的需要,向該文件中增加或刪除用戶。
  注意這個文件是/etc/ftpusers的快捷方式。下面是默認的ftpusers的內容:

# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody

4.4 修改/etc/wu-ftpd/ftpconversions文件

  ftpconversions文件主要定義用戶從FTP服務器中下載文件時對文件進行格式轉換的規則。例如壓縮、解壓縮、打包和開包等操作,這樣用戶就不必為.tar.gz、.tgz、.Z、.z之類的文件傷腦筋了。ftpconversions文件的格式初看上去很復雜,不過不用擔心,我們基本上不用動它,debian為我們准備的這個配置,已經能夠滿足我們的使用需要了。下面讓我們來看看ftpconversions文件的內容:

:.Z: : :/usr/bin/compress -d -c %s :T_REG|T_ASCII:O_UNCOMPRESS:uncompress
: : :.Z:/usr/bin/compress -c %s:T_REG:O_COMPRESS:compress
:.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:gunzip
: : :.gz:/bin/gzip -c9 %s:T_REG:O_COMPRESS:gzip
:.bz2: : :/usr/bin/bzip2 -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:bunzip2
: : :.bz2:/usr/bin/bzip2 -c9 %s:T_REG:O_COMPRESS:bzip2
:.zip: : :/usr/bin/zip -q -r -9 - %s:T_REG|T_DIR:O_TAR|O_COMPRESS:zip
: : :.zip:/usr/bin/unzip -q -c - %s:T_REG|T_DIR:O_TAR|O_UNCOMPRESS:unzip
: : :.tar:/bin/tar -chf - %s:T_REG|T_DIR:O_TAR:tar
: : :.tar.Z:/bin/tar -chZf - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:tar+compress
: : :.tar.gz:/bin/tar -chzf - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:tar+gzip
: : :.tgz:/bin/tar -chzf - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:tar+gzip
: : :.tar.bz2:/bin/tar -chIf - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:tar+bzip2
: : :.ltar:/bin/tar -cf - %s:T_REG|T_DIR:O_TAR:tar
: : :.ltar.Z:/bin/tar -cZf - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:tar+compress
: : :.ltar.gz:/bin/tar -czf - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:tar+gzip

  你可能想我一樣看花了眼,不過好在我們不用深究,反正這個文件基本上把常用的壓縮,打包命令都包括在內了,只要它存在,FTP服務程序就會根據用戶的需要執行壓縮或打包的命令。
  例如,用戶想下載目錄Howto中所有的文件,那麼他不必使用mget命令,而只要使用get Howto.tar.gz,這時wu-ftpd就會將該目錄打包壓縮並發送到用戶的機器上了。所以使用該文件可以完成壓縮傳遞的數據量,減少傳輸時間等作用。
  這裡有一點需要注意,這個文件中定義的可執行文件的位置/bin指的都是/home/ftp/bin而不是Linux的/目錄下的bin,所以請檢查/home/ftp/bin目錄中有無上述命令,如果沒有還需要將這些程序復制到該目錄中。我看了一下,由於我僅僅安裝了Debian的基本系統,所以bzip2這個命令是沒有的,我們可以用at-get install bzip2命令來下載和安裝它,然後把bzip2命令復制到/home/ftp/bin就可以了。

5 測試
  
  到這裡,匿名FTP服務器的配置工作基本上就完成了,我們可以用ftp命令連接自己的服務器,檢查合法用戶和匿名用戶的連接情況以及各個目錄的權限是否正確。之後就可以准備FTP服務的開張了。

6 TODO

  在下一個版本裡面,我將描述如何用ftpmirror建立ftp服務器鏡像。

7 結束語

  本文是《Debian服務器設置入門》系列教程之第二章》,建議您按照順序閱讀,有問題可以和作者kanaka聯系。

8 參考文獻

  本章參考了下面的文章:
  《用wu-ftpd架設FTP服務器》一文,地址是http://www.lslnet.com/linux/docs/linux-3300.htm 
  《架設FTP服務器》一文,地址是http://www.linuxsir.com/bbs/showthread.php?s=&threadid=8455&highlight=wuftpd
  很抱歉我沒找到這兩篇文章作者的名字,但是我們仍然應該心存感激。



Copyright © Linux教程網 All Rights Reserved