基于mysql控制vsftp的用户认证机制

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

一、简介

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

在开源操作系统中常用的FTPD套件主要还有ProFTPD、PureFTPd和wuftpd等

二、特点

vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用;
任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准;
所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作;
此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。

三、基于mysql实现vsftp的账号管理

  1.安装mysql和pam_mysql

1
[root@bogon yum.repos.d]# yum -y install vsftpd mysql-server mysql-devel pam_mysql

  2.准备数据库  

1
2
3
4
5
6
7
8
mysql> create database vsftpd;
Query OK,  1  row affected ( 0.00  sec)
mysql> grant all on vsftpd.* to vsftpd@localhost identified by  'wangfeng7399' ;
Query OK,  0  rows affected ( 0.00  sec)
mysql> grant all on vsftpd.* to vsftpd@ '127.0.0.1'  identified by  'wangfeng7399' ;
Query OK,  0  rows affected ( 0.00  sec)
mysql> flush privileges;
Query OK,  0  rows affected ( 0.00  sec)

  3.创建表

1
mysql> create table user(id  int  AUTO_INCREMENT primary key NOT NULL,name  var char( 50 ) binary NOT NULL, password char( 48 ) binary NOT NULL);

  4.添加测试的虚拟用户

1
mysql> insert into user(name,password)values( 'lili' ,password( 'wodehao123' )),( 'tom' ,password( 'wodehao123' ));

  说明:为了确保账号的安全,本处使用的为mysql的password加密机制

  5.配置pam认证所需的文件

编辑/etc/pam.d/vsftp.conf添加如下行

1
2
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=wangfeng7399 host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt= 2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=wangfeng7399 host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=password crypt= 2

  6.修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录    

1
2
[root@bogon ~]# useradd -s /sbin/nologin -d / var /ftproot vuser
[root@bogon ~]# chmod go+rx / var /ftproot

请确保/etc/vsftpd/vsftpd.conf中已经启用了一下选项

1
2
3
4
5
6
7
8
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
并在文件的末尾添加
guest_enable=YES
guest_username=vuser
anon_umask= 022

并确保pam_service_name选项的值如下所示


1
pam_service_name=vsftpd.mysql

  7.启动服务,并使服务能够开机自动启动

1
2
3
[root@bogon ~]# service vsftpd start
Starting vsftpd  for  vsftpd:                                [  OK  ]
[root@bogon ~]# chkconfig vsftpd on

    8.测试

wKioL1MwSDGht00eAACZFRIRuoM922.jpg

测试成功了!

9.创建一个文件试试,要修改配置文件是其有创建文件的权限

1
anon_mkdir_write_enable=YES

wKioL1MwSRLTs03FAADUfjcrYH4463.jpg   10.配置虚拟用户具有不同的访问权限

 配置vsftpd为虚拟用户使用配置文件目录

 编辑vstpd的主配置文件,添加如下行  

1
user_config_dir=/etc/vsftpd/vuser_dir

创建所需要目录,为虚拟用户提供配置文件    

1
2
3
[root@bogon ftproot]# mkdir /etc/vsftpd/vuser_dir
[root@bogon ftproot]# cd /etc/vsftpd/vuser_dir
[root@bogon vuser_dir]# touch lili tom

配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。  

1
anon_upload_enable=YES

大功告成,本人水平有限,如有错误,请各位大神批评指正!!!


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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL
|
2月前
|
存储 SQL 关系型数据库
MySQL - 深入理解锁机制和实战场景
MySQL - 深入理解锁机制和实战场景
|
3月前
|
存储 算法 关系型数据库
MySQL - 锁机制初探
MySQL - 锁机制初探
54 0
|
3月前
|
存储 SQL 关系型数据库
高效访问数据的关键:解析MySQL主键自增长的运作机制!
高效访问数据的关键:解析MySQL主键自增长的运作机制!
|
3月前
|
SQL 关系型数据库 MySQL
|
2月前
|
存储 关系型数据库 MySQL
mysql的锁机制实现原理
mysql的锁机制实现原理
|
2月前
|
存储 SQL 关系型数据库
MySQL事务底层原理和MVCC机制
MySQL事务底层原理和MVCC机制
35 1
|
2月前
|
存储 缓存 关系型数据库
Mysql 专栏 - MVCC机制
Mysql 专栏 - MVCC机制
64 0
|
3月前
|
SQL 关系型数据库 MySQL
从 MySQL 的事务 到 锁机制 再到 MVCC
转眼又一年~~2023马上就要到尾声了,在最后的几天中,我想给大家分享一下 MySQL 的一些小知识。在MySQL InnoDB引擎层面,又有新的解决方案 (解决加锁后读写性能问题),叫做MVCC(Multi-Version Concurrency Control)多版本并发控制。在MVCC下,就可以做到读写不阻塞且避免了类似脏读这样的问题。那MVCC是怎么做的呢?MVCC通过生成数据快照 (Snapshot)并用这个快照来提供一定级别 (语句级或事务级)的一致性读取。
66 3
|
3月前
|
缓存 关系型数据库 MySQL
MySQL高效运行的秘密:BufferPool缓存机制深度剖析!
MySQL高效运行的秘密:BufferPool缓存机制深度剖析!
MySQL高效运行的秘密:BufferPool缓存机制深度剖析!

推荐镜像

更多