2

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

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

4

3 回答 3

4

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


更新

从错误消息中可以看出,尽管您声称只尝试修改 ,但也尝试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)
于 2009-03-12T19:35:00.910 回答
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”,因此目前没有办法将对象从一个容器移动到另一个容器。我仍在研究如何实现这一目标。

马特

于 2010-04-14T15:51:31.493 回答
0

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

于 2009-03-12T20:00:16.607 回答