实现基于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有 ...
随机推荐
- python的赋值、浅拷贝和深拷贝
""" 一.赋值在python中就是简单的对象引用 """ list_a = ["aaa", "bbb&quo ...
- 不用find,怎样递归地给目录设置700,给文件设置600权限?
https://stackoverflow.com/questions/36553701/how-to-set-permissions-recursively-700-for-folders-and- ...
- Yum安装Maven
一.安装 wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum. ...
- less 循环模拟sass的for循环效果
// 输入框部分宽度 从10px到600px 相隔10像素 .generate-widths(600); .generate-widths(@n, @i: 10) when (@i =< @n) ...
- vue render中如何正确配置img的路径
第一种:适用于静态路径 attrs: { src: require('../common/images/logo.png'), title: 'img' } 第二种:适用于动态路径 domProps: ...
- 移动端开发,rem单位妙用,自适应
其实我们都会,但是不会用 大家看到的都是,这样的,这样的. http://www.woshipm.com/ucd/24110.html http://www.w3cplus.com/css3/defi ...
- 使用.NET 6开发TodoList应用(25)——实现RefreshToken
系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在上一篇文章使用.NET 6开发TodoList应用(24)--实现基于JWT的Identity功能中,我们演示了如何使用.N ...
- 【Java】final
final final可以用来修饰的结构:类.方法.变量 final 用来修饰一个类:此类不能被其他类所继承. 比如:String类.System类.StringBuffer类 final 用来修饰方 ...
- 【Java】包装类
文章目录 包装类 什么是包装类 基本数据类型-->包装类 包装类-->基本数据类型 自动装箱与自动拆箱 基本数据类型.包装类与String的转换 基础数据类型.包装类-->Strin ...
- Linux创建运行C/C++代码
不同于在Windows操作系统下借助IDE运行C++程序,Linux操作系统可以使用g++编译 创建文件及编译文件的流程 1. 先进入某一文件目录下,创建一个文件(也可以用mkdir创建文件) to ...