实现基于MYSQL验证的vsftpd虚拟用户访问

一、配置mysql服务器
1.1 安装mysql
# yum -y install mariadb-server
# systemctl enable --now mariadb.service && systemctl status
1.2 创建数据库支持vsftpd服务
#1创建用于存储虚拟用户的数据库和表
MariaDB [(none)]> create database vsftpd;
MariaDB [vsftpd]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| vsftpd |
+--------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]> use vsftpd
MariaDB [vsftpd]> create table users(id int auto_increment not null primary key,name char(50) binary not null,password char(48) binary not null);
MariaDB [vsftpd]> show tables;
+------------------+
| Tables_in_vsftpd |
+------------------+
| users |
+------------------+
1 row in set (0.001 sec)
#2添加虚拟用户
MariaDB [vsftpd]> insert into users(name,password) values('xiaoming',password('123456'));
Query OK, 1 row affected (0.002 sec)
MariaDB [vsftpd]> insert into users(name,password) values('xiaohong',password('654321'));
Query OK, 1 row affected (0.004 sec)
MariaDB [vsftpd]> select * from users;
+----+----------+-------------------------------------------+
| id | name | password |
+----+----------+-------------------------------------------+
| 1 | xiaoming | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 2 | xiaohong | *2A032F7C5BA932872F0F045E0CF6B53CF702F2C5 |
+----+----------+-------------------------------------------+
2 rows in set (0.001 sec)
#3创建连接数据库的账号
MariaDB [(none)]> grant select on vsftpd.* to vsftpd@'10.0.0.%' identified by "123456";
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)
二、配置FTP服务器
2.1安装vsftpd
# yum -y install vsftpd
2.2 编译安装pam_mysq
# yum -y install vsftpd gcc gcc-c++ make mariadb-devel pam-devel
# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
# tar xvf pam_mysql-0.7RC1.tar.gz
# cd pam_mysql-0.7RC1/
# ./configure --with-pam-mods-dir=/lib64/security
# make install
# ll /lib64/security/pam_mysql*
-rwxr-xr-x 1 root root 882 Dec 25 22:14 /lib64/security/pam_mysql.la
-rwxr-xr-x 1 root root 141712 Dec 25 22:14 /lib64/security/pam_mysql.so
2.3 创建pam认证所需文件
# cat > /etc/pam.d/vsftpd.mysql << EOF
auth required pam_mysql.so user=vsftpd passwd=123456 host=10.0.0.8 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=123456 host=10.0.0.8 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
EOF
2.4 创建系统用户
# useradd -r -s /sbin/nologin -d /data/ftproot vuser
# mkdir -pv /data/ftproot/upload
# setfacl -m u:vuser:rwx /data/ftproot/upload
2.5 修改vsftpd配置文件
# vi /etc/vsftpd/vsftpd.conf
guest_enable=YES #所有系统用户都映射成guest用户
guest_username=vuser #指定guest用户
pam_service_name=vsftpd.mysql #添加pam模板
2.6 启动vsftpd服务
# systemctl enable --now vsftpd
三、测试
[root@client ~]#ftp 10.0.0.7
-bash: ftp: command not found
[root@client ~]#yum provides ftp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cloud.tencent.com
* epel: mirrors.cloud.tencent.com
* extras: mirrors.cloud.tencent.com
ftp-0.17-67.el7.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
Repo : base
[root@client ~]#yum -y install ftp-0.17-67.el7.x86_64
[root@client ~]#ftp 10.0.0.7
Connected to 10.0.0.7 (10.0.0.7).
220 (vsFTPd 3.0.2)
Name (10.0.0.7:root): xiaoming
331 Please specify the password.
Password: #123456
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
#成功登录
[root@client ~]#ftp 10.0.0.7
Connected to 10.0.0.7 (10.0.0.7).
220 (vsFTPd 3.0.2)
Name (10.0.0.7:root): xiaohong
331 Please specify the password.
Password: #654321
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
#成功登录
实现基于MYSQL验证的vsftpd虚拟用户访问的更多相关文章
- 实现验证的vsftpd虚拟用户
实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vu ...
- FTP服务-实现vsftpd虚拟用户
前几篇介绍了基础,这篇将具体实现几个案例 实现基于文件验证的vsftpd虚拟用户,每个用户独立一个文件夹 1.创建用户数据库文件 vim /etc/vsftpd/vusers.txt qq cento ...
- 烂泥:ubuntu下vsftpd虚拟用户配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...
- VSFTPD虚拟用户配置
转载:http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html 以下操作验证OK!!!! VSFTPD虚拟用户配置 VSFTP = ...
- ubuntu server vsftpd 虚拟用户及目录
ubuntu server vsftpd 虚拟用户及目录 一:需求场景: 在ubuntu server上开设一个虚拟网站,在网站目录建立一个ftp目录,允许用户通过ftp上传网站文件到网站目录: 同时 ...
- vsftpd虚拟用户【公司系统部分享】
一,安装相关工具包 #yum -y install pam vsftpd db4 db4-utils -- pam 是用来提供身份验证的 -- vsftpd 是ftp服务的主程序 -- db4支持文件 ...
- vsftpd虚拟用户创建实例(转载)
vsftpd虚拟用户创建实例 发布:theboy 来源:net [大 中 小] vsftpd虚拟用户创建实例,有需要的朋友可以参考下. vsftpd虚拟用户创建实例,有需要的朋友可以参考 ...
- vsftpd 虚拟用户配置
vsftpd 虚拟用户的作用是 通过不同的虚拟用户可以有不同的根目录. 从 2.3.5 版本之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能在具有写权限了,如果检查 ...
- Ubuntu 12.04 LTS为例演示vsftpd虚拟用户 的配置
vsftpd虚拟用户 2012-05-19 15:46:59| 分类: GNU/Linux | 标签:ubuntu vsftpd ftp 虚拟用户 |举报|字号 订阅 我们登录FTP有 ...
随机推荐
- 前端后端通信初步尝试(javascript - flask)
在某项目中,需要使用python flask做后端功能开发,web提供功能入口. 此时需要使用Ajax通信. 由于以前从未接触过网络传输,记录了一些基础知识. 资料参考<HTML5+CSS3+J ...
- python 使用demical模块四舍五入
前言: 断言部分需要用到四舍五入,首先使用的是python自带的round(),做四舍五入进位处理,但使用过程中,发现round似乎是当保留小数位的最后一位是偶数,和保留小数位后一位为5时,就不进位. ...
- DB2给表批量赋权
使用DB2的for循环语句给表批量赋权,同理,稍加修改可作为其他批量操作. 值得注意的是: grant语句无法直接执行,需要使用execute immediate才能执行. 授权操作表的所有权限:gr ...
- vuex 中使用Element-ui的message
首先引入Message 其次,在mutations中调用Message 注意:缓存的问题,如果没有弹出框架出现,多重启几次服务 参考资料: https://blog.csdn.net/weixin_4 ...
- SpringBoot学习笔记一之本地环境基础搭建
原文链接: https://www.toutiao.com/i6802935050196222471/ 工程创建 Maven创建工程 搜索maven找到project的创建 创建simple proj ...
- 利用Word2010制作流程图
利用Word2010制作流程图 原文链接:https://www.toutiao.com/i6483034968225235469/ 一.页面和段落的设置 启动Word2010,打开一个空白文档,并切 ...
- 论文翻译:2020_Nonlinear Residual Echo Suppression using a Recurrent Neural Network
论文地址:https://indico2.conference4me.psnc.pl/event/35/contributions/3367/attachments/779/817/Thu-1-10- ...
- orleans集群及负载均衡实现
netcore6项目,微服务框架选orleans ,国内似乎没什么项目在用,坑多无资料.orleans文档可以解决几乎,只能看官方资料. Introduction | Microsoft Orlean ...
- Android官方文档翻译 十七 4.1Starting an Activity
Starting an Activity 开启一个Activity This lesson teaches you to 这节课教给你 Understand the Lifecycle Callbac ...
- 小白也能看懂的Redis教学基础篇——做一个时间窗限流就是这么简单
不知道ZSet(有序集合)的看官们,可以翻阅我的上一篇文章: 小白也能看懂的REDIS教学基础篇--朋友面试被SKIPLIST跳跃表拦住了 书接上回,话说我朋友小A童鞋,终于面世通过加入了一家公司.这 ...