当前位置 : 主页 > 操作系统 > centos >

vsftpd使用Mariadb虚拟用户访问

来源:互联网 收集:自由互联 发布时间:2022-06-20
一、概述 文件共享协议中,对于客户端共享资源FTP作为非常流行协议,本次我们实现基于文件和数据库,实现FTP虚拟用户存储。 二、安装部署 1、安装VSFTPD软件包 yum install -y vsftpd 2、创

一、概述

文件共享协议中,对于客户端共享资源FTP作为非常流行协议,本次我们实现基于文件和数据库,实现FTP虚拟用户存储。

二、安装部署

1、安装VSFTPD软件包

yum install -y vsftpd

image.png

2、创建用户数据库文件

创建用户数据文件image.png用用户数据文件生成用户数据库文件

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.confimage.png开启FTP允许上传image.png创建虚拟用户和家目录

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

验证上传功能image.png

4、基于mysql的扩展实现

使用mysql的前提是需要编译开源项目https://sourceforge.net/projects/pam-mysql/但是由于该项目上次更新是2006年,已经是非常古老的项目,只能支持到Centos7。image.png

本次是使用github的基于上面的开源项目的改良版https://github.com/NigelCunningham/pam-MySQL安装Centos8 的编译环境

yum install gcc python3 git mariadb-devel pam-devel -y

image.png

安装meson和ninja

pip3 install meson ninja

image.png

解压源码包

tar xf pam-MySQL-1.0.0-beta1.tar.gz

执行构建

meson ../pam-MySQL-build

进入构建后的目录下执行编译

cd ../pam-MySQL-build ninja && ninja install

image.png

将生成后的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('ftpuser1',password('123456')); 授权连接 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服务

登陆测试image.png上传测试image.png

三、总结

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

上一篇:prometheus snmp_exporter使用
下一篇:没有了
网友评论