允许在Samba4中使用LDAP自定义密码更改

我正在尝试创build一个web应用程序,以允许用户使用LDAP(s)在Samba4(也许也在AD)中更改自己的密码。 但是当我尝试使用此代码修改用户密码时:

dn: ........ changetype: modify replace: unicodePwd unicodePwd: "Temporal2" 

我得到这个错误:

 0x32 (Insufficient access; error in module acl: insufficient access rights during LDB_MODIFY (50)) 

如果我更改了代码,请删除旧密码,然后添加新密码:

 dn: ........ changetype: modify delete: unicodePwd unicodePwd: "Temporal1" - add: unicodePwd unicodePwd: "Temporal2" 

然后我得到这个错误:

 #!ERROR [LDAP: error code 53 - 00002035: setup_io: it's not allowed to set the NT hash password directly'] 

ldapmodify使用自我用户凭据执行,我不想使用pipe理员帐户。 这可能吗? 我必须在Samba4中更改一些设置吗?

“unicodePwd”字段或属性只能包含unicodeforms下的密码并使用base64编码:

设置密码:MyNewPassw0rd编码这个密码将其推入“unicodePwd”属性是这样做的:

  echo -n'“MyNewPassw0rd”'|  iconv -f utf8 -t utf16le |  base64 -w 0 

注意围绕双引号的简单引号:简单引号在这里用于双引号不被shell解释。 进入unicodePwd的string必须包含密码和双引号。

这个命令给我们:

  IgBNAHkATgBlAHcAUABhAHMAcwB3ADAAcgBkACIA 

解码该值:

 回声IgBNAHkATgBlAHcAUABhAHMAcwB3ADAAcgBkACIA |  base64 -d 

这个命令给我们:

  “MyNewPassw0rd” 

适用于你的例子:

 回声“”Temporal2“”|  iconv -f utf8 -t utf16le |  base64 -w 0
 IgBUAGUAbQBwAG8AcgBhAGwAMgAiAAoA 

所以新的LDIF内容是:

  dn:........
 changetype:修改
删除:unicodePwd
 - 
添加:unicodePwd
 unicodePwd :: IgBUAGUAbQBwAG8AcgBhAGwAMgAiAAoA 

注意unicodePwd后的双重双点:这意味着数据是base64编码的。

通过ldapmodify使用LDIF现在可以在这里修改任何用户密码,当ldapmodify运行时,使用我们委派的修改所有用户的权限的特定用户的身份。

只要我尝试使用“replace:unicodePwd”,如下面的LDIF,我收到一个关于权限不足的错误。

  dn:........
 changetype:修改
replace:unicodePwd
 unicodePwd :: IgBUAGUAbQBwAG8AcgBhAGwAMgAiAAoA 

使用两个操作(“删除:unicodePwd”,然后“添加:unicodePwd”)不足的权利问题消失。 谢谢 : )

干杯,

马蒂亚斯