Нарушение ограничения LDAP при смене пароля в AD через ldapmodify

В настоящее время я пытаюсь изменить пароли в нашей среде Active Directory через LDAP в Linux, поскольку у рассматриваемых пользователей нет доступа к 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 для кодирования пароля.

Кто-нибудь знает, что происходит? Может ли кто-нибудь подтолкнуть меня в правильном направлении?

Помощь приветствуется, и я заранее благодарю вас.

Редактировать: Что-то меня смущает: Когда я запускаю строки с базовой кодировкой через base64, он продолжает говорить мне «Неверный ввод». Теперь - я пошел дальше и просто перекодировал пароли с использованием base64 на Linux-машине - но когда я снова запускаю сгенерированную строку через функцию декодирования, base64 продолжает говорить мне "Неверный ввод"... Однако строки немного изменяется между строкой в ​​кодировке Windows-base64 и строкой в ​​кодировке Linux. Но base64 просто говорит «Неверный ввод», независимо от того, что я туда ввел.

Редактировать 2: Ничего себе - читая назначение функции, я понимаю, что она выдает эту ошибку из-за точек и восклицательного знака в пароле.

6
задан henryford 3 April 2012 в 12:36
поделиться