OSWikiHK: 请协力 GPLv3 的中文翻译工作。
使用 ProFTPd 建立匿名 FTP 伺服器
OSWikiHK,自由中文開源知識庫
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
設定 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
相關頁面
- 使用其他 FTP 伺服器程式又建立匿名 FTP 伺服器 - 包括使用 vsftpd。

