免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3326 | 回复: 6
打印 上一主题 下一主题

[samba] openldap+svn+qmail+samba里的密码问题?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-23 11:15 |只看该作者 |倒序浏览
公司想建立一个统一的认证服务项目:openldap+svn+qmail+samba
都已经顺利的建立完毕:
svn+apache+openldap(走的apache认证,需要mod_auth_ldap.o模块);
qmail+openldap(vpopmail+courierimap采用的是openldap);
samba+openldap(samba-tools工具);
现在的想法是,用户通过一个公共的用户名来进行所有的认证,最重要的是密码管理;
samba用户想自己能更改密码(通过qmail的WEB进行更改);
qmail里的openldap 树结构是:
qmailUser.schema->userpassword(好象是MD5加密的)
samba.schema-> smbNTPASSWD(perl的 HASH加密)
就是想有没有一个工具,或者方法能够通过更改qmail的密码来达到更改samba密码的目的。谢谢大家!
谢谢!~~~

论坛徽章:
0
2 [报告]
发表于 2006-03-23 11:28 |只看该作者
ZML猜想:做个脚本,每天定时同步samba密码文件,使得和qmail的一样

论坛徽章:
0
3 [报告]
发表于 2006-03-23 11:40 |只看该作者
这样想过,他们的加密方式不同,不知道如何转换。

论坛徽章:
0
4 [报告]
发表于 2006-03-23 12:35 |只看该作者
替兄弟顶下

论坛徽章:
0
5 [报告]
发表于 2006-03-23 13:02 |只看该作者
我的做法,你可以参考一下:
让用户通过一个统一的界面去更改密码(我用的是perl),或者修改Webmail的代码(qmail没用过)。
在用户修改密码的时候,得到用户的明文密码。
如果LDAP使用DES加密,可以直接用perl的crypt生成LDAP密码。
或者调用OpenLDAP的程序slappasswd生成对应的密文,Samba的密码通过调用Samba的程序mkntpasswd(具体名字忘了)生成LM Password和NT Password。
然后你的程序自己去修改LDAP entry。

论坛徽章:
0
6 [报告]
发表于 2006-03-24 08:03 |只看该作者
修改samba的用户密码验证程序,使它指向ldap的用户密码。

论坛徽章:
0
7 [报告]
发表于 2006-03-24 21:38 |只看该作者
谢谢楼上兄弟的回答,问题已经解决:
方法是:我用的是squirrelmail,他里面有一段很精细的代码就是修改smb的密码的。
代码如下:
// and maybe you are using samba/ldap authentication, in this case you
        // you will need mkntpwd in order to generate the nt/lm password.
        // http://www.samba.org/cgi-bin/cvs ... ldap-tools/mkntpwd/
        $change_ldapsmb=0;
        $mkntpwd="/usr/bin/mkntpwd";
如果把$change_ldapsmb=0;这个变量至为1,就OK了。
if ($change_ldapsmb) {
                        $exe = "$mkntpwd " . escapeshellarg($cp_newpass) . " 2>&1" ;
                        if ($debug) array_push($Messages,$exe);
                        $ntString = exec ($exe, $retarray, $retval);
                        if ($debug) $Messages = array_merge($Messages,$retarray);
                        if ( $retval == "0" && preg_match("/^[0-9A-F]+:[0-9A-F]+$/",$ntString )) {
                                list($lmPassword, $ntPassword) = explode (":", $ntString);
                                $newinfo[$ldapsmb_ntpassword] = $ntPassword;
                                $newinfo[$ldapsmb_lmpassword] = $lmPassword;
                        } else {  //smbpasswd change failed so we must re sync the ldap password back to its original
                                array_push($Messages, _("SMB Password change was not successful, so LDAP not changed!"));
                                return $Messages;
                        }
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP