bash - 如何阻止 ldapsearch(1) 对 userPassword 和其他属性进行 base64 编码?

标签 bash ldap

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/

相关文章:

ssl - 是否可以在 WAS7 和 ActiveDirectory 之间的 LDAP 上配置两种方式的 ssl

database - 将用户数据存储在 LDAP 而不是 RDBMS 中的原因

bash - 如何防止用户使用 ctrl-c 停止脚本?

bash - 用 BLOCKS 行填充 bash 数组

linux - 在纯 bash 中将密码传递给 ssh

asp.net - 使用自定义 (asp.net) 表单的 NTLM 身份验证

java - LDAP/AD - 如何确定用户名或密码是否不匹配

bash - 迭代可变路径中的文件 (Bash)

Bash grep 不适用于撇号

ruby - 如何进行真正简单的 Sinatra LDAP 身份验证?