gpt4 book ai didi

Ruby NetLdap - 在 Samba4 中将用户条目从一个容器移动到另一个容器

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:01 25 4
gpt4 key购买 nike

我正在使用 net-ldap 的 rename 方法将用户从一个 OU 移动到另一个;但是,我收到“必须删除旧 RDN”错误:

#<OpenStruct code=53, error_message="00002035: Unwilling to perform. Old RDN must be deleted", matched_dn="", message="Unwilling to perform">

这是我创建的方法:

def self.move(user, group)
new_rdn = "CN=#{user.cn.first}"
new_superior = "OU=#{group},OU=People,DC=example,DC=com"
ldap_connection.rename(
olddn: user.dn,
newrdn: new_rdn,
delete_attributes: true,
new_superior: new_superior
)
end

尝试仅更改 RDN (CN) 时也会出现相同的响应。正在联系的服务器是 Samba4 服务器。添加、删除、更新等都按预期工作。只是重命名有问题。

最佳答案

终于找到答案了。问题在于 gem 为 delete_attributes 编码 true 值的方式,因此它从未收到删除旧 RDN 的消息。我克隆了我自己的 gem 副本并进行了以下更改:

文件:lib/net/ber/core_ext/true_class.rb

def to_ber
"\x01\x01\xFF".force_encoding("ASCII-8BIT")
end

false的代码也可以改(我自己没有地方用“false”)。

文件:lib/net/ber/core_ext/false_class.rb

def to_ber
"\x01\x01\x00".force_encoding("ASCII-8BIT")
end

此解决方案可在 Issue #31 中找到为了 gem 。

关于Ruby NetLdap - 在 Samba4 中将用户条目从一个容器移动到另一个容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com