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
# 基礎模式設定
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
touch /etc/vsftpd.chroot_list
# 編輯檔案,每行一個允許跳出家目錄的用戶名
# 例:admin
echo "admin" > /etc/vsftpd.chroot_list
/usr/local/sbin/vsftpd /etc/vsftpd.conf &
# 加入開機自啟
echo "/usr/local/sbin/vsftpd /etc/vsftpd.conf &" >> /etc/rc.local
# 建立 /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
useradd -d /data/ftp/user1 -M -s /sbin/nologin user1
chmod 755 /data/ftp/user1
# 1. /etc/fstab 掛載選項加入 usrquota,grpquota
# 2. 重掛載: mount -o remount /
# 3. 建立配額索引: quotacheck -cug /
# 4. 啟用: quotaon /
# 5. 設定用戶配額: edquota user1
setsebool -P ftp_home_dir=1)。anon_upload_enable=YES 且目錄擁有者為 ftp、權限 777。pasv_min_port/pasv_max_port 並防火牆放行該範圍。源碼編譯安裝 vsftpd 雖較套件管理器繁瑣,但能掌握最新版本與編譯選項。配合 chroot、tcp_wrappers、PAM 多層防護,可構建符合合規要求的高安全性 FTP 服務。