ftpaccess 是 WU-FTPD 與部分衍生 FTP 守護進程(如 ftpd)的核心配置檔,提供精細的存取控制、資訊顯示、日誌記錄、別名映射等功能。雖然現代多改用 vsftpd/ProFTPD,但維護舊系統或特定嵌入式環境時仍需掌握。
檔案位置與生效方式
- 路徑:
/etc/ftpaccess
- 修改後無需重啟服務,
ftpd 下次連線自動重讀。
核心指令分類詳解
1. 存取控制
| 指令 | 語法 | 功能 |
class | class <類別> <類型列表> <地址>... | 定義用戶類別。類型:anonymous、guest、real。地址支援 CIDR、主機名、all。 |
deny | deny <地址> <訊息檔> | 拒絕特定地址連線,顯示訊息檔內容。!nameserved 拒無反解析主機。 |
guestgroup | guestgroup <群組>... | 將真實用戶視為訪客(chroot 至家目錄,禁 USER/PASS)。/etc/passwd 家目錄格式:/chroot/./home。 |
autogroup | autogroup <群組> <類別>... | 匿名用戶屬於指定類別時,setegid 切換至群組,存取 group-read-only 檔案。 |
limit | limit <類別> <時間> <訊息檔> | 限制類別同時連線數。時間格式同 UUCP L.sys(如 Any、Wk0800-1800)。 |
loginfails | loginfails | 連續 N 次登入失敗後斷線並記錄(預設 5)。 |
private | private yes|no | 啟用 SITE GROUP/GPASS 增強群組存取,需 /etc/ftpgroups 格式:群組:加密密碼:真實群組。 |
2. 資訊顯示
| 指令 | 語法 | 觸發時機 |
banner | banner <路徑> | 用戶輸入帳號前顯示。路徑相對系統根目錄。警告:可能導致不相容客戶端連線失敗。 |
message | message <路徑> [when] [class...] | 登入或 CWD 切換目錄時顯示。when:LOGIN 或 CWD=目錄。 |
readme | readme <路徑> [when] [class...] | 同 message,但僅提示檔案存在與修改時間,不顯示內容。 |
email | email <郵箱> | 設定維護者郵箱,供 %E 變數替換。 |
Magic Cookies 替換變數(message/readme/banner 內可用):
%T 本地時間、%F 可用空間、%C 當前目錄、%E 維護者郵箱
%R 遠端主機、%L 本地主機、%U 登入用戶名
%M 類別最大用戶數、%N 類別當前用戶數
3. 日誌記錄
| 指令 | 語法 | 說明 |
log commands | log commands <類型列表> | 記錄指定類別用戶執行的每條 FTP 指令。 |
log transfers | log transfers <類型列表> <方向列表> | 記錄檔案傳輸。方向:inbound(上傳)、outbound(下載)。 |
4. 雜項功能
| 指令 | 語法 | 用途 |
alias | alias <字串> <目錄> | 目錄別名,cd 別名 即跳轉。例:alias rfc: /pub/doc/rfc |
cdpath | cdpath <目錄> | 擴展 cd 搜尋路徑,允許相對路徑跳轉深層目錄。 |
compress | compress yes|no [class...] | 控制傳輸壓縮(需客戶端支援)。 |
tar | tar yes|no [class...] | 允許 tar 指令打包下載。 |
shutdown | shutdown <路徑> | 關機前顯示訊息檔,拒絕新連線。 |
實戰配置範例
# /etc/ftpaccess
# 類別定義
class internal real,guest 192.168.10.0/24
class external anonymous,guest 0.0.0.0/0
# 存取限制
deny 192.168.10.200 /etc/ftp/deny.msg
limit internal 50 Any /etc/ftp/limit.msg
limit external 10 Any /etc/ftp/limit.msg
loginfails 3
# 訊息
banner /etc/ftp/banner.msg
message /etc/ftp/welcome.msg LOGIN
message /etc/ftp/readme.msg CWD=/pub
readme /etc/ftp/README CWD=/pub
# 日誌
log commands real,guest
log transfers real,guest inbound,outbound
# 別名與路徑
alias pub: /var/ftp/pub
alias src: /usr/src
cdpath /var/ftp
cdpath /usr/src
# 訪客群組
guestgroup ftpguests
# 安全
private yes
compress yes internal
tar yes internal
遷移建議
新部署請優先選用 vsftpd(安全預設、配置簡單、效能佳)或 ProFTPD(模組化、類 Apache 配置風格)。ftpaccess 僅用於維護既有 WU-FTPD 環境。