使用在 Linux 上运行的 Ruby LDAP,我可以毫无问题地创建一个新的 Active Directory 用户帐户。现在我想重命名一个用户帐户用户名。
当我尝试更改时sAMAccountName
,它不起作用。是否可以使用 Ruby LDAP 更改 AD 用户帐户?如果是这样,怎么做?
使用在 Linux 上运行的 Ruby LDAP,我可以毫无问题地创建一个新的 Active Directory 用户帐户。现在我想重命名一个用户帐户用户名。
当我尝试更改时sAMAccountName
,它不起作用。是否可以使用 Ruby LDAP 更改 AD 用户帐户?如果是这样,怎么做?
当您说“不起作用”时,返回的错误是什么?您应该完全有能力更改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)
我看到这是一岁了,但无论如何我都会回答。
我在 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”,因此目前没有办法将对象从一个容器移动到另一个容器。我仍在研究如何实现这一目标。
马特
您有机会发布一些代码吗?此外,您可能想尝试使用真正用于移动用户帐户的MoveHere方法,但也可用于重命名帐户。