从来好事天生俭,自古瓜儿苦后甜。这篇文章主要讲述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。
文章图片
【vsftpd使用Mraiadb虚拟用户访问】本次是使用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虚拟主机功能。
推荐阅读
- 交换机的基本原理与配置
- The art of multipropcessor programming 读书笔记-硬件基础2
- Linux中安装Docker,在Docker中安装MySQL和Redis并在Windows下连接访问
- 交换机原理和华为的基本命令
- C++ 单例模式
- 为何不使用自动创建线程池呢()
- 请求数据包从发送到接收,都经历什么()
- 部署Harbor私有仓库
- harbor私有仓库登录问题解决