1 前言
需要解决由FTP上传的文件自动以某个应用程序的身份保存的唯一方式是使用VSFTP的虚拟用户,由于笔者对MySQL比较熟悉,所以利用PAM_MySQL模块将VSFTP与MySQL集成。另外,本文不但整理了CentOS6与CentOS7的安装配置方法,而且同时涵盖了RPM包与编译两种安装方法。
2 理论基础
2.1 PAM模块的介绍
所谓虚拟用户,即通过pam模块将vsftp与数据库集成,将vsftp的传统身份验证方式变成通过数据库中保存的帐号密码验证,用户的身份并非系统用户,而需由pam模块虚拟出来的用户,故称虚拟用户。
2.2 PAM模块的加载vim /etc/pam.d/vsftpd
注:通过编辑pam.d目录下的规则实现加载
2.3 PAM模块的选项
配置例子:auth optional pam_mysql.so user=root passwd=password
account required pam_mysql.so user=root passwd=password
其他选项-- verbose 设置为1则显示详细的调试信息,默认0
-- debug 开启调试模式
-- user mysql数据库认证的用户名
-- passwd mysql数据库认证的密码
-- host mysql数据库的主机名称或IP
-- db 包含验证信息的数据库名称
-- table 包含验证信息的数据库表名称
-- update_table 包含密码更高的数据库表名称,不配置默认赋予table的值
-- usercolumn 包含验证的用户名列
-- passwdcolumn 包含验证的密码列
-- statcolumn 标记用户状态的列
--- 0表示用户已经过期;
--- 1表示要求用户更改密码
-- crypt 密码加密方式,
--- 0无加密,默认为此值;
--- 1使用crypt(3)函数加密;
--- 2使用MySQL的PASSWORD函数加密;
--- 3使用普通十六进制md5加密;
--- 4使用普通十六机制SHA1加密;
-- md5 使用md5进行crypt(3)哈希,当crypt设置为“Y”才有效,默认false
-- use_323_passwd 使用MySQL版本3风格的加密功能(兼容迁移),默认false
-- where 查询的附加条件如 [where=Host.name="web" AND User.active=1]
-- sqllog 设置为“true”或“yes”,则启用SQL日志记录,默认false
-- logtable 存储日志的表名称
-- logmsgcoumn 该列存储日志的消息
-- logusercolumn 该列存储产生日志的用户名
-- logpidcolumn 该列存储产生日志的进程PID
注:以上是本人对原文的理解翻译(详细请参阅源码包的README文件),如果有误欢迎指正。
3 实践部分
3.1 环境配置
3.1.1 安装配置工具yum install -y wget vim
3.1.2 安装编译工具包(可选,编译安装才需要)yum install -y gcc gcc-c++ make expat-devel
3.1.3 MySQL安装
1)配置