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 安裝與配置 vsftpd 虛擬使用者 FTP 伺服器完整教學

編輯:關於 Linux

vsftpd (Very Secure FTP Daemon) 是 Linux 下最受歡迎的 FTP 伺服器軟體,以安全性高、效能好著稱。本文將引導你在 CentOS/RHEL 系統上使用 yum 安裝 vsftpd,並配置虛擬使用者架構,實現多網站隔離管理,避免使用系統帳號登入 FTP 的風險。

一、安裝 vsftpd 並設定開機自啟

yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd

安裝完成會顯示 Complete!。建議先備份原始設定檔:

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

二、編輯主設定檔 /etc/vsftpd/vsftpd.conf

# 基本設定
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO

# 安全與隔離
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd.virtual
userlist_enable=YES
tcp_wrappers=YES

# 虛擬使用者核心設定
guest_enable=YES
guest_username=apache
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES

關鍵參數說明:

  • guest_enable=YES:啟用虛擬使用者模式
  • guest_username=apache:虛擬使用者映射的系統帳號(需存在,通常為 Web 服務執行身份)
  • user_config_dir:各虛擬使用者個別設定目錄
  • virtual_use_local_privs=YES:虛擬使用者使用本地使用者權限(關鍵:允許檔案權限操作)
  • pam_service_name=vsftpd.virtual:指定 PAM 驗證服務名稱(稍後建立對應檔案)

三、建立虛擬使用者資料庫

1. 安裝資料庫工具

yum install -y libdb-utils

2. 建立帳號密碼文字檔

vi /etc/vsftpd/vuser_passwd.txt

內容格式:奇數行帳號,偶數行密碼,無空行:

webuser1
password123
webuser2
password456

3. 生成 Berkeley DB 資料庫檔

db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db
# 安全起見刪除明文字檔
rm -f /etc/vsftpd/vuser_passwd.txt

四、配置 PAM 驗證

vi /etc/pam.d/vsftpd.virtual

內容如下(64 位系統):

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

注意:db= 參數不含 .db 副檔名。

五、建立虛擬使用者個別設定

mkdir -p /etc/vsftpd/vuser_conf

為每個虛擬使用者建立同名設定檔:

vi /etc/vsftpd/vuser_conf/webuser1

內容範例(對應網站根目錄):

local_root=/var/www/html/site1
write_enable=YES
download_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO

權限參數說明: 虛擬使用者模式下,anon_* 參數實際控制虛擬使用者權限。

六、建立網站目錄並設定權限

mkdir -p /var/www/html/site1
chown -R apache:apache /var/www/html/site1
chmod -R 755 /var/www/html/site1
# 若啟用 SELinux
setsebool -P httpd_unified 1
setsebool -P ftpd_full_access 1

七、重啟服務並測試

systemctl restart vsftpd
# 測試連線
ftp localhost
# 或使用 FileZilla 等客戶端

新增/移除虛擬使用者流程

  1. 編輯 /etc/vsftpd/vuser_passwd.txt(重新建立或修改)
  2. 重新生成 DB:db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
  3. 在 /etc/vsftpd/vuser_conf/ 新增/刪除對應設定檔
  4. 重啟 vsftpd:systemctl restart vsftpd

常見問題排查

  • 530 Login Incorrect:檢查 PAM 檔案路徑、DB 檔案權限、帳號密碼正確性
  • 500 OOPS: priv_sock_get_cmd:通常為 allow_writeable_chroot=YES 缺失或目錄權限錯誤
  • 上傳後網站無法存取:確認 guest_username 對應使用者(如 apache)擁有目錄寫入權限
  • 被動模式連線失敗:防火牆開啟被動埠範圍,設定 pasv_min_port/pasv_max_port 並 pasv_enable=YES

此架構實現「一網站一 FTP 帳號、權限隔離、無系統帳號風險」,是生產環境部署 Web 伺服器 FTP 的推薦做法。

Copyright © Windows教程網 All Rights Reserved