Vsftpd使用虚拟用户登录调用mysql验证

来源:互联网 发布:米特网域名怎么解析 编辑:程序博客网 时间:2024/06/16 09:43

Vsftpd使用虚拟用户登录调用mysql验证

安装包:vsftpd,mariadb-server,mariadb-devel,pam-devel(此包如有安装有问题,可使用rpm命令安装)

1、 制作pam_mysql.so模块

获取pam_mysql-0.7RC1包
进入pam_mysql-0.7RC1目录下,执行configure命令,如下:
pam_mysql-0.7RC1]# ./configure –with-pam=/usr –with-mysql=/usr –with-pam-mods-dir=/usr/lib64/security
pam_mysql-0.7RC1]# make && make install
完成后在/usr/lib64/security下会有生成pam_mysql.so,如下
这里写图片描述

2、 数据配置

修改/etc/my.conf,添加如下:
这里写图片描述

建立虚拟用户数据库,库名vsftpd
create database vsftpd;

设置默认数据库为vsftpd
use vsftpd;

建立虚拟用户密码表,表名users,
create table users(id int unsigned not null auto_increment primary key, name varchar(100) not null,password varchar(48) not null,unique key(name));

插入数据两条数据, 这两条数据为2个虚拟用户和其密码
insert into users (name,password) values (‘smartwy’,password(‘123456’)), (‘test’,password(‘123456’));

授权vsftpd这个账号可以读取vsftpd数据库的user表
查看users表中数据
grant all on vsftpd.users to ‘vsftpd’@’localhost’ identified by ‘123456’;
这里写图片描述
flush privileges;或回到bash执行systemctl restart mariaDB

3、 vsftpd配置

修改/etc/vsftpd/vsftpd.conf,如下:
这里写图片描述
创建vuser系统用户与共享目录
~]# mkdir –pv /ftproot/vuser
~]# useradd -d /ftproot/vuser vuser
~]# chown -R vuser:vuser /ftproot/vuser
~]# chmod a-w /ftproot/vuser
/ftproot/vuser目录为虚拟用户登录操作的ftp共享目录
在/etc/pam.d/下新建vsftpd.vusers PAM认证文件,如下:
这里写图片描述
注意:host选项为数据库grant命令授权时的参数,切记。
crypt=0:密码使用明文方式保存
crypt=1:密码使用UNIX的DES加密方式加密后保存
crypt=2:密码使用MySQL的password()函数加密后保存
crypt=3:密码使用MD5散列值的方式保存
为虚拟用户设置权限,如下:
这里写图片描述
在/etc/vsftpd/vusers_config/下新建test、smartwy文件,如下:
这里写图片描述
配置完成后,重启vsftpd服务,

4、测试

浏览器测试,如下:输入ftp://用户名:密码@172.16.253.190
这里写图片描述
这里写图片描述
这里写图片描述
下面为匿名用户可访问的共享/var/ftp/pub目录,
这里写图片描述

下面是/etc/vsftpd/vsftpd.conf常用选项简介:
#禁用匿名用户登陆
anonymous_enable=NO

#允许本地用户登陆
local_enable=YES

#允许本地用户写入
write_enable=YES

#注意:这个地方如果不配置,就会出现只有root用户可以登陆,普通用户不可以
check_shell=NO

#掩码,决定了上传上来的文件的权限。设置为000使之有最大权限
local_umask=000

#允许记录日志
xferlog_enable=YES

#允许数据流从20端口传输
connect_from_port_20=YES

#日志路径
xferlog_file=/var/log/vsftpd.log

#ftp欢迎语,可以随便设置
ftpd_banner=hi,guys!

#注意:这个选项可以保证用户锁定在指定的家目录里,防止系统文件被修改。
chroot_local_user=YES

#注意:这个不配置有可能出现只能下载不能上传
allow_writeable_chroot=YES

#配置了可以以stand alone模式运行
listen=YES

#注意:该选项不配置可能导致莫名其妙的530问题
seccomp_sandbox=NO

#说明我们要指定一个userlist,里边放的是允许ftp登陆的本地用户。如果设置为YES,则文件里设置的是不允许登陆的本地用户
userlist_deny=NO
userlist_enable=YES

#记录允许本地登陆用户名的文件
userlist_file=/etc/vsftpd/allowed_users