我目前尝试通过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
Run Code Online (Sandbox Code Playgroud)
ldif.example的内容:
dn: CN=test,CN=Users,DC=lab01,DC=example,DC=com
changetype: modify
delete: unicodePwd
unicodePwd:: V3VQdXV1STEyLg==
-
add: unicodePwd
unicodePwd:: QmxhVVVraTEyLg==
-
Run Code Online (Sandbox Code Playgroud)
(别担心 - 这些密码不会在任何地方使用,也不是生产环境)
现在 - 每次执行命令时都会出现以下错误:
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)
Run Code Online (Sandbox Code Playgroud)
现在,在我阅读之后,出现此错误的原因是密码格式错误或密码策略不允许我使用的密码.我检查了这个政策 - 现在多次 - 并且新密码根据所有标准确定符合政策.如果我使用Windows机器设置密码它也可以正常工作(当然我之后更改了"oldpassword"和"newpassword",因为策略不允许我更改为更早的密码).我将"-W"选项传递给ldapmodify后输入的密码也是正确的,否则ldapmodify发出的错误是我使用的是无效凭证而不是约束违规.所以 - 我能想到的唯一原因确实是一个错误的格式化密码 - 但我无法弄清楚错误的格式应该来自哪里,因为我使用普通的base64 algorythm来编码密码.
有谁知道发生了什么?任何人都可以把我推向正确的方向吗?
非常感谢帮助,我提前感谢你.
编辑:让我烦恼的东西:当我通过base64运行基本编码字符串时,它一直告诉我"输入无效".现在 - 我继续与使用Linux机器上的base64的只是重新编码的密码 - 但是当我通过解码功能再次运行生成的字符串,BASE64不断告诉我"无效输入" ...琴弦不过稍显在windows-base64编码的字符串和linux编码的字符串之间进行了更改.但是无论我放在那里,base64只是说"无效输入".
Edit2:Nevermind - 读取我收集的函数的目的,因为密码中的点和感叹号,它会抛出此错误.