vsftpd基于mysql实现用户认证

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

一、演示环境:

IP地址

操作系统

服务器角色

192.168.1.144

CentOS   6.9 

vsftpd服务器

192.168.1.145

CentOS   6.9

mysql服务器

二、安装前准备:

1、  服务器时间校对

2、  配置epel

三、mysql服务器所需执行的操作:

1、  安装软件包:# yum -y install mysql-server mysql-devel ftp

2、  启动mysql,检查3306号端口是否被监听:# service mysqld start  # ss -tnlp | grep :3306

3、  初始化mysql# mysql_secure_installation     //设置root用户密码为123456

4、  创建数据库、表,并授权远程用户登录:

      # mysql -uroot -p

      mysql> create database ftp;

      mysql> grant select on ftp.* to ftpuser@'192.168.1.144' identified by '123456';

      mysql> flush privileges;

      mysql> use ftp;

      mysql> create table user(id int unsigned auto_increment not null primary key,name varchar(20) binary not null,password char(48) binary not null);

      mysql> desc user;

      1.jpg

5、  添加FTP虚拟用户marionkeyso

      mysql> insert into user(name,password) values('marion',password('mftpasswd')),('keyso',password('kftpasswd'));

   备注:虚拟用户marion使用密码mftpasswd登录FTP,虚拟用户keyso则使用密码kftpasswd登录FTP

      mysql> select * from user;

      2.jpg

   备注:账号密码使用password()函数加密后存储

四、vsftpd服务器所需执行的操作:

1、  安装软件包:# yum -y install vsftpd pam_mysql mysql

2、  使用账号ftpuser远程登录mysql服务器:

3.jpg

3、  创建认证所需文件vsftpd.mysql

      # rpm -ql pam_mysql | grep pam_mysql.so  -->  /lib64/security/pam_mysql.so

      # vim /etc/pam.d/vsftpd.mysql,添加如下两行代码:

      auth required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=192.168.1.145 db=ftp table=user usercolumn=name passwdcolumn=password crypt=2

      account required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=192.168.1.145 db=ftp table=user usercolumn=name passwdcolumn=password crypt=2

   备注:

数字

代表的含义

0

不加密,明文

1

使用crypt函数加密

2

使用mysql password()函数加密

3

使用md5加密

4

使用sha1加密

  4、  创建虚拟用户映射的系统用户:

# useradd -s /sbin/nologin -d /ftpdocs vuser    //新的家目录ftpdocs必须事先不存在,该命令会自动创建

# chmod go+rx /ftpdocs

5、  修改主配置文件/etc/vsftpd/vsftpd.conf,确认启用如下选项:

      chroot_local_user=YES

      pam_service_name=vsftpd.mysql

      guest_enable=YES

      guest_username=vuser

      user_config_dir=/etc/vsftpd/vusers

      use_localtime=YES

6、  创建对应的虚拟用户配置文件目录:# mkdir -pv /etc/vsftpd/vusers

7、  配置不同的虚拟用户具有不同的访问权限:

      # cd /etc/vsftpd/vusers

      # vim marion

      anon_upload_enable=YES

      anon_mkdir_write_enable=YES

      anon_other_write_enable=YES

      # cp marion keyso

      # sed -i 's#YES#NO#g' keyso

      4.jpg

   备注:每个虚拟用户的配置文件名同虚拟用户的用户名。虚拟用户所能执行的权限都由匿名用户的相关选项定义。所有的虚拟用户都映射到系统用户vuser上。

8、  启动vsftpd,检查21号端口是否被监听:# service vsftpd start  # ss -tnlp | grep :21

五、用户认证测试:

   在mysql服务器上分别使用虚拟用户marionkeyso远程登录FTP# ftp 192.168.1.144,测试上传文件、删除文件、创建目录和删除目录等权限

   使用虚拟用户marion登录FTP

   5.jpg

   使用虚拟用户keyso登录FTP

   6.jpg






      本文转自Marion0728  51CTO博客,原文链接:http://blog.51cto.com/qiuyue/2057761,如需转载请自行联系原作者




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Prometheus 监控 Cloud Native
手把手教你Prometheus + Granafa实现mysql 性能监测部署
数据库性能监控可以说是十分重要,能否自行搭建环境实现像阿里云或是腾讯云那样直观的展示不同维度数据的功能?答案是肯定的。下面详细说明一下安装部署过程以及过程中出现的问题,希望对你有所帮助!
手把手教你Prometheus + Granafa实现mysql 性能监测部署
|
SQL 关系型数据库 MySQL
MySql字符串拆分实现split功能(字段分割转列、转行)
MySql字符串拆分实现split功能(字段分割转列、转行)
MySql字符串拆分实现split功能(字段分割转列、转行)
|
关系型数据库 MySQL
Mysql中文汉字转拼音的实现
Mysql中文汉字转拼音的实现
627 0
|
SQL 缓存 关系型数据库
MySQL日志(undo log 和 redo log 实现事务的原子性/持久性/一致性)
MySQL日志(undo log 和 redo log 实现事务的原子性/持久性/一致性)
MySQL日志(undo log 和 redo log 实现事务的原子性/持久性/一致性)
|
canal 关系型数据库 MySQL
基于 Docker 结合 Canal 实现 MySQL 实时增量数据传输
基于 Docker 结合 Canal 实现 MySQL 实时增量数据传输
952 0
基于 Docker 结合 Canal 实现 MySQL 实时增量数据传输
|
SQL 前端开发 关系型数据库
mysql实现一次将多条不同sql查询结果并封装到一个结果集
最近遇到一个统计查询需求,要求一次性查询多个统计信息,其中两个查询信息不在一个表中,也没有业务关联,表中也没有做连接处理。不考虑产品设计是否合理,完全是实际需求如此,需要一次性查询出来返回给前端进行展示,对于这种“非常规”的统计查询平常肯定会遇见,感觉有点代表性,所以简单记录一下。希望对有相同需求的同学可以作为参考。
mysql实现一次将多条不同sql查询结果并封装到一个结果集
|
Ubuntu 关系型数据库 MySQL
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动
390 0
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动
|
canal SQL 关系型数据库
10.【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal简单使用
【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal简单使用
10.【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal简单使用
|
canal 关系型数据库 MySQL
9.【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal安装
canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal安装
9.【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal安装
|
canal 消息中间件 关系型数据库
8.【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-mysql安装
canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-mysql安装
8.【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-mysql安装