ProFTPD 是 Unix/Linux (Linux、FreeBSD、Solaris 等) 平台上模組化、Apache 風格設定檔、支援虛擬主機、.ftpaccess 目錄級存取控制、高安全性的 FTP 服務器軟體,採 GPL 授權免費使用。本文涵蓋源碼編譯安裝、啟動測試、常見問題排查 (FAQ)、虛擬主機與匿名 FTP 設定、安全性強化、完整 proftpd.conf 範例,助您快速部署生產級 FTP 服務。
# 下載並解壓
cp proftpd-1.2.0rc3.tar.gz /usr/src/
cd /usr/src
tar xvfz proftpd-1.2.0rc3.tar.gz
cd proftpd-1.2.0rc3
# 編譯安裝
./configure
make
make install
/usr/local/etc/proftpd.conf/usr/local/sbin/proftpd編輯 /usr/local/etc/proftpd.conf:
# 原:Group nogroup
Group nobody
因 RedHat nobody 用戶屬於 nobody 群組,非 nogroup。
# 複製啟動腳本
cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd
chmod +x /etc/rc.d/init.d/proftpd
# 修改 PATH 含 /usr/local/sbin
# 編輯 /etc/rc.d/init.d/functions
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin"
# 加入開機自啟 (runlevel 3/5)
chkconfig --level 35 proftpd on
# 編輯 /etc/inetd.conf,註解掉 ftp 行
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
# 重新載入 inetd
ps ax | grep inetd
kill -HUP
/etc/rc.d/init.d/proftpd start
# 客戶端測試
ftp 192.168.2.33
# 應見 220 ProFTPD 1.2.0rc3 Server...
| 問題 | 解決方案 |
|---|---|
| 如何除錯? | /usr/local/sbin/proftpd -d9 -n 前景除錯模式,輸出詳細日誌至終端機。 |
| 匿名用戶無法登入 | 修改 <Anonymous ~ftp> → <Anonymous /home/ftp> (指定實際目錄);若 User=ftp 需加 RequireValidShell off。 |
| 限制用戶僅能存取自身家目錄 | 建立群組 ftpusers → 將用戶加入 → proftpd.conf 加入 DefaultRoot ~ ftpusers。 |
| 限制用戶僅能存取家目錄下特定子目錄 | DefaultRoot ~/anoftp ftpusers。 |
| 隱藏伺服器版本資訊 | ServerIdent off,登入僅顯示 220 hostname FTP server ready。 |
| 建立虛擬主機 | 使用 <VirtualHost IP> 區塊,內含 ServerName、<Limit LOGIN>、<Anonymous> 等指令。 |
| 虛擬主機僅允許匿名登入 | 在 <VirtualHost> 內 <Limit LOGIN> DenyAll,僅在 <Anonymous> 區塊 AllowAll。 |
# 基本設定
ServerName "test.com.cn FTP Server"
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 30
RequireValidShell off
ServerIdent off
User nobody
Group nobody
# 允許覆寫檔案
<Directory /*>
AllowOverwrite on
</Directory>
# 匿名 FTP 設定
<Anonymous /home/ftp>
User ftp
Group ftp
UserAlias anonymous ftp
MaxClients 10
DisplayLogin welcome.msg
DisplayFirstChdir .message
# 匿名區預設唯讀
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
# 一般用戶限制在家目錄
DefaultRoot ~ ftpusers
# 虛擬主機範例:192.168.2.35 僅允許匿名存取 /usr/local/private
<VirtualHost 192.168.2.35>
ServerName "virtual FTP server"
<Limit LOGIN>
DenyAll
</Limit>
<Anonymous /usr/local/private>
User private
Group private
<Limit LOGIN>
AllowAll
</Limit>
</Anonymous>
</VirtualHost>
--with-modules=mod_tls,設定憑證,TLSRequired on。PassivePorts 50000 51000,防火牆同步開放。Quota 模組雙重保障。proftpd.org 安全公告,及時修補。ProFTPD 以模組化架構、靈活設定、強調安全性,成為 Unix/Linux 平台自架 FTP 服務的首選。掌握 DefaultRoot、VirtualHost、.ftpaccess 三大核心功能,即可應對多租戶、虛擬主機、目錄級委派等複雜業務場景。