vsftpd 基于mysql的虚拟账户

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vsftpd 基于mysql的虚拟账户相关的知识,希望对你有一定的参考价值。

Centos7 vsftpd 基于mysql的虚拟账户认证

实验环境: 两台虚拟机的防火墙和SELinux都已关闭

角色 IP
vsftpd 192.168.148.7
mysql 192.168.148.17
系统账户 用户主目录
vuser /data/ftproot
虚拟账户 密码 用户主目录
ftp1 centos /data/ftproot/ftp1
ftp2 redhat /data/ftproot/ftp2

mysql服务器添加用户数据库

[[email protected] ~]# yum -y install mariadb-server
[[email protected] ~]#  systemctl start mariadb

[[email protected] ~]# vim vsftpd.sql
CREATE DATABASE vsftpd;
USE vsftpd

CREATE TABLE vuser (
id int(10) AUTO_INCREMENT PRIMARY KEY,
username char(30) BINARY NOT NULL,
password char(50) BINARY NOT NULL
);

insert into vuser(username,password)values(‘ftp1‘,password(‘centos‘)),(‘ftp2‘,password(‘redhat‘));
grant select on vsftpd.vuser to [email protected]‘192.168.148.7‘ identified by ‘centos‘;

[[email protected] ~]# mysql < vsftpd.sql 

vsftpd配置虚拟账户

[[email protected] ~]# yum -y install vsftpd
# 创建虚拟账户 ftp1, ftp2的用户目录和上传目录
[[email protected] ~]# mkdir -p /data/ftproot/ftp{1,2}/upload
[[email protected] ~]# touch /data/ftproot/ftp1/ftp1
[[email protected] ~]# touch /data/ftproot/ftp2/ftp2

# 创建虚拟账户映射的系统账号 vuser
[[email protected] ~]# useradd -r -s /sbin/nologin -d /data/ftproot vuser

# 修改配置文件,注释默认的 pam设置,添加如下配置
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf 
#pam_service_name=vsftpd
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vusers.d

#添加虚拟账户配置文件
[[email protected] ~]# mkdir /etc/vsftpd/vusers.d
[[email protected] ~]# vim /etc/vsftpd/vusers.d/ftp1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/data/ftproot/ftp1

[[email protected] ~]# vim /etc/vsftpd/vusersd.d/ftp2
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/data/ftproot/ftp2

# 下载 pam_mysql 下载地址 http://repo.iotti.biz/CentOS/7/x86_64/pam_mysql-0.8.1-0.22.el7.lux.x86_64.rpm
[[email protected] ~]# rpm -iv pam_mysql-0.8.1-0.22.el7.lux.x86_64.rpm

#编写vsftpd.mysql文件
[[email protected] ~]# vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.148.17  db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=192.168.148.17 db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2

# 启动服务
[[email protected] ~]# systemctl start vsftpd

MySQL服务器作客户端测试虚拟账户

# 安装客户端程序
[[email protected] ~]# yum -y install lftp
# 指定用户名,密码
[[email protected] ~]# lftp -u ftp1,centos 192.168.148.7
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 May 17 07:20 ftp1
drwxr-xr-x    2 0        0               6 May 17 07:04 upload
lftp [email protected]:/> quit

[[email protected] ~]# lftp -u ftp2,redhat 192.168.148.7
lftp [email protected]:~> ls
-rw-r--r--    1 0        0               0 May 17 07:20 ftp2
drwxr-xr-x    2 0        0               6 May 17 07:04 upload
lftp [email protected]:/> bye

以上是关于vsftpd 基于mysql的虚拟账户的主要内容,如果未能解决你的问题,请参考以下文章

vsftp 利用mysql 验证虚拟账户

配置vsftpd的遇到的坑及搭建虚拟账户

vsftpd基于pam_mysql的虚拟用户机制

实现基于MYSQL验证的vsftpd虚拟用户功能

实验——基于文件验证和MYSQL验证的vsftpd虚拟用户

实现基于mysql验证的vsftpd虚拟用户