我有一个使用LDAP作为其后端的samba服务器。 只要我手动创build用户,PDC按预期工作。 这意味着如果我使用以下命令创build新用户,则可以使用用户bob在Windows计算机上login,而不会要求更改密码:
sudo smbldap-useradd -a -P bob
由于我没有访问用户的明文密码,我使用ldif文件来修改用户的sambaNTPassword属性。 这是我能想出的唯一方法,因为我只提供密码的NTLM哈希值。 然而,密码然后成功更新,我可以loginWindows机器。
这里是问题:用户和他们的哈希摘要是大批提供给我的。 他们首先写入postgresql数据库。 然后,我必须运行一个脚本,从数据库读取用户列表(新用户)以及NTLM摘要。 由于这个过程应该是自动的,我必须为此目的开发一个bash脚本。 这是我的脚本运行上述命令的一部分:
#!/bin/bash /usr/bin/expect <<EOD spawn smbldap-useradd -a -P $username expect "New password:" { send -- "$tot\n" } expect "Retype new password:" { send -- "$toto\n" } EOD
用户成功创build,我可以用它loginWindows机器。 问题是我收到以下消息:
您的密码今天到期。 你想改变它吗?
有谁从哪里来的差异? 对我来说这两种方法看起来都是一样
我的服务器:Ubuntu 12.04 LTS Samba:3.6.3
以下是用户bob的LDAP条目,当我手动创build它(手动input密码),然后更新其sambaNTPasssword属性:
$ ldapsearch -x uid=bob # extended LDIF # # LDAPv3 # base <dc=mydomain,dc=com> (default) with scope subtree # filter: uid=bob # requesting: ALL # # bob, Users, mydomain.com dn: uid=bob,ou=Users,dc=mydomain,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson objectClass: sambaSamAccount cn: bob sn: bob uid: bob uidNumber: 1166 gidNumber: 513 homeDirectory: /home/bob loginShell: /bin/bash gecos: System User givenName: bob sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 displayName: bob sambaSID: S-1-5-21-343724861-3572058179-3643679278-3332 sambaLMPassword: B267DF22CB945E3EAAD3B435B51404EE sambaAcctFlags: [U] sambaPwdLastSet: 1402503403 sambaPwdMustChange: 1488903403 shadowLastChange: 16232 shadowMax: 1000 sambaNTPassword: FCFC9A2A1E3F4F9F5E1EBA9A4592507E
而下面是用户bob的LDAP条目,当我使用脚本创build它时(我在这种情况下更新了sambaNTPassword):
# bob, Users, mydomain.com dn: uid=bob,ou=Users,dc=mydomain,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson objectClass: sambaSamAccount cn: bob sn: bob uid: bob uidNumber: 1168 gidNumber: 513 homeDirectory: /home/bob loginShell: /bin/bash gecos: System User givenName: bob sambaPwdLastSet: 0 sambaLogonTime: 0 sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 2147483647 displayName: bob sambaAcctFlags: [UX] sambaSID: S-1-5-21-343724861-3572058179-3643679278-3336 sambaNTPassword: FCFC9A2A1E3F4F9F5E1EBA9A4592507E
检查smbldap-useradd的手册页,这听起来像你需要在脚本中设置-B 0 。 据此,将清除帐户上的“用户必须更改密码”标志。
您可能需要查看您的smb.conf,以确保您没有任何意外的smbldap-useradd设置。