我目前尝试通过 Linux 上的 LDAP 更改我们的 Active Directory Envoirenment 中的密码,因为有问题的用户无权访问 Windows 机器,我们希望保持这种状态。为了更改密码,我目前一直在弄清楚如何使用 ldapmodify 来做到这一点。在不同的网站/论坛/新闻组上大量阅读之后,我比以前更加困惑
但是:我尝试执行以下命令:
ldapmodify -f ldif.example -H ldaps://lab01-dc01.example.com -D 'CN=test,CN=users,DC=lab01,DC=example,DC=com' -x -W
ldif.example 的内容:
dn: CN=test,CN=Users,DC=lab01,DC=example,DC=com
changetype: modify
delete: unicodePwd
unicodePwd:: V3VQdXV1STEyLg==
-
add: unicodePwd
unicodePwd:: QmxhVVVraTEyLg==
-
(不用担心 - 这些密码不会在任何地方使用,也不是生产环境)
现在 - 每次我执行命令时都会收到以下错误:
modifying entry CN=test,CN=Users,DC=lab01,DC=example,DC=com"
ldapmodify: Constraint violation (19)
additional info: 0000216C: AtrErr: DSID-03190EB0, #1:
0: 0000216C: DSID-03190EB0, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 9005a (unicodePwd)
现在,在我阅读了这个错误的原因之后,要么是密码格式错误,要么是密码策略不允许我使用的密码。我检查了该政策 - 现在多次 - 并且新密码明确符合所有标准的政策。如果我使用 Windows 机器设置密码,它也可以正常工作(当然,我后来更改了“旧密码”和“新密码”,因为政策不允许我更改为较早的密码)。我在将“-W”选项传递给 ldapmodify 后输入的密码也绝对正确,否则 ldapmodify 吐出的错误是我使用了无效凭据而不是违反约束。所以 - 我能想到的唯一原因确实是格式错误的密码 - 但我可以'
有谁知道发生了什么?谁能把我推向正确的方向?
非常感谢您的帮助,我提前感谢您。
编辑:让我烦恼的事情:当我通过 base64 运行基本编码字符串时,它一直告诉我“输入无效”。现在 - 我继续使用 linux 机器上的 base64 重新编码密码 - 但是当我再次通过解码函数运行生成的字符串时,base64 一直告诉我“无效输入”......但是字符串稍微在 windows-base64 编码字符串和 linux 编码字符串之间更改。但是无论我在其中放什么,base64 都只会说“无效输入”。
Edit2:没关系 - 阅读我收集到的函数的目的,它会因为密码中的点和感叹号而引发此错误。