ubunt下配置vsftp用mysql虚拟用户,PAM_mysql认证通过,但无法通过PHP程序来改用户密码!求指点!

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
beer
帖子: 9
注册时间: 2005-11-25 17:23

ubunt下配置vsftp用mysql虚拟用户,PAM_mysql认证通过,但无法通过PHP程序来改用户密码!求指点!

#1

帖子 beer » 2009-04-28 11:57

最近使用ubuntu9.04 server版做了个VSFTP服务器, 使用mysql来保存虚拟用户数据。密码在mysql中使用encrypt函数加密。 VSFTP的密码验证使用pam_mysql来进行, 配置文件中,设定crypt=1 VSFTP工作正常。


现在写了一个php程序,用来让FTP用户自已登陆上来修改自已的密码, 发现, 使用无法用select语语来取得密码。

状态如下,
我的用户数据是用如下insert语句添加:
INSERT INTO user (name, passwd) VALUES ('xxxx', ENCRYPT('xxxx'));
在php程序中,我用如下select语句:
select * from user where name='".$UserName."' and passwd=ENCRYPT('".$UserPass."');
用户和密码填对了也会通不过,通过在sql里直接执行
select * from user where name='xxxx' and passwd=ENCRYPT('xxxx');
报:MySQL 返回的查询结果为空(即零行)。

经过查资料,使用encrypt加密时, 一般会有一个salt 标准的insert语句应该是
INSERT INTO user (name, passwd) VALUES ('xxxx', ENCRYPT('xxxx', 'ab')); 其中后面的ab就是salt
然后
SELECT * FROM user WHERE name='xxxx' AND passwd=ENCRYPT('xxxx', 'ab');
经测式, 如果用在两个语句, 我的php程序能正常, 但ftp的认证就不能通过了。

从上面可以看出, pam_sql在使用crypt=1时,只能验证随机salt的密码, 如果指定salt,就会验证出错。 可如果使用随机salt,php程序又不能通过, 请教各位高手, 我该如何解决这个矛盾???
beer
帖子: 9
注册时间: 2005-11-25 17:23

Re: ubunt下配置vsftp用mysql虚拟用户,PAM_mysql认证通过,但无法通过PHP程序来改用户密码!求指点!

#2

帖子 beer » 2009-04-28 12:39

mysql> select encrypt('guo');
+----------------+
| encrypt('guo') |
+----------------+
| hP1BWZ3YJ4UFA |
+----------------+
1 row in set (0.00 sec)

mysql> select encrypt('guo');
+----------------+
| encrypt('guo') |
+----------------+
| mPCVIhhUICE4w |
+----------------+
1 row in set (0.00 sec)

mysql> select encrypt('guo');
+----------------+
| encrypt('guo') |
+----------------+
| xRKE10.nQysz. |
+----------------+
1 row in set (0.00 sec)


看, 如果不指定salt的话, 每次得到的密文都是不一样的, 真搞不懂pam_mysql是如何验证的。
头像
larryli
帖子: 66
注册时间: 2006-03-10 11:10
来自: 广东 深圳
联系:

Re: ubunt下配置vsftp用mysql虚拟用户,PAM_mysql认证通过,但无法通过PHP程序来改用户密码!求指点!

#3

帖子 larryli » 2009-04-28 23:59

我直接用的 crypt=2 PASSWORD()

crypt=1 貌似是 DES_ENCRYPT()
giantlab
帖子: 10
注册时间: 2007-10-12 19:55

Re: ubunt下配置vsftp用mysql虚拟用户,PAM_mysql认证通过,但无法通过PHP程序来改用户密码!求指点!

#4

帖子 giantlab » 2009-07-17 14:46

能详细说说具体的过程吗?
回复