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

vsftpd 配置參數完整詳解:從匿名/本地用戶到虛擬用戶、限速、日誌與安全控制

編輯:FTP 伺服器

前言

/etc/vsftpd/vsftpd.conf 是 vsftpd 的核心配置檔,採用 選項=值 格式(等號兩邊不可有空格),# 開頭為註解。本文將 100+ 參數按功能分類整理,附預設值與實務建議,作為查閱手冊。

一、配置檔基礎格式

# 註解行
選項=值          # 正確:等號兩側無空格
選項 = 值        # 錯誤:等號兩側有空格會被忽略

二、匿名用戶設定

參數預設值說明
anonymous_enableYES允許匿名登入(用戶名 ftp/anonymous,密碼任意)
no_anon_passwordNOYES 時匿名登入不詢問密碼
ftp_usernameftp匿名用戶對應的系統帳號
anon_root/var/ftp匿名用戶登入後的根目錄(不可為 777 權限)
write_enableYES全域寫入開關,匿名上傳需同時開啟此項
anon_upload_enableNO允許匿名上傳檔案(需 write_enable=YES + 目錄寫入權限)
anon_mkdir_write_enableNO允許匿名建立目錄(需 write_enable=YES)
anon_other_write_enableNO允許匿名刪除/重命名(需 write_enable=YES)
anon_world_readable_onlyYESYES 僅允許下載可讀檔案
chown_uploadsNOYES 時改變匿名上傳檔案擁有者
chown_username—指定上傳檔案新擁有者(勿設為 root)
anon_umask077匿名建立檔案的 umask(077 → 權限 700)
deny_email_enableNOYES 時需提供 banned_email_file,列入名單者拒絕登入
banned_email_file/etc/vsftpd/banner_emails禁止登入的郵件清單檔案

三、本地用戶設定

參數預設值說明
local_enableYES允許本地系統用戶登入
local_root~本地用戶登入後的根目錄(預設為家目錄)
write_enableYES全域寫入開關(影響本地用戶)
local_umask077本地用戶建立檔案的 umask(建議 022 → 755)
file_open_mode0666上傳檔案最終權限(配合 umask 計算)

四、歡迎訊息與目錄訊息

參數預設值說明
dirmessage_enableYES進入目錄時顯示 .message 檔案內容
message_file.message目錄訊息檔案名
ftpd_banner—登入時顯示的字串歡迎訊息
banner_file—登入訊息檔案路徑(訊息較長時使用)

五、用戶目錄限制

參數預設值說明
chroot_local_userNOYES 將所有本地用戶限制在各自 home 目錄
chroot_list_enableNOYES 啟用 chroot_list_file 名單控制
chroot_list_file/etc/vsftpd.chroot_list名單檔案路徑

四種組合效果對照

chroot_list_enablechroot_local_user效果
YESYES名單內用戶可切換上層目錄;名單外不可
YESNO名單內用戶不可切換;名單外可
NOYES所有用戶不可切換上層目錄
NONO所有用戶可切換上層目錄(預設)

六、傳輸模式設定

參數預設值說明
ascii_upload_enableNO啟用 ASCII 模式上傳(文字檔換行轉換)
ascii_download_enableNO啟用 ASCII 模式下載

七、存取控制

1. 主機層級:TCP Wrappers

參數預設值說明
tcp_wrappersYES啟用後檢查 /etc/hosts.allow、hosts.deny
# /etc/hosts.allow 範例:僅允許 192.168.0.0/24
vsftpd: 192.168.0. : allow
ALL: ALL : deny

2. 用戶層級:user_list / ftpusers

參數預設值說明
userlist_enableNO啟用 user_list 檔案控制
userlist_file/etc/vsftpd.user_list用戶清單檔案(一行一用戶名)
userlist_denyYESYES:名單內禁止;NO:僅名單內允許

優先序: /etc/vsftpd/ftpusers(永久禁止,通常含 root、daemon 等系統帳號)> user_list(依 userlist_deny 決定)。

八、傳輸速率限制

