2009-03-12 8 views
2

Используя Ruby LDAP, работающий в Linux, я могу создать новую учетную запись пользователя Active Directory без проблем. Теперь я хочу переименовать имя пользователя учетной записи пользователя.Возможно ли изменить учетную запись пользователя AD с помощью Ruby LDAP?

Когда я пытаюсь изменить sAMAccountName, он не работает. Можно ли изменить учетную запись пользователя AD с помощью Ruby LDAP? Если да, то как?

+0

Макс, вам повезло с командой modrdn ниже? – vladr

ответ

4

Какая ошибка возвращается, когда вы говорите «не работает»? Вы должны полностью изменить значение sAMAccountName с использованием любого клиента или библиотеки LDAP при условии, что соединение было первоначально аутентифицировано как административный пользователь (т. Е. Пользователь, у которого есть разрешение на изменение указанного атрибута записи и записи).


UPDATE

Казалось бы, с сообщением об ошибке, что, хотя вы утверждаете только попытка модификации sAMAccountName, изменение CN также попытка, или CN специальный (она является частью DN.)

Для того, чтобы изменить CN вам, вероятно, придется использовать modrdn переименовать CN часть DN (стандартизованный эквивалент MoveHere):

conn.modrdn('CN=old-name,OU=orgunit,DC=domain', 'CN=new-name', true) 
conn.modify('CN=new-name,OU=orgunit,DC=domain', 'sAMAccountName' => new-acct) 
0

Любой шанс, что вы можете оставить некоторые из кода ? Также вы можете попробовать использовать метод MoveHere, который действительно используется для перемещения учетных записей пользователей, но также может использоваться для переименования учетной записи.

1

Я вижу, что это год, но я все равно отвечу.

Я использую ActiveLdap в приложении Rails ...., в котором используется драгоценный камень Ruby/LDAP. Я могу сделать следующее в своем коде.

aduser = User.find("matt") 
puts aduser.cn 
# prints 'matt' 
puts aduser.distinguishedname 
# prints 'cn=matt,ou=here,dc=my,dc=domain' 

# THIS RENAMES THE ACCOUNT AND AUTOMATICALLY HANDLES ALL THE ATTRIBUTES 
# THAT NEED TO CHANGE... e.g. name, cn, distinguishedname, dn 
aduser.cn = "newmatt" 
aduser.save 

Вы должны быть в состоянии смотреть через код ActiveLdap и выяснить, как они делают это через Ruby/LDAP.

В настоящее время в ActiveLdap не работает «newsuperior», поэтому в настоящее время нет способа переместить объект из одного контейнера в другой. Я все еще работаю над тем, как это сделать.

Мэтт