vsftpd基于pam_mysql的虚拟用户机制
何为vsftpd?
vsftpd:very secure ftp daemon
程序:/usr/sbin/vsftpd
配置文件:/etc/vsftpd/vsftpd.conf
其用户分为:匿名用户(映射至某一固定的系统用户),本地用户(root及系统用户),虚拟用户(存储在文件或其他服务器端数据库中的用户);
以下将以CentOS 7 讲解具体配置过程:
[此机制需要pam_mysql.so]
主要分为以下几个步骤:
1.运行环境准备和配置
2.mysql数据库配置
3.pam配置
4.细节优化
1.运行环境准备和配置
由于CentOS 7yum源中没有pam-mysql,故需自己编译安装;
首先安装开发环境:
# yum -y groupinstall "Development Tools" "Server Platform Development"
另外还需要的程序包有:openssl-devel pam-devel mariadb-devel
下载好pam-mysql后解压缩,开始编译:
# ./configure --with-openssl=/usr --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
# make && make install
安装完成后,在/lib64/security目录下可以看到:
2.数据库配置
安装mariadb-server
创建一个测试库/表,填入数据,如图所示:

(此处用的数据库是test,表是vsftpd)
并授权一个用户vsftpd,使其有查权限:
mysql> GRANT select ON test.* TO vsftpd@localhost IDENTIFIED BY '123456';
mysql> GRANT select ON test.* TO vsftpd@127.0.0.1 IDENTIFIED BY '123456';
自行测试一下此用户,没问题进入下一步。
3.pam配置
# cd /etc/pam.d
# vim vsftpd.mysql
写入
auth required pam_mysql.so user=vsftpd passwd= host=localhost db=test table=vsftpd usercolumn=name passwdcolumn=passwd crypt=
account required pam_mysql.so user=vsftpd passwd= host=localhost db=test table=vsftpd usercolumn=name passwdcolumn=passwd crypt=
其中:
pam_mysql.so //相对路径,如果此模块置于/lib64/security目录下,则可直接写文件名,当然,写全路径也没问题;
user=vsftpd
passwd=123456 //授权登陆mysql时的用户
host=localhost //本地主机
db=test //存放虚拟用户的数据库名
table=vstfpd
usercolumn=name
passwdcolumn=passwd
crypt=2 //密码加密方式代号
//0:不加密
//1:使用crypt(3)加密
//2:mysql函数加密password();
//3:md5加密
//4:SHA1加密
4.细节优化
创建系统用户作为映射:
# useradd -s /sbin/login -d /ftproot vuser
修改其权限,使其他用户有读、执行权限:
# chmod go+rx /ftproot
编辑配置文件/etc/vsftpd/vsftpd.conf:

添加: guest_enable=YES
guest_username=vuser
修改此项为:pam_service_name=vsftpd.mysql
确保这些为YES:
anonymous_enable=YES
local_enable=YES
write_enable=YES
保存退出,启动服务:
# systemctl start vsftpd.service
效果如下:

vsftpd基于pam_mysql的虚拟用户机制的更多相关文章
- Linux上FTP部署:基于mariadb管理虚拟用户
FTP原理 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序.图1 FTP 的基本模型 FTP 是基于客户---服务器(C/ ...
- vsftpd服务安装与虚拟用户配置
vsftpd的全名是“Very secure FTP Daemon” 一.安装vsftpd安装db4-util用于生成认证文件 yum -y install db4-utils 安装vsftpd yu ...
- 搭建vsftpd文件服务器并创建虚拟用户
一.安装 1. 查看是否安装vsftpd rpm -qa | grep vsftpd 2. 安装 yum -y install vsftpd ...
- 构建基于虚拟用户的vsftpd服务器
安装: [root@server ~]# yum install -y vsftpd [root@server ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd / ...
- Vsftpd: 基于PAM认证的虚拟用户和匿名用户
目录 环境说明效果说明及截图①. 安装组件②. 系统账户建立③. 编辑vsftpd的配置文件④. 生成虚拟用户的数据库文件⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件⑥. ...
- CentOS平台部署vsftp(基于虚拟用户)
1. 安装FTP 1 2 [root@task ~]# yum install vsftpd –y [root@task ~]# chkconfig vsftpd on # 配置开机 ...
- CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户
CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户 一.安装ftp服务 1.检查是否已经安装 # rpm -qa | grep ftp ftp-0.17-54.el6.x86_64 vs ...
- vsftpd 创建虚拟用户
1.添加一个宿主用户:useradd vsftpd -s /sbin/nologin2.安装db4-utils,通过本底数据文件实现虚拟用户访问yum install db4-utils3.创建ftp ...
- CentOS6.3下搭建vsftpd(采用虚拟用户设置)
CentOS6.3如果在安装的时候所有安装选项都打勾的话就含有单间vsftpd必备的软件:vsftpd.pam*.db4* 检查是否安装: [root@centos6 ~]# rpm -qa | gr ...
随机推荐
- python 的内嵌time模板翻译及说明[转]
一.简介 time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式: 第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的 ...
- QTreeWidget创建
QTreeWidget.顾名思义,这个类用来展示树型结构.同前面说的QListWidget类似,这个类需要同另外一个辅助类QTreeWidgetItem一同使用.不过,既然是提供方面的封装类,即便是看 ...
- mysql事务,SET AUTOCOMMIT,START TRANSACTION
http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...
- 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样
在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": { "publish- ...
- 微信公众号开发中遇到的几个bug
一.测试自定义菜单接口时中文菜单名显示为null 设置的中文菜单名,中文未经过编码和解码过程,设置的中文菜单名在最后的微信服务器返回的json格式数据中显示为null. 解决办法:将中文先用uneco ...
- MemcacheQ 安装与使用
MemcacheQ 是一个基于 MemcacheDB 的消息队列服务器.官网地址:http://memcachedb.org/memcacheq/ 特点: 1.简单易用. 2.处理速度快. 3.可创建 ...
- oracle控制文件丢失恢复
在学习群里有个同学误删除了控制文件,于是我也把自己数据库的控制文件删除了,看看能不能进行恢复,以下是整个实验的过程~~在做之前,先看看控制文件的备份方式:1.生成可以重建控制文件的脚本.2.备份二进制 ...
- Eclipse集成javap查看字节码
分析java语言特性的一个好帮手是使用javap工具查看java编译后的字节码,楼主今天在学习java泛型中的桥方法时遇到一些不解,想到javap这个好工具可以帮助解答一些疑惑,索性就捣鼓如何在ecl ...
- “NOT_IN”与“NULL”的邂逅
今天处理了一个因“NOT IN”与“NULL”邂逅导致的问题,值得思考和总结,记录在此,供参考.(感谢John抛出的问题) 我们以实验的形式先再现一下这个问题,然后对其分析,最后给出几种解决方案. 1 ...
- Json操作(DynamicJson)
Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了 ...