最近使用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程序又不能通过, 请教各位高手, 我该如何解决这个矛盾???
ubunt下配置vsftp用mysql虚拟用户,PAM_mysql认证通过,但无法通过PHP程序来改用户密码!求指点!
-
- 帖子: 9
- 注册时间: 2005-11-25 17:23
-
- 帖子: 9
- 注册时间: 2005-11-25 17:23
Re: ubunt下配置vsftp用mysql虚拟用户,PAM_mysql认证通过,但无法通过PHP程序来改用户密码!求指点!
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是如何验证的。
+----------------+
| 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程序来改用户密码!求指点!
我直接用的 crypt=2 PASSWORD()
crypt=1 貌似是 DES_ENCRYPT()
crypt=1 貌似是 DES_ENCRYPT()
-
- 帖子: 10
- 注册时间: 2007-10-12 19:55