前面就懒得重复了。文件认证方法和数据库认证方法唯一的区别就在于pam文件的配置和相关的数据库设置。
前面的主配置文件部分和虚拟用户的配置文件部分请参看http://blog.youkuaiyun.com/xdnabl/article/details/54755139
那么,一切从/etc/pam.d/vsftpd开始
因为/etc/pam.d/vsfpd里要添加mysql的pam认证文件,SO,必须先安装pam_mysql
pam_mysql在https://sourceforge.net/projects/pam-mysql/files/pam-mysql/ 下载,我之前在做openvpn时用的是0.62,现在依旧沿用。
#tar zxvf pam_mysql-0.6.2.tar.gz
#cd pam_mysql-0.6.2
#./configure
#make
#make install
安装完成之后,会生成文件/usr/lib/security/pam_mysql.so,/usr/lib/security/pam_mysql.la
cp /usr/lib/security/pam_mysql.* /lib/security *//把它们拷贝到/lib/security目录下
关于版本选用要说明一下,mysql6.0以上的可以用pam_mysql-0.7以上版本,mysql5.X的还是用0.62的保险一点,否则可能会出现登录验证失败的情况。
OK,现在开始编辑/etc/pam.d/vsfpd
把之前的全注释掉,添加下列配置
auth required pam_mysql.so user=vftpuser passwd=123456 host=localhost db=ftp table=users usercolumn=name passwdcolumn=passwd crypt=0
account required pam_mysql.so user=vftpuser passwd=123456 host=localhost db=ftp table=users usercolumn=name passwdcolumn=passwd crypt=0
之后进行mysql设置,添加数据库和相关的查询帐号
#mysql
mysql> create database ftp;
mysql> use ftp;
mysql> create table users( name char(6),passwd char(6) );
mysql> insert into users values('aa','123456');
mysql> GRANT ALL ON ftp.* TO vftpuser@localhost IDENTIFIED BY '123456';
mysql> flush privileges;
至此以mysql验证方法取代用户数据库文件验证方法完成。