Pure-FTPd作为一个轻量级、高性能且易于配置的 FTP 服务器,凭借其高效和安全性,赢得了众多管理员的青睐
而将 Pure-FTPd 与 MySQL 数据库结合使用,可以进一步提升其灵活性和用户管理能力
本文将详细介绍如何在 Linux 系统上配置 Pure-FTPd 以使用 MySQL 数据库进行用户认证和管理
一、准备工作 在开始配置之前,请确保你的系统已经安装了以下软件: 1.Pure-FTPd:轻量级且高性能的 FTP 服务器
2.MySQL:关系型数据库管理系统,用于存储用户信息
3.MySQL Connector/C:MySQL 的 C 语言开发库,Pure-FTPd 需要它来进行 MySQL 操作
4.libpam-mysql:PAM(Pluggable Authentication Modules)的 MySQL 模块,用于处理用户认证
二、安装必要软件 以 Debian/Ubuntu 系统为例,可以通过以下命令安装所需软件: bash sudo apt-get update sudo apt-get install pure-ftpd pure-ftpd-mysql mysql-server libmysqlclient-dev libpam-mysql 对于 CentOS/RHEL 系统,安装命令可能略有不同: bash sudo yum install pure-ftpd pure-ftpd-mysql mysql-server mysql-devel pam_mysql 三、配置 MySQL 1.启动 MySQL 服务: bash sudo systemctl start mysql sudo systemctl enable mysql 2.登录 MySQL: bash mysql -u root -p 3.创建 FTP 数据库和用户表: sql CREATE DATABASE ftpdb; USE ftpdb; CREATE TABLE users( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(86) NOT NULL, -- 使用 MD5-CRYPT加密的密码 email VARCHAR(100), enabled ENUM(0, 1) NOT NULL DEFAULT 1, upload_speed INT DEFAULT0, download_speed INT DEFAULT0, max_login_attempts INT DEFAULT0, max_email_per_hour INT DEFAULT0, disk_quota BIGINT DEFAULT0, ip_access VARCHAR(45) DEFAULT NULL, last_login TIMESTAMP NULL, date_added TIMESTAMP DEFAULT CURRENT_TIMESTAMP, modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE groups( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, groupname VARCHAR(50) NOT NULL UNIQUE, description TEXT ); CREATE TABLE groupmembers( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, userid INT NOT NULL, groupid INT NOT NULL, FOREIGN KEY(userid) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY(groupid) REFERENCES groups(id) ON DELETE CASCADE, UNIQUE(userid, groupid) ); 4.插入测试用户: sql INSERT INTO users(username, password, email, enabled) VALUES(testuser, ENCRYPT(testpassword, CONCAT($6$, SUBSTRING(MD5(RAND()),1,16))), testuser@example.com, 1); 注意:ENCRYPT 函数使用 MD5-CRYPT 算法加密密码
在实际环境中,建议使用更安全的密码哈希算法
四、配置 PAM PAM(Pluggable Authentication Modules)是一种提供灵活认证机制的框架
Pure-FTPd 通过 PAM 与 MySQL 进行交互,实现用户认证
1.创建 PAM 配置文件: 在`/etc/pam.d/`目录下创建一个新的配置文件,例如`pure-ftpd-mysql`: bash sudo nano /etc/pam.d/pure-ftpd-mysql 2.添加以下内容: pam authrequired pam_mysql.so user=root passwd=yourmysqlrootpassword host=localhost db=ftpdb table=users usercolumn=username passwdcolumn=password crypt=2 account required pam_mysql.so user=root passwd=yourmysqlrootpassword host=localhost db=ftpdb table=users usercolumn=username passwdcolumn=password crypt=2 注意:将 `yourmysqlrootpassword`替换为你的 MySQL root 密码
`crypt=2` 表示使用 MD5-CRYPT加密
五、配置 Pure-FTPd 1.编辑 Pure-FTPd 配置文件: Pure-FTPd 的配置文件通常位于`/etc/pure-ftpd/pure-ftpd.conf` 或`/etc/pure-ftpd.conf`
编辑该文件,添加或修改以下内容: conf 启用 PAM认证 PAMAuthentication yes 指定 PAM配置文件 PAMConfigFile /etc/pam.d/pure-ftpd-mysql 禁用匿名访问 AnonymousOnly no 启用虚拟用户(MySQL 用户) MySQLConfigFile /etc/pure-ftpd-mysql.conf 其他配置选项(根据需求调整) VerboseLog no MaxClientsNumber50 MaxLoginAttempts3 2.创建 MySQL 配置文件: 在`/etc/`目录下创建一个名为`pure-ftpd-mysql.conf` 的文件: bash sudo nano /etc/pure-ftpd-mysql.conf 3.添加以下内容: conf MYSQLServer localhost MYSQLUser root MYSQLPassword yourmysqlrootp