vsftpd的基于pam_mysql的虚拟用户机制

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

vsftpd的基于pam_mysql的虚拟用户机制

虚拟用户:是ftp中常用的一种策略,因为ftp服务古老而且不安全,使用匿名用户不能有效的控制权限,而本地用户可以登录操作系统,极为不安全,所以引入了虚拟用户的概念,其只是将多个虚拟用户映射为一个本地用户,此用户可以设置不允许登录,从而加强了系统的安全性,本问主要介绍基于mysql虚拟用户

配置pam_mysql

1
2
3
4
5
6
下载地址:pam-mysql.sourceforge.net
# yum -y  groupinstall  "Development Tools" "Server Platform Development"
# yum -y install pam-devel openssl-devel mariadb-devel
# ./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
# make && make install
安装后模块路径: /usr/lib64/security/pam_mysql .so

mariadb配置 
创建所需数据库和表,插入所需用户,这里的密码使用password加密方式加密

1
2
3
4
5
6
7
8
9
10
11
12
13
MariaDB [(none)]> CREATE DATABASE ftpdb;
MariaDB [ftpdb]> CREATE TABLE  users  ( id  int AUTO_INCREMENT PRIMARY KEY,name char(30) NOT NULL,password char(48));
MariaDB [ftpdb]> INSERT INTO  users (name,password) VALUES ( 'tom' ,password( 'tom' ));               
MariaDB [ftpdb]> INSERT INTO  users (name,password) VALUES ( 'jerry' ,password( 'jerry' ));
MariaDB [ftpdb]> SELECT * FROM  users ;
+----+-------+-------------------------------------------+
id  | name  | password                                  |
+----+-------+-------------------------------------------+
|  1 | tom   | *71FF744436C7EA1B954F6276121DB5D2BF68FC07 |
|  2 | jerry | *09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0 |
+----+-------+-------------------------------------------+
MariaDB [(none)]> GRANT ALL ON ftpdb.* TO vsftpuser@ '172.18.%.%'  IDENTIFIED BY  'vsftpuser' ;
MariaDB [ftpdb]> FLUSH PRIVILEGES;


修改pam配置文件,添加配置

1
2
3
# vim /etc/pam.d/vsftpd.mysql
auth required  /usr/lib/security/pam_mysql .so user=vsftpuser  passwd =vsftpuser host=172.18.4.70 db=ftpdb table= users  usercolumn=name  passwdcolumn=password crypt=2
account required  /usr/lib/security/pam_mysql .so user=vsftpuser  passwd =vsftpuser host=172.18.4.70 db=ftpdb table= users  usercolumn=name passwdcolumn=password crypt=2

添加虚拟用户映射用户

1
2
3
4
# useradd -s /sbin/nologin -d /ftproot vuser
# chmod -w /ftproot
# mkdir /ftproot/{download,upload} # 建议创建目录在子目录中赋予权限
# chown vuser.vuser /ftproot/{download,upload}

注意:CentOS 7后对vsftpd的权限限制更为严格,所以用户家目录不应有写权限,如果需要设置写权限,需在目录下创建子目录即可。


修改其权限保证用户可进入读取

1
# chmod go+rx /ftproot/


修改配置文件:/etc/vsftpd/vsftpd.conf


必须选项

1
2
3
4
5
6
7
8
9
修改pam认证模块为vsftpd.mysql:
     pam_service_name=vsftpd.mysql
保证下面三项开启:
     anonymous_enable=YES
     local_enable=YES
     write_enable=YES
添加:
     guest_enable=YES
     guest_username=vuser

可选选项

1
2
3
4
5
chroot_local_user=YES   # 基于安全考虑建议开启
anon_upload_enable=YES  # 用户可上传文件
anon_mkdir_write_enable=YES  #用户科协
anon_other_write_enable=YES  #除了上传和写入的其他权限
# 因为虚拟用户基于匿名用户,所以权限控制可以基于匿名用户使用。

设置用户可上传并测试


wKioL1cczS3zCurTAACpFOishO4437.pngwKiom1cczGWwpQI4AAFKicanhRc409.gif

单独用户权限控制

编辑配置文件:/etc/vsftpd/vsftpd.conf 

添加对应目录:user_config_dir=/etc/vsftpd/vuser.conf.d 

创建对应目录:mkdir /etc/vsftpd/vuser.conf.d 

创建对应用户名的文件:touch tom jerry 

修改文件,添加权限即可

实例:控制tom用户可上传,jerry用户不可上传 
1、创建对应目录及修改配置文件

1
2
mkdir  /etc/vsftpd/vuser .conf.d
echo  "user_config_dir=/etc/vsftpd/vuser.conf.d"  >>  /etc/vsftpd/vsftpd .conf

2、设置文件系统及用户权限

1
2
3
echo  "anon_upload_enable=YES"  >> /etc/vsftpd/vuser .conf.d /tom
echo  "anon_upload_enable=NO"  >> /etc/vsftpd/vuser .conf.d /jerry
chown  -R vuser.vuser  /ftproot/upload

3、重启服务并测试

1
systemctl restart vsftpd.service


wKiom1cczg_R859TABh9Iu09mOE605.gif










本文转自 赵大鑫 51CTO博客,原文链接:http://blog.51cto.com/xinzong/1767316,如需转载请自行联系原作者
目录
相关文章
|
18天前
|
存储 关系型数据库 MySQL
MySQL MVCC全面解读:掌握并发控制的核心机制
【10月更文挑战第15天】 在数据库管理系统中,MySQL的InnoDB存储引擎采用了一种称为MVCC(Multi-Version Concurrency Control,多版本并发控制)的技术来处理事务的并发访问。MVCC不仅提高了数据库的并发性能,还保证了事务的隔离性。本文将深入探讨MySQL中的MVCC机制,为你在面试中遇到的相关问题提供全面的解答。
54 2
|
27天前
|
缓存 关系型数据库 MySQL
MySQL并发支撑底层Buffer Pool机制详解
【10月更文挑战第18天】在数据库系统中,磁盘IO操作是性能瓶颈之一。为了提高数据访问速度,减少磁盘IO,MySQL引入了缓存机制。其中,Buffer Pool是InnoDB存储引擎中用于缓存磁盘上的数据页和索引页的内存区域。通过缓存频繁访问的数据和索引,Buffer Pool能够显著提高数据库的读写性能。
75 2
|
2月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
611 4
|
24天前
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
41 1
|
5月前
|
存储 SQL 关系型数据库
MYSQL--锁机制*
MYSQL--锁机制*
|
2月前
|
监控 关系型数据库 MySQL
MySQL锁机制与解决死锁问题
MySQL锁机制与解决死锁问题
264 5
|
2月前
|
存储 关系型数据库 MySQL
深入解析MySQL数据存储机制:从表结构到物理存储
深入解析MySQL数据存储机制:从表结构到物理存储
140 1
|
2月前
|
存储 SQL 关系型数据库
MySQL 的锁机制,那么多的锁,该怎么区分?
MySQL 的锁机制,那么多的锁,该怎么区分?
38 0
|
3月前
|
存储 SQL 关系型数据库
深入解析MySQL事务机制和锁机制
深入解析MySQL事务机制和锁机制
|
3月前
|
存储 SQL 关系型数据库
深入MySQL锁机制:原理、死锁解决及Java防范技巧
深入MySQL锁机制:原理、死锁解决及Java防范技巧