針對病毒威脅與資料隱私,設計基於網路儲存的個人備份系統。採用 Linux + ProFTPD + MySQL 架構,實現虛擬使用者認證、磁碟配額、Web 管理介面,避免系統帳號風險。
ln -s /usr/local/mysql /usr/local/mysql # 確保路徑一致
./configure --with-includes=/usr/local/mysql/include \
--with-libraries=/usr/local/mysql/lib/mysql \
--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
--prefix=/opt/proftpd
make && make install
CREATE DATABASE proftpd;
USE proftpd;
CREATE TABLE users (
userid VARCHAR(50) NOT NULL PRIMARY KEY,
passwd VARCHAR(50),
uid INT(5) DEFAULT 0 NOT NULL,
gid INT(5) DEFAULT 65533 NOT NULL,
homedir VARCHAR(255),
count INT(11) DEFAULT 0,
ftime TIMESTAMP(14),
shell VARCHAR(255) DEFAULT '/bin/bash'
);
CREATE TABLE quotatab (
name VARCHAR(100) NOT NULL,
quota_type ENUM('user','group','class','all') NOT NULL,
per_session ENUM('false','true') NOT NULL,
limit_type ENUM('soft','hard') NOT NULL,
bytes_in_avail BIGINT, bytes_out_avail BIGINT,
files_in_avail INT, files_out_avail INT
);
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users
SQLConnectInfo proftpd@localhost root password
SQLUserInfo users userid passwd uid gid homedir shell
SQLDefaultUID 1000
SQLDefaultGID 1000
SQLHomedirOnDemand on
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_sql.c
groupadd -g 1000 ftpusers
useradd -u 1000 -g 1000 -d /home/ftp -s /bin/false ftpuser
chown -R 1000:1000 /home/ftp
/opt/proftpd/sbin/proftpd -c /opt/proftpd/etc/proftpd.conf
# FTP 用戶端以虛擬帳號登入測試
INSERT INTO users ...UPDATE users SET passwd=PASSWORD('new') WHERE userid='...'INSERT INTO quotatab ... (bytes_in_avail 設定上限)DELETE FROM users WHERE userid='...'SELECT * FROM users WHERE userid='...'ProFTPD + MySQL 是多租戶、可計費、可配額 FTP 服務的經典實作。現代替代:vsftpd + PAM/MySQL、Pure-FTPd + LDAP/SQL、SFTP (OpenSSH) + Chroot + Quota、Nextcloud/Seafile/MinIO (WebDAV/S3 API、更豐富協同功能)。根據協定需求、維運熟悉度、擴展性選擇。