В настоящее время я пытаюсь изменить пароли в нашей Active Directory Envoirenment через 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-машины, он также работает хорошо (конечно, после этого я изменил «oldpassword» и «newpassword», так как политика не позволяет мне сменить пароль на более ранний).Пароль, который я ввожу после передачи опции -W в ldapmodify, также определенно верен, в противном случае ошибка, выдаваемая ldapmodify, заключается в том, что я использовал недопустимые учетные данные вместо нарушения ограничения.Итак, единственная причина, по которой я могу придумать, - это действительно неверно отформатированный пароль, но я не могу понять, откуда исходит неправильное форматирование, поскольку я использую обычный алгоритм base64 для кодирования пароля.
Кто-нибудь знает, что происходит?Кто-нибудь может подтолкнуть меня в правильном направлении?
Помощь очень ценится, и я заранее благодарен вам.
Редактировать: Что-то, что меня беспокоит: когда я запускаю строки с закодированным основанием через base64, он постоянно говорит мне «Неверный ввод».Теперь - я пошел дальше и просто перекодировал пароли с использованием base64 на машине linux - но когда я снова запускаю сгенерированную строку через функцию декодирования, base64 продолжает сообщать мне «Неверный ввод» ... Строки, однако, немногоизменено между строкой в кодировке windows-base64 и строкой в кодировке linux.Но base64 просто говорит «Неверный ввод», независимо от того, что я туда вставил.
Edit2: Nevermind - прочитав назначение функции, которую я понял, она выдает эту ошибку из-за точек и восклицательного знака в пароле.