是否可以使用Ruby LDAP更改AD用户帐户?

时间:2009-03-12 04:00:18

标签: ruby active-directory ldap

使用在Linux上运行的Ruby LDAP,我可以毫无问题地创建新的Active Directory用户帐户。现在我想重命名用户帐户用户名。

当我尝试更改sAMAccountName时,它无效。是否可以使用Ruby LDAP更改AD用户帐户?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:4)

当您说“不起作用”时,返回的错误是什么?您应该完全有能力使用任何LDAP客户端或库来更改sAMAccountName的值,前提是该连接最初被验证为管理用户(即具有更改所述条目和条目属性的权限的用户)。


<强>更新

从错误消息中可以看出,虽然您声称只尝试修改sAMAccountName,但也尝试更改CN,或CN是特殊的(它是DN的一部分。)

要更改CN,您可能需要使用modrdn重命名CN的{​​{1}}部分(DN的标准化等效内容}):

MoveHere

答案 1 :(得分:1)

我觉得这已经有一年了,但无论如何我都会回答。

我在Rails应用程序中使用ActiveLdap ....它使用后面的Ruby/LDAP gem。我可以在我的代码中执行以下操作。

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',因此目前没有办法将对象从一个容器移动到另一个容器。我还在研究如何实现这一目标。

马特

答案 2 :(得分:0)

你有可能发布一些代码吗?您也可以尝试使用真正用于移动用户帐户的MoveHere方法,但也可以用来重命名帐户。