如何解决MySQL PAM模块与新版MySQL不兼容问题?
- By : Will
- Category : FTP & SFTP & FTPS
- Tags: compatible, MySQL, not, pam, pam_mysql, pam_mysql.so, 不兼容
FTP & SFTP & FTPS
1 前言
笔者生产环境有部署VSFTP服务(基于MySQL验证),详细的搭建步骤如下,
最近,用户反馈VSFTP无法使用,笔者通过如下命令监视服务器日志,
tail -f /var/log/secure
然后发现如下错误提示,
Jun 16 15:52:08 vsftpser vsftpd: PAM unable to dlopen(/usr/lib64/security/pam_mysql.so): /usr/lib64/mysql/libmysqlclient.so.21: symbol X509_check_ip_asc, version libcrypto.so.10 not defined in file libcrypto.so.10 with link time reference Jun 16 15:52:08 vsftpser vsftpd: PAM adding faulty module: /usr/lib64/security/pam_mysql.so Jun 16 15:52:08 vsftpser vsftpd: pam_unix(vsftpd:auth): check pass; user unknown Jun 16 15:52:08 vsftpser vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=asdweb rhost=client.cmdschool.org Jun 16 15:52:08 vsftpser vsftpd: PAM unable to dlopen(/usr/lib64/security/pam_mysql.so): /usr/lib64/mysql/libmysqlclient.so.21: symbol X509_check_ip_asc, version libcrypto.so.10 not defined in file
基于以上日志分析,笔者回忆上周有更新过MySQL的客户端到最新版本,估计是升级之后的库文件与当前的MySQL PAM模块不兼容所致,于是一番折腾后想到另外安装旧版本的MySQL库文件的方案。
2 最佳实践
2.1 部署旧版本的MySQL
2.1.1 下载旧版本的MySQL
cd ~ wget https://downloads.mariadb.com/MariaDB/mariadb-5.5.55/bintar-linux-x86_64/mariadb-5.5.55-linux-x86_64.tar.gz
其他版本请从以下链接下载,
https://downloads.mariadb.com/MariaDB/
2.1.2 解压旧版本的MySQL
cd ~ tar -xf mariadb-5.5.55-linux-x86_64.tar.gz
2.1.3 部署旧版本的MySQL
cd ~ mv mariadb-5.5.55-linux-x86_64 /usr/local/ cd /usr/local/ ln -s mariadb-5.5.55-linux-x86_64 mysql
2.2 重新编译并加载MySQL PAM模块
2.2.1 预编译软件包
cd ~/pam_mysql-0.7RC1 make clean ./configure --with-mysql=/usr/local/mysql/bin/mysql_config --with-pam-mods-dir=/usr/local/mysql/lib/plugin
2.2.2 编译软件包
cd ~/pam_mysql-0.7RC1 make
2.2.3 安装软件包
cd ~/pam_mysql-0.7RC1 make install
2.2.4 注册库文件
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mariadb-10.2.16.conf
配置完成后,使用如下命令确认是否加载,
ldconfig -v
2.2.5 重新定位模块位置
find /usr/ -name \*pam_mysql.so\*
可见如下显示,
/usr/lib64/security/pam_mysql.so /usr/local/mariadb-5.5.55-linux-x86_64/lib/plugin/pam_mysql.so
注:很明显第二行是最新编译的(位于刚安装的低版本MySQL目录)
2.2.6 更新验证文件配置
vim /etc/pam.d/vsftpd
配置修改如下,
auth sufficient /usr/local/mariadb-5.5.55-linux-x86_64/lib/plugin/pam_mysql.so user=vsftpd passwd=abc123 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=2 #vsftp默认的其余认证 auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth #授权和认证也是一样的 account sufficient /usr/local/mariadb-5.5.55-linux-x86_64/lib/plugin/pam_mysql.so user=vsftpd passwd=abc123 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=2 account include password-auth session required pam_loginuid.so session include password-auth
没有评论