參數預設值說明
anon_max_rate0匿名用戶最大傳輸速度(Bytes/sec,0=不限制)
local_max_rate0本地用戶最大傳輸速度(Bytes/sec)

範例:local_max_rate=102400 限制 100 KB/s。

九、逾時設定

參數預設值單位/說明
accept_timeout60秒,建立 FTP 連線逾時
connect_timeout60秒,PORT 模式資料連線逾時
data_connection_timeout120秒,資料傳輸連線逾時
idle_session_timeout300秒,閒置逾時斷線

十、日誌設定

參數預設值說明
xferlog_enableYES啟用上傳/下載傳輸日誌
xferlog_file/var/log/vsftpd.log日誌檔案路徑
xferlog_std_formatNOYES 使用標準 xferlog 格式(wu-ftpd 相容)
log_ftp_protocolNOYES 記錄所有 FTP 命令/回應(除錯用,與 xferlog_std_format 互斥)

十一、用戶獨立配置

參數說明
user_config_dir目錄路徑,裡面放置與用戶名同名的檔案,登入時自動套用該檔配置(覆蓋全域設定)。
範例:user_config_dir=/etc/vsftpd/userconf,用戶 test1 登入 → 讀取 /etc/vsftpd/userconf/test1。

十二、FTP 工作模式與埠口

參數預設值說明
listen_port21控制連線監聽埠
connect_from_port_20YESPORT 模式使用 20 埠傳輸資料
ftp_data_port20PORT 模式資料埠
pasv_enableYES啟用 PASV 被動模式
pasv_min_port0PASV 模式資料埠最小值(0=任意)
pasv_max_port0PASV 模式資料埠最大值(0=任意)

防火牆建議: 被動模式需開放 pasv_min_port–pasv_max_port 範圍(如 50000–51000),主動模式需開放 20 埠。

十三、連線相關設定

參數預設值說明
listenYES獨立模式運行(建議保持 YES,許多參數需此模式生效)
max_clients0最大並發連線數(0=不限,需 listen=YES)
max_per_ip0單一 IP 最大並發連線(0=不限,需 listen=YES)
listen_address—指定監聽 IP(多網卡時),需 listen=YES
setproctitle_enableNOYES 時每連線顯示獨立 vsftpd 進程(ps 可見)

十四、虛擬用戶設定

參數預設值說明
pam_service_namevsftpdPAM 服務名(對應 /etc/pam.d/vsftpd)
guest_enableNOYES 啟用虛擬用戶
guest_usernameftp虛擬用戶映射的系統用戶
virtual_use_local_privsNOYES 時虛擬用戶享有本地用戶權限;NO 時同匿名用戶權限基準

十五、其他常用參數

參數預設值說明
text_userdb_namesNOYES 時 ls -l 顯示用戶/組名而非 UID/GID
ls_recurse_enableNOYES 允許 ls -R 遞歸列表
hide_idsNOYES 時所有檔案擁有者顯示為 ftp
download_enableYESNO 禁止所有檔案下載(目錄列表不受影響)

十六、生產環境建議基準配置片段

# 安全基線
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES   # 允許 chroot 目錄可寫(需 vsftpd 3.0+)

# 效能與限制
max_clients=200
max_per_ip=10
local_max_rate=1048576       # 1 MB/s
idle_session_timeout=600
data_connection_timeout=300

# 被動模式埠口範圍(防火牆需對應開放)
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000

# 日誌審計
xferlog_enable=YES
xferlog_std_format=YES
log_ftp_protocol=YES

# TLS 加密(需額外配置憑證)
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES

十七、修改配置後生效方式

# 檢查語法
vsftpd -olisten=NO /etc/vsftpd/vsftpd.conf 2>&1 | head

# 重啟服務
systemctl restart vsftpd    # systemd 系統
service vsftpd restart      # SysVinit 系統

本文涵蓋 vsftpd 核心配置參數的完整分類說明,建議收藏作為日常運維查閱手冊。實際部署時請根據業務需求、合規要求與安全基線進行裁剪與調整。

Copyright © Windows教程網 All Rights Reserved