首页 > 解决方案 > kdb5_ldap_util:尝试通过管道将密码回显到命令中总是返回无效的凭据

问题描述

我一直在尝试在 docker-compose 构建中使用 OpenLDAP 后端设置来自动化 MIT Kerberos 5 的配置,而现在我需要在 LDAP 层次结构中创建 Kerberos 容器。我需要对 kerberos 中的 ldap 服务器使用 kdb_ldap_util 命令。

目前,我可以手动执行此操作。使用命令

kdb5_ldap_util -D cn=admin,dc=denodocompose,dc=org create -subtrees dc=denodocompose,dc=org -r DENODOCOMPOSE.ORG -s -H ldap://ldap.denodocompose.org

这将提示输入 3 个密码和一个 kerberos 容器 dn。

我需要将其作为 shell 脚本的一部分执行以引导数据库创建,但无论我尝试了哪种组合,我都会不断收到“无效凭据”或尝试绑定的“无法读取密码”错误当我尝试在没有人工交互的情况下提供密码时到 LDAP 服务器。我正在尝试通过管道输入回显以提供密码,并尝试了以下组合对此进行试验:

echo changeit | kdb5_ldap_util... //results in 'cannot read' error
echo {'changeit'} //results in invalid credentials on the bind, along with the rest of these
echo -n {'changeit'}
echo -n {"changeit"}
echo -n -e {'changeit\n'}
echo -n -e {"changeit\n"}
echo -e {'changeit\n'}
echo -e {"changeit\n"}

一旦我弄清楚了传递绑定密码的正确语法,我就可以相当有信心为其余提示复制该语法,但是每次在第一个提示时都会失败,并且凭据对于提供的 dn 无效,这当手动执行命令时,再次完美运行。任何帮助将不胜感激。

编辑:找到正确的语法:

{ echo -n -e 'changeit\n'; echo -n -e 'changeit\n'; echo -n -e 'changeit\n'; echo -n -e 'cn=krbContainer,dc=denodocompose,dc=org\n';} | kdb5_ldap_util -D cn=admin,dc=denodocompose,dc=org create -subtrees dc=denodocompose,dc=org -r DENODOCOMPOSE.ORG -s -H ldap://ldap.denodocompose.org

标签: scriptingkerberosopenldap

解决方案


推荐阅读