Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 下構建 FTP 虛擬主機:基於 wu-ftpd 的源碼編譯與配置實戰

編輯:Linux 教學

前言:wu-ftpd 的歷史地位與虛擬主機能力

wu-ftpd (Washington University FTP Daemon) 曾長期佔據互聯網 FTP 服務器超 50% 市場份額,廣泛移植於 Linux、AIX、FreeBSD、HP-UX、Solaris 等平台。其虛擬主機功能允許單實例根據客戶端連接的目標 IP/主機名,動態加載不同配置文件,實現多域名/多業務隔離 — 這在虛擬化/容器化普及前是極具價值的特性。

源碼編譯安裝 — 定制化功能的前提

RPM 安裝雖簡單 (rpm -ivh wu-ftpd*.rpm),但無法啟用虛擬主機等進階特性。源碼編譯步驟:

# 1. 獲取源碼
wget https://www.wu-ftpd.org/wu-ftpd-current.tar.gz
tar -zxvf wu-ftpd-current.tar.gz
cd wu-ftpd-*/

# 2. 關鍵配置:啟用虛擬主機支持
./configure --enable-virtual \
            --prefix=/usr/local/wu-ftpd \
            --with-upload \
            --with-throttle \
            --with-logging

# 3. 編譯安裝
make && make install

關鍵參數:--enable-virtual 編譯入虛擬主機邏輯;--with-upload 支援上傳限速/配額;--with-throttle 連接節流;--with-logging 增強日誌。

安裝產物驗證

成功安裝後應包含:

  • 配置文件:/etc/ftpaccess、/etc/ftpconversions、/etc/ftpgroups、/etc/ftphosts、/etc/ftpusers
  • 管理工具:/usr/bin/ftpcount、/usr/bin/ftpwho、/usr/sbin/ftprestart、/usr/sbin/ftpshut、/usr/sbin/in.ftpd (主守護進程)

虛擬主機核心配置:/etc/ftphosts (舊版為 ftpservers)

該文件映射目標 IP → 配置文件:

# 格式: 目IP  配置文件路徑
172.20.66.10  /etc/ftpaccess.vhost1
172.20.66.20  /etc/ftpaccess.vhost2
192.168.1.100 /etc/ftpaccess.internal

工作流程:

  1. 客戶端連接到服務器 IP (如 172.20.66.10)。
  2. in.ftpd 接受連接,檢查 ftphosts 匹配目標 IP。
  3. 匹配成功 → 讀取對應 ftpaccess.vhost1 作為本次會話的權限/限制/消息配置。
  4. 未匹配 → 使用默認 /etc/ftpaccess。

虛擬主機配置文件示例 (/etc/ftpaccess.vhost1)

# 歡迎消息
banner /etc/ftpwelcome.vhost1

# 登入限制
class   vhost1  real  172.20.66.0/24
limit   vhost1  50  "Sorry, too many users."

# 目錄權限

Allow   vhost1
Deny    all


# 上傳下載限速 (bytes/sec)
upload   /home/vhost1  *  102400
download /home/vhost1  *  512000

# 虛擬用戶映射 (配合 /etc/ftpgroups)
private yes
passwd  /etc/ftpd.passwd.vhost1
group   /etc/ftpd.group.vhost1

虛擬用戶體系 — 系統用戶隔離

  • private yes:啟用獨立用戶/組數據庫,不使用系統 /etc/passwd//etc/group。
  • ftpasswd 工具管理虛擬用戶:ftpasswd --passwd --file=/etc/ftpd.passwd.vhost1 --name=user1 --uid=1001 --gid=1001 --home=/home/vhost1/user1 --shell=/bin/false。
  • 每虛擬主機獨立 UID/GID 空間,徹底隔離文件權限。

啟動與防火牆

# xinetd 模式 (傳統)
# /etc/xinetd.d/wu-ftpd
service ftp
{
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/local/wu-ftpd/sbin/in.ftpd
    server_args     = -l -a
    log_on_success  += DURATION USERID
    log_on_failure  += USERID
    disable         = no
}
systemctl restart xinetd

# 或獨立模式 (需配置 listen=YES)
/usr/local/wu-ftpd/sbin/in.ftpd -l -a &

# 防火牆放行
firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=20/tcp  # 主動模式數據端口
firewall-cmd --reload

現代替代方案提示

wu-ftpd 已停止維護 (最後版本 2.6.2,2004 年),存在已知漏洞 (CVE-2001-0550 等) 且缺乏現代特性 (TLS/SSL、IPv6、虛擬用戶原生支援)。**生產環境強烈建議遷移至**:

  • vsftpd:安全性最佳、高性能、支援虛擬用戶/TLS/IPv6、主流發行版默認。
  • ProFTPD:模組化、Apache 風格配置、豐富虛擬主機/虛擬用戶支援、LDAP/SQL 後端。
  • Pure-FTPd:極簡、安全審計嚴格、虛擬用戶/配額/限速/帶寬控制一應俱全。

結語

理解 wu-ftpd 虛擬主機機制,有助於掌握「單進程多配置」的經典設計模式。但面對現代安全合規要求,**請選擇活躍維護的現代 FTP 守護進程**,並在網絡層面實施 TLS 加密 (FTPS) 或改用 SFTP/SCP (SSH 子系統)。

Copyright © Windows教程網 All Rights Reserved