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

RedHat Linux 手動編譯安裝 vsftpd 完整教學:從源碼到生產環境配置

編輯:Linux 教學

前言

vsftpd (Very Secure FTP Daemon) 是 Linux 系統主流的高安全性 FTP 伺服器。本文記錄在 RedHat 系列系統上從源碼編譯安裝 vsftpd 2.0.5 的完整流程,涵蓋依賴準備、編譯安裝、PAM 驗證、獨立/超級守護進程模式、虛擬用戶限制與進階配置技巧。

一、環境準備與前置作業

# 1. 解壓源碼
tar -zxvf vsftpd-2.0.5.tar.gz
cd vsftpd-2.0.5

# 2. 查閱安裝說明
more INSTALL

# 3. 建立必要系統帳號與目錄 (若不存在)
id nobody || useradd nobody
ls -d /usr/share/empty || mkdir /usr/share/empty

# 4. 啟用匿名/本地用戶所需帳號目錄
mkdir -p /var/ftp
id ftp || useradd -d /var/ftp -s /sbin/nologin ftp
chown root:root /var/ftp
chmod og-w /var/ftp

二、編譯與安裝

make
make install

預設安裝路徑:
二進制:/usr/local/sbin/vsftpd
配置檔:/etc/vsftpd.conf (需手動複製)
PAM 檔:/etc/pam.d/ftp

三、核心配置檔部署

cp vsftpd.conf /etc/
cp RedHat/vsftpd.pam /etc/pam.d/ftp

編輯 /etc/vsftpd.conf 關鍵設定

# 基礎模式設定
listen=YES                    # 獨立守護進程模式 (預設為 xinetd 模式)
pam_service_name=ftp          # 對應 /etc/pam.d/ftp
userlist_enable=YES           # 啟用用戶存取控制清單
userlist_deny=YES             # 清單內用戶禁止登入 (預設)

# 匿名用戶設定
anonymous_enable=NO           # 生產環境建議關閉
# anon_upload_enable=YES
# anon_mkdir_write_enable=YES

# 本地用戶設定
local_enable=YES
write_enable=YES
local_umask=022

# 效能與連線限制
max_clients=600
max_per_ip=5
connect_from_port_20=YES
tcp_wrappers=YES

# 日誌記錄
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

# 限制用戶於家目錄 (chroot)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

# 綁定特定 IP (可選)
# listen_address=192.168.0.2

四、建立 chroot 例外名單

touch /etc/vsftpd.chroot_list
# 編輯檔案,每行一個允許跳出家目錄的用戶名
# 例:admin
echo "admin" > /etc/vsftpd.chroot_list

五、啟動方式選擇

模式 A:獨立守護進程 (推薦,配合 listen=YES)

/usr/local/sbin/vsftpd /etc/vsftpd.conf &
# 加入開機自啟
echo "/usr/local/sbin/vsftpd /etc/vsftpd.conf &" >> /etc/rc.local

模式 B:超級守護進程 xinetd (預設)

# 建立 /etc/xinetd.d/vsftpd
service ftp
{
    socket_type = stream
    wait = no
    user = root
    server = /usr/local/sbin/vsftpd
    log_on_success += DURATION USERID
    log_on_failure += USERID
    disable = no
}
# 重啟 xinetd
service xinetd restart

六、用戶目錄與磁碟配額進階技巧

1. 指定用戶家目錄

useradd -d /data/ftp/user1 -M -s /sbin/nologin user1
chmod 755 /data/ftp/user1

2. 磁碟配額

# 1. /etc/fstab 掛載選項加入 usrquota,grpquota
# 2. 重掛載: mount -o remount /
# 3. 建立配額索引: quotacheck -cug /
# 4. 啟用: quotaon /
# 5. 設定用戶配額: edquota user1

七、常見問題與驗證

  • 500 OOPS: cannot change directory:檢查家目錄權限與 SELinux (setsebool -P ftp_home_dir=1)。
  • 匿名用戶無法上傳:需 anon_upload_enable=YES 且目錄擁有者為 ftp、權限 777。
  • 被動模式防火牆:開啟 pasv_min_port/pasv_max_port 並防火牆放行該範圍。

結語

源碼編譯安裝 vsftpd 雖較套件管理器繁瑣,但能掌握最新版本與編譯選項。配合 chroot、tcp_wrappers、PAM 多層防護,可構建符合合規要求的高安全性 FTP 服務。

Copyright © Windows教程網 All Rights Reserved