vsftpd使用Mraiadb虚拟用户访问

Posted Happy_Future

tags:

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

一、概述

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

二、安装部署

1、安装VSFTPD软件包

yum install -y vsftpd

2、创建用户数据库文件

创建用户数据文件

用用户数据文件生成用户数据库文件

 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

开启FTP允许上传

创建虚拟用户和家目录

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

验证上传功能

4、基于mysql的扩展实现

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

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

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

安装meson和ninja

pip3 install meson ninja

解压源码包

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

执行构建

meson ../pam-MySQL-build

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

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

将生成后的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服务

登陆测试

上传测试

三、总结

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

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

linux[基础]-30-[vsftpd]-[虚拟用户访问]-[04]

centos7搭建vsftpd并启用虚拟用户

vsftpd配置虚拟用户

VSFTP服务器配置具有不同访问权限的虚拟用户

VSFTP服务器配置具有不同访问权限的虚拟用户

VSFTP服务器配置具有不同访问权限的虚拟用户