pam_mysql 在 freebsd6.2 上的一些常见错误的解决办法。
小杨哥 2007-08-01 11:17:44 研究了几天,终于把pam_mysql.so 在freebsd6.2 上调试通了,我把我遇到得一些问题和解决得方法经过和大家分享一下,
如果有人遇到相似的问题,可以借鉴一下。
软件:
pam_mysql-0.7RC1.tar.gz
mysql5.0.45.tar.gz
vsftpd2.0.5.tar.gz
问题一:
编译出现问题
编译的时候出现 md5 错误
解决办法:
./configure 的时候加上--with-openssl
下面是我的安装方法:
./configure --prefix=/usr/local/pam_mysql --with-mysql=/usr/local/mysql --with-pam-mods-dir=/usr/local/pam_mysql --with-pam=/usr --with-openssl
make
make install
问题二:
配置/etc/pam.d/ftp
一定都是required,如果用optional 的话 pam_mysql.so不起作用。
下面是我的配置
追加设置 verbose=1 可以看到日志
auth required pam_mysql.so user=ftpguest passwd=123 host=localhost db=ftp table=users usercolumn=name passwdcolumn=passwd crypt=2 verbose=1
account required pam_mysql.so user=ftpguest passwd=123 host=localhost db=ftp table=users usercolumn=name passwdcolumn=passwd crypt=2 verbose=1
问题三:
/var/log/messages 日志文件显示vsftpd no pam_mysql.so found
这表明找不到pam_mysql.so,可我已经把pam_mysql.so复制到/usr/lib目录下里面了,
我到/usr/lib再查找,依然在,有人说加上/usr/lib或者什么什么路径,可那根本就不是
解决问题的方法,我实验了N次加路径,都不对,这是为什么呢?我也纳闷,
解决步骤:
1. /usr/lib下有个pam_unix.so的文件,我把这个备份。
我把/usr/lib下的pam_mysql改名为pam_unix.so。
测试。。。。。。
咦。。。
/var/log/messages 日志文件什么都不显示,“vsftpd no pam_mysql.so found” 信息再不出现了。
但还是不能登录,这个是为什么呢?别着急。
为什么没有错误信息了呢?
恩,一定是系统不认识它。我后来又改了目录内其他.so的名字,但有些能找到,有些找不到,
我试着用查找看是不是freebsd的共享库问题,查找怎么添加共享库。但似乎没有什么作用。
这个不是解决办法,我还是老老实实的研究pam_mysql,我再网上又查了一些文章,有人说freebsd5就有这个BUG
但现在都6.2怎么会还有这个BUG,再说我在去年的时候我配了一个freebsd5.8+pam_mysql6.2+mysql4.0.26成功了。
并且很顺利.能不能是版本问题呢?
yes!!!
2. 我下载了pam_mysql-0.7pre2.tar.gz pam_mysql-0.7pre1.tar.gz pam_mysql-6.2.tar.gz
这三个我都试了,发现freebsd只能认识pam_mysql-6.2的 .so ,奇怪,freebsd6.2还这么跟不上形式,
那就用pam_mysql-6.2 忍了。但mysql 怎么办?我记的pam_mysql5 只支持到mysql2.0.46,
pam_mysql6.2 2005年的东西,能支持mysql5吗?
安装,测试。。。。。。。。。。。。
问题三:
果然,不出小杨哥所料,不能通过,
怎么办?怎么办?
/var/log/auth.log 显示链接成功,一切都正常,那vdftp为什么不能登录呢?一直都是500错误。
分析,看样子一定是密码上面出了问题,快去官网查资料。果然。。。
详细:http://dev.mysql.com/doc/refman/5.0/en/old-client.html
从mysql4.1开始密码验证就有变化了。
解决步骤:
1。先更改权限
mysql> SET PASSWORD FOR
-> 'ftpguest'@'localhost' = OLD_PASSWORD('123');
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('123')
-> WHERE Host = 'localhost' AND User = 'ftpguest';
mysql> FLUSH PRIVILEGES;
启动mysql ,注意,看好要加上这个--old-passwords
mysqld_safe --old-passwords &
看到了没有,恩,快快进入的users数据库,把以前添加的用户用户名,密码都删掉,
再从新添加新用户和密码。
测试。。。。。。。
My Sky ,成功了。。。。。。。。。。。。。
注意:vsftpd 的 builddefs.h的里面有一行#define VSF_BUILD_PAM 一定要有这行,
如果是#undef VSF_BUILD_PAM ,那么更改后再安装。