vsftpd使用Mraiadb虚拟用户访问

从来好事天生俭,自古瓜儿苦后甜。这篇文章主要讲述vsftpd使用Mraiadb虚拟用户访问相关的知识,希望能为你提供帮助。
一、概述文件共享协议中,对于客户端共享资源FTP作为非常流行协议,本次我们实现基于文件和数据库,实现FTP虚拟用户存储。
二、安装部署 1、安装VSFTPD软件包

yum install -y vsftpd

vsftpd使用Mraiadb虚拟用户访问

文章图片

2、创建用户数据库文件创建用户数据文件
vsftpd使用Mraiadb虚拟用户访问

文章图片

用用户数据文件生成用户数据库文件
db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db

对数据文件做权限安全限制
chmod 600 /etc/vsftpd/vusers.*

3、创建PAM配置文件--第一种文件数据库实现
[root@manager ~]# cat /etc/pam.d/vsftpd.db auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers

关闭anonymous来宾访问
修改/etc/vsftpd/vsftpd.conf
vsftpd使用Mraiadb虚拟用户访问

文章图片

开启FTP允许上传
vsftpd使用Mraiadb虚拟用户访问

文章图片

创建虚拟用户和家目录
useradd -d /data/ftproot -s /sbin/nologin -r vuser mkdir -pv /data/ftproot/upload

配置文件添加虚拟用户的配置
guest_enable=YES guest_username=vuser pam_service_name=vsftpd.db user_config_dir=/etc/vsftpd/conf.d/

创建自定义配置目录
mkdir /etc/vsftpd/conf.d

配置虚拟用户配置文件
[root@manager ~]# cat /etc/vsftpd/conf.d/ftpuser2 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES

设置虚拟用户写入权限
setfacl -m u:vuser:rwx /data/ftproot2/upload

验证上传功能
vsftpd使用Mraiadb虚拟用户访问

文章图片

4、基于mysql的扩展实现使用mysql的前提是需要编译开源项目
https://sourceforge.net/projects/pam-mysql/
但是由于该项目上次更新是2006年,已经是非常古老的项目,只能支持到Centos7。
vsftpd使用Mraiadb虚拟用户访问

文章图片

【vsftpd使用Mraiadb虚拟用户访问】本次是使用github的基于上面的开源项目的改良版
https://github.com/NigelCunningham/pam-MySQL
安装Centos8 的编译环境
yum install gcc python3 git mariadb-devel pam-devel -y

vsftpd使用Mraiadb虚拟用户访问

文章图片

安装meson和ninja
pip3 install meson ninja

vsftpd使用Mraiadb虚拟用户访问

文章图片

解压源码包
tar xf pam-MySQL-1.0.0-beta1.tar.gz

执行构建
meson ../pam-MySQL-build

进入构建后的目录下执行编译
cd ../pam-MySQL-build ninjia & & ninjia install

vsftpd使用Mraiadb虚拟用户访问

文章图片

将生成后的pam-mysql.so 从lib/security 下移动到/lib64/security/
mv /lib/security/pam_mysql.so /lib64/security/

创建/etc/pam.d/vsftpd.mysql文件 ,其中的密码、数据库服务器连接信息与实际环境有关。
auth required pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

创建虚拟用户
useradd -d /var/ftp -s /sbin/nologin -r vuser

在vsftpd主配置文件中添加
user_config_dir=/etc/vsftpd/conf.d/ guest_enable=YES guest_username=vuser anon_world_readable_only=NO

在vsftpd主配置文件更改pam配置
pam_service_name=vsftpd.mysql

创建数据库和表,并插入用户数据
create database vsftpd CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL ); INSERT INTO users(name,password) values(\'ftp_wang\',password(\'magedu\')); 授权连接 grant select on vsftpd.* to vsftpd@\'127.0.0.1\' identified by \'123456\'

创建用户个性化配置文件
[root@localhost conf.d]# cat ftpuser1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/data/ftproot1

创建文件目录
mkdir -pv /data/ftproot1/upload\\

设置上传权限
setfacl -m u:vuser:rwx /data/ftproot1/upload/

启动vsftpd服务
登陆测试
vsftpd使用Mraiadb虚拟用户访问

文章图片

上传测试
vsftpd使用Mraiadb虚拟用户访问

文章图片

三、总结通过以上实践可以使用基本的vsftp虚拟主机功能。

    推荐阅读