手动阀

Good Luck To You!

Debian vsftpd MySQL实现虚拟用户

在Debian系统上,使用vsftpd和MySQL实现虚拟用户认证是一种常见的方法,以下是详细的步骤:

Debian vsftpd MySQL实现虚拟用户

安装必要的软件包

确保你的系统是最新的,并安装vsftpd和MySQL相关的软件包:

sudo apt update
sudo apt upgrade -y
sudo apt install vsftpd libpam-pwdfile mysql-server mysql-client -y

配置MySQL数据库

我们需要创建一个数据库和表来存储虚拟用户的信息。

登录到MySQL

sudo mysql -u root -p

创建数据库和表

CREATE DATABASE ftp_users;
USE ftp_users;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL,
    home_dir VARCHAR(100) NOT NULL,
    uid INT NOT NULL,
    gid INT NOT NULL,
    shell VARCHAR(50) NOT NULL,
    last_login TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

插入测试用户数据

Debian vsftpd MySQL实现虚拟用户

INSERT INTO users (user, password, home_dir, uid, gid, shell) VALUES ('testuser', 'password', '/home/ftp/testuser', 1001, 1001, '/bin/false');
FLUSH PRIVILEGES;
EXIT;

配置PAM文件

编辑/etc/pam.d/vsftpd文件,添加以下内容:

auth required pam_userdb.so db=/etc/vsftpd/virtual_login
account required pam_userdb.so db=/etc/vsftpd/virtual_login

生成虚拟用户数据库文件

使用db_load工具将MySQL数据库中的数据导出为PAM可识别的格式:

sudo apt install db-util -y
sudo db_load -T -t hash -f /etc/vsftpd/virtual_login.txt /etc/vsftpd/virtual_login.db

你需要编写一个脚本来从MySQL数据库中提取数据并生成/etc/vsftpd/virtual_login.txt文件。

#!/bin/bash
mysql -u root -pYOUR_PASSWORD -e "SELECT user, password FROM ftp_users.users" > /tmp/virtual_login.txt
echo "# PAM virtual login file generated by script" > /etc/vsftpd/virtual_login.txt
cat /tmp/virtual_login.txt >> /etc/vsftpd/virtual_login.txt
rm /tmp/virtual_login.txt

运行这个脚本:

chmod +x generate_virtual_login.sh
./generate_virtual_login.sh

配置vsftpd

编辑/etc/vsftpd.conf文件,添加或修改以下内容:

Debian vsftpd MySQL实现虚拟用户

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
guest_enable=YES
guest_username=ftp
user_sub_token=$USER
local_root=/home/ftp/$USER
hide_ids=YES

设置目录权限和所有者

确保FTP根目录和用户的主目录具有正确的权限和所有者:

sudo mkdir -p /home/ftp/testuser
sudo chown nobody:nogroup /home/ftp
sudo chmod a-w /home/ftp
sudo chown ftp:ftp /home/ftp/testuser

启动并启用服务

重启vsftpd服务并设置为开机自启:

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

验证配置

你应该能够使用你配置的虚拟用户登录FTP服务器了,你可以使用FTP客户端(如FileZilla)进行测试。

通过以上步骤,你已经成功在Debian系统上使用vsftpd和MySQL实现了虚拟用户认证。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.