使用 ProFTPd 建立匿名 FTP 伺服器

FlossDoc,自由中文開源知識庫

Jump to: navigation, search

FTP (File Transfer Protocol) 原意是該使用者在 TCP/IP 網絡不同的電腦互相傳送檔案之用。但亦有大為分享一些檔案 (如分享軟件和自由/開放原始碼軟件等) 給公眾,建立一些所謂匿名 FTP 伺服器 (Anonymous FTP server)。這類 FTP 伺服器容許非登記使用者使用 ftp 或 anonymous 作為登入名稱 (login name) 登入並下載檔案。部份匿名 FTP 伺服器更會開設一個目錄容許非登記使用者上載檔案。

由於 FTP 通訊並無加密,很容易被有心人竊取登入密碼及傳送的檔案,正常的登記使用者傳送檔案都建議使用 SSH 或 FTP+SSL。現時大部的 FTP 伺服器都主要用作匿名 FTP 伺服器分享公開檔案之用。

現時 GNU/Linux 常用的 FTP 伺服器主要有 vsftpd 和 proftpd。ProFTPd 功能多但出現問題的機會亦較多。vsftpd 功能簡單但安全性較高。

目录

安裝 proftpd

Debian 或 Ubuntu 管理員請打以下命令安裝套件 proftpd:

apt-get install proftpd

RHEL 和 CentOS 沒有收錄 proftpd 的套件,所以相關管理員需要引入 RPMforge 軟件庫:

  • RHEL 5/CentOS 5.x (i386)
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
  • RHEL 5/CentOS 5.x (x86_64)
rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
  • RHEL 4/CentOS 4.x (i386)
rpm -Uhv http://apt.sw.be/redhat/el4/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el4.rf.i386.rpm
  • RHEL 4/CentOS 4.x (x86_64)
rpm -Uhv http://apt.sw.be/redhat/el4/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el4.rf.x86_64.rpm

然後安裝套件 proftpd:

yum install proftpd

設定 proftpd

您需要一個使用者作為匿名使用者登入之用,一般都會使用使用者 ftp。如果您安裝 Debian/Ubuntu 等的 proftpd 套件,系統會自動幫您建立使用者 ftp。

接者您可以在設定檔 /etc/proftpd/proftpd.conf/etc/proftpd.conf 加入以下設定:

<Anonymous ~ftp>
  # 設定對應匿名使用者的 Unix/Linux 使用者和群組。這亦表示匿名使用者最多只可以存取
  # 使用者 ftp 和群組 nogroup 可以存取的檔案。 
  User            ftp
  Group           nogroup
  # 使用使用者名稱 anonymous 登入等同使用者 ftp
  UserAlias      anonymous      ftp

  # 讓所有檔案在登入使用者眼中全屬於使用者 ftp 和群組 ftp
  DirFakeUser on ftp
  DirFakeGroup on ftp

  RequireValidShell           off

  # 限制最多 10 個匿名使用者可以同時登入
  MaxClients                  10

  # 設定有使用者登入時自動顯示的檔案
  DisplayLogin                welcome.msg
  # 設定有使用者進入目錄時自動顯示的檔案
  DisplayFirstChdir           .message

  # 限制不可以寫入或修改 FTP 根目錄以下的所有檔案
  <Directory *>
    <Limit WRITE>
      DenyAll
    </Limit>
  </Directory>
</Anonymous>

使用者 ftp 的 home directory (一般是 /home/ftp) 會成 FTP 根目錄 (root directory),亦即是匿名使用者登入的目錄。您只需要把要分享的檔案放在此目錄之下,就可以讓公眾下載。

您亦可以在 FTP 根目錄上建立一個名稱叫 welcome.msg 的文字檔並把歡迎詞或您的 FTP 伺服器的簡介放入檔案。每當有人登入此匿名 FTP 伺服器,proftpd 自然會顯示 welcome.msg 的內容。以下是一個典型 welcome.msg 的內容:

Welcome, archive user %U@%R !

The local time is: %T

This is an experimental FTP server.  If you have any unusual problems,
please report them via e-mail to <root@%L>.

此外,FTP 根目錄以下每一個目錄都可以建立一個名稱叫 .message 的文字檔簡介目錄中包含的檔案, 當有人透過匿名 FTP 伺服器進入該目錄 (cd 進入該目錄) ,亦會自動顯示 .message 的內容。

設定好後。可以打以命令重新啟動 proftpd:

/etc/init.d/proftpd restart

容許公眾上載檔案

想建立一個容許公眾載檔案,您需要先在 FTP 根目錄建立一個供上載的目錄 (一般叫作 Incoming) 並設定其權限:

mkdir ~ftp/Incoming
chown ftp:nogroup ~ftp/Incoming
chmod 755 ~ftp/Incoming

接者您需要在 proftpd 的設定檔 (一般為 /etc/proftpd/proftpd.conf/etc/proftpd.conf) 中的匿名 FTP 加入容許上載至 ~ftp/Incoming 的設定,例如:

<Anonymous ~ftp>
  ...
  ...

  <Directory incoming>
    # Umask 022 is a good standard umask to prevent new files and dirs
    # (second parm) from being group and world writable.
    Umask                           022  022
    <Limit READ WRITE>
      DenyAll
    </Limit>
    <Limit STOR>
      AllowAll
    </Limit>
  </Directory>

</Anonymous>

設定好後。可以打以命令重新啟動 proftpd:

/etc/init.d/proftpd restart

管理日誌

在 Proftpd 設定檔加上:

ExtendedLog /var/log/proftpd/access.log WRITE,READ default
ExtendedLog /var/log/proftpd/auth.log AUTH auth

設定好後。可以打以命令重新啟動 proftpd:

/etc/init.d/proftpd restart

相關頁面

相關連結

Personal tools