ldapsearch(1)
命令从 LDAP 服务器检索对象,并将它们作为 LDIF 结构打印出来,如下所示(不是真实数据):
dn: mail=foo@domain.com,dc=domain,dc=com
objectclass: top
objectclass: person
mail: foo@domain.com
userPassword:: hdfy74dhn79wdhyr74hy7489fhw46789f
如果属性包含非 ASCII 数据,则它是 Base64 编码的,由属性名称后的双 ::
表示。此外,似乎任何名为 userPassword
的属性都将总是这样编码,即使它是 ASCII-clean。
我想做的是告诉 ldapsearch
不要这样做。我一直无法找到要传递的选项标志来抑制这种行为;仅在禁用 LDAP_PASSWD_DEBUG
的情况下重新编译源代码。
是否有一个未记录的选项来阻止这种编码?
(撇开安全问题等,因为这是出于测试目的)
最佳答案
除了重新编译 ldapsearch,似乎没有办法用一个简单的标志来做到这一点。
但是您可以像这样创建一个 shell 别名,这将具有相同的效果 - 前提是您安装了 Perl MIME::Base64 模块。
myldapsearch()
{
ldapsearch $* | perl -MMIME::Base64 -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode_base64($1)/eg;print'
}
alias ldapsearch=myldapsearch
关于bash - 如何阻止 ldapsearch(1) 对 userPassword 和其他属性进行 base64 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38710483/