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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版 50资产 7天
简介:

一、简介

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,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 关系型数据库 MySQL
MySQL MVCC全面解读:掌握并发控制的核心机制
【10月更文挑战第15天】 在数据库管理系统中,MySQL的InnoDB存储引擎采用了一种称为MVCC(Multi-Version Concurrency Control,多版本并发控制)的技术来处理事务的并发访问。MVCC不仅提高了数据库的并发性能,还保证了事务的隔离性。本文将深入探讨MySQL中的MVCC机制,为你在面试中遇到的相关问题提供全面的解答。
886 2
|
缓存 关系型数据库 MySQL
MySQL并发支撑底层Buffer Pool机制详解
【10月更文挑战第18天】在数据库系统中,磁盘IO操作是性能瓶颈之一。为了提高数据访问速度,减少磁盘IO,MySQL引入了缓存机制。其中,Buffer Pool是InnoDB存储引擎中用于缓存磁盘上的数据页和索引页的内存区域。通过缓存频繁访问的数据和索引,Buffer Pool能够显著提高数据库的读写性能。
548 2
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
1770 4
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
705 1
|
监控 关系型数据库 MySQL
MySQL锁机制与解决死锁问题
MySQL锁机制与解决死锁问题
626 5
|
存储 关系型数据库 MySQL
深入解析MySQL数据存储机制:从表结构到物理存储
深入解析MySQL数据存储机制:从表结构到物理存储
1503 1
|
存储 SQL 关系型数据库
深入解析MySQL事务机制和锁机制
深入解析MySQL事务机制和锁机制
|
存储 SQL 关系型数据库
深入MySQL锁机制:原理、死锁解决及Java防范技巧
深入MySQL锁机制:原理、死锁解决及Java防范技巧
|
存储 SQL 关系型数据库
MySQL中的update操作与锁机制
本文探讨MySQL中`UPDATE`操作的自动加锁机制及其对数据一致性的保障作用。尤其在InnoDB存储引擎下,系统会在涉及索引的更新操作中加行锁或间隙锁,防止多事务并发修改同一条记录。通过福利码兑换系统的实例展示,当线程A开启事务更新库存时,线程B试图更新相同记录会被阻塞,直至线程A提交。此外,文章还介绍了乐观锁及版本号控制等策略进一步提升并发性能的方法。作者:小明爱吃火锅,来源:稀土掘金。
706 2
|
存储 SQL 关系型数据库
MySQL 的锁机制,那么多的锁,该怎么区分?
MySQL 的锁机制,那么多的锁,该怎么区分?
191 0

推荐镜像

更多