我目前嘗試通過Linux在LDAP上更改我們的Active Directory Envoirenment中的密碼,因爲有問題的用戶無法訪問Windows計算機,我們希望保持這種方式。 爲了更改密碼,我目前不知道如何使用ldapmodify來做到這一點。大量的閱讀不同網站/論壇/新聞組後,我比以前通過ldapmodify在AD中更改密碼時的LDAP約束違規
但是更加困惑: 我嘗試使用以下命令這樣做:
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==
-
(不要擔心 - 這些密碼不會被任何地方使用,它不是一個生產envoirenment)
現在 - 每次我執行我收到以下錯誤的命令:
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機器設置密碼,它也可以很好地工作(當然,之後我更改了「oldpassword」和「newpassword」,因爲策略不允許我更改爲較早的密碼)。在將「-W」選項傳遞給ldapmodify後輸入的密碼也是正確的,否則ldapmodify吐出的錯誤是我使用無效憑證而不是違反約束條件。 所以 - 我能想到的唯一原因實際上是格式不正確的密碼 - 但我無法弄清楚格式不好應該來自哪裏,因爲我使用普通的base64 algorythm來編碼密碼。
有沒有人知道發生了什麼事? 任何人都可以把我推向正確的方向嗎?
幫助非常感謝,我提前感謝您。
編輯: 誤會我的東西: 當我通過base64運行基本編碼的字符串時,它一直告訴我「無效輸入」。現在 - 我繼續前進,只是在linux機器上使用base64重新編碼密碼 - 但是當我再次通過解碼函數運行生成的字符串時,base64一直告訴我「Invalid Input」無效在windows-base64編碼的字符串和linux編碼的字符串之間改變。但base64只是說「輸入無效」,不管我放在那裏。
編輯2: Nevermind - 閱讀函數的目的我收集它會拋出此錯誤,因爲密碼中的圓點和感嘆號。
我不確定你應該做任何編碼。 LDAP服務器應該這樣做。嘗試以純文本提供這兩個密碼。 – EJP 2012-04-04 01:39:57
是的,確實如果沒有編碼密碼它似乎工作正常。就像我說的:我讀了很多關於這個主題的內容,並且我讀到的所有內容都表明我需要使用編碼的字符串來修改密碼。顯然 - 這不是真的。謝謝! – henryford 2012-04-04 07:58:47