病毒橫行、資料外洩風險下,企業需為員工提供「大容量、高可靠、高安全、權限可控」的個人備份空間。方案採用 Linux + ProFTPD 1.2.4+ + MySQL,以資料庫取代傳統 /etc/passwd 管理 FTP 帳號,解決並發寫入、Telnet 風險、瀏覽器改密難等痛點。
usersCREATE TABLE users (
userid VARCHAR(50) PRIMARY KEY,
password VARCHAR(50),
uid INT DEFAULT 0,
gid INT DEFAULT 65533,
homedir VARCHAR(255),
count INT DEFAULT 0,
ftime TIMESTAMP(14),
shell VARCHAR(255) DEFAULT '/bin/bash'
);
FTP_logCREATE TABLE FTP_log (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
filename VARCHAR(255),
filesize INT UNSIGNED,
email VARCHAR(20),
ip VARCHAR(15),
action VARCHAR(255),
ftime DATETIME
);
proftpd.conf# MySQL 連線
SQLConnectInfo FTPusers@localhost db_user db_pass
SQLAuthTypes Plaintext
SQLAuthenticate users
SQLUserTable users
SQLNameField userid
SQLPasswordField password
SQLHomedirField homedir
SQLUidField uid
SQLGidField gid
SQLLoginCountField count
SQLShellField shell
# 配額預設 200MB
DefaultQuota 204800000
QuotaType hard
# 日誌寫入資料庫
TransferLog none
SQLLog RETR,STOR,DELE INSERT INTO FTP_log VALUES (NULL, '%f', %b, '%u', '%h', '%r', NOW())
| 操作 | 資料庫動作 | 檔案系統動作 |
|---|---|---|
| 新增用戶 | INSERT INTO users ... | 首次登入自動建立 homedir,依 uid/gid 設權限,生成 .quota |
| 刪除用戶 | DELETE FROM users WHERE userid=? | 遞歸刪除 homedir(需 Web 進程有寫權限,配合 sudoers) |
| 修改配額 | — | 覆蓋 homedir/.quota(格式:總量 已用量),需 root 權限 |
| 修改密碼 | UPDATE users SET password=PASSWORD(?) WHERE userid=? | — |
--with-modules=mod_sql:mod_sql_mysql:mod_quota 並指定 MySQL header/lib 路徑。mod_tls)加密傳輸。