34.3 ProFTPD(基于 MySQL)
安装 ProFTPD
# pkg install proftpd proftpd-mod_sql_mysql# cd /usr/ports/ftp/proftpd/ && make install clean
# cd /usr/ports/databases/proftpd-mod_sql_mysql/ && make install cleanProFTPD 配置文件
ServerName "Test Ftp Server" # FTP 服务器名称
ServerType standalone # 独立运行模式
DefaultServer on # 设为默认服务器
ServerIdent on "FTP Server ready" # 服务器标识信息
Port 21 # 监听端口
Umask 022 # 文件创建掩码
# 超时设置
TimeoutLogin 300 # 登录超时时间(秒)
TimeoutIdle 36000 # 空闲超时时间(秒)
TimeoutNoTransfer 36000 # 无传输超时时间(秒)
# 资源限制
User proftpd # 运行服务的用户
Group proftpd # 运行服务的用户组
RLimitMemory 256M 256M # 内存限制
RLimitOpenFiles 1024 1024 # 打开文件数量限制
PassivePorts 50000 60000 # 被动模式端口范围
# 日志配置
LogFormat default "%h %l %u %t \"%r\" %s %b" # 默认日志格式
LogFormat auth "%v [%P] %h %t \"%r\" %s" # 认证日志格式
SystemLog /var/log/proftpd/proftpd.log # 系统日志路径
TransferLog /var/log/proftpd/xfer.log # 文件传输日志路径
ExtendedLog /var/log/proftpd/auth.log AUTH auth # 扩展认证日志
# MySQL 模块加载
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_sql_passwd.c
# 只允许访问各自的目录
DefaultRoot ~ # 将用户限制于主目录内
# 允许覆盖文件
AllowOverwrite on # 允许文件覆盖
<Global>
# 数据库连接
SQLConnectInfo proftpd@localhost proftpd <你的数据库密码> # 数据库连接信息(用户、主机、密码)
# 密码认证设置
SQLAuthTypes SHA256 # 使用 SHA256 加密认证
SQLPasswordEngine on # 启用 SQL 密码引擎
# 用户表映射
SQLUserInfo users username password uid gid homedir shell # 映射 users 表字段
SQLDefaultGID 2000 # 默认 GID
SQLDefaultUID 2000 # 默认 UID
RequireValidShell off # 不要求有效 Shell
# 认证顺序
AuthOrder mod_sql.c
SQLAuthenticate users # 使用 SQL 用户表认证
# 登录统计
SQLNamedQuery getcount SELECT "CONCAT('Total logins: ', count) FROM users WHERE username='%u'" # 查询登录次数
SQLNamedQuery updatecount UPDATE "count=count+1 WHERE username='%u'" users # 更新登录次数
SQLShowInfo PASS "230" "%{getcount}" # 显示登录统计信息
SQLLog PASS updatecount # 记录登录统计
# 文件操作日志
SQLNamedQuery log_work FREEFORM "INSERT INTO worklog (user_name, file_and_path, bytes, send_time, client_ip, client_name, client_command) VALUES ('%u', '%f', %b, NULLIF('%T', ''), '%a', '%h', '%m')" # 文件操作日志记录
SQLLog RETR,STOR,DELE log_work # 将 RETR、STOR、DELE 操作记录到 worklog 表
</Global>相关文件结构
创建用户
MySQL 数据库相关
项目
值
服务操作
最后更新于