如何使用 ldapmodify 进行 slapd OLC 的初始设置

Chr*_*ris 0 linux openldap

我在 CentOS 上设置 LDAP 服务器时遇到了某种死锁。我使用 /etc/openldap/slapd.d 下的在线配置文件 文档告诉你不要手动修改这些文件,并且这些文件是校验和的。但我无法使用 ldapmodify,因为我无法登录(简单绑定) - 而且我无法登录,因为我无法为用户设置密码 - 而且我无法为用户设置密码,因为我无法使用 ldapmodify,因为我无法登录,因为我无法设置密码,因为......

我当然可以通过直接编辑文件来设置它 - 我已经做到了,而且它有效。但这只是让我烦恼,我找不到一种“正确”的方法。

Chr*_*ris 6

Ubuntu(Debian 软件包)

Ubuntu 和也许其他带有 debian 软件包的发行版都试图变得超级智能并为您设置一切 - 当您想要进行非交互式安装时,这确实成为一个问题,因为 debconf 将设置随机管理员密码并配置基本密码DN 根据您的机器名称。您也许能够猜出基本 DN - 但您无法猜出密码,并且由于它在安装后从 debconf-DB 中删除,因此您无法读出它。

不过,您可以在安装软件包之前配置密码和 DN :

export DEBIAN_FRONTEND=noninteractive
sudo debconf-set-selections <<EOF
slapd slapd/internal/generated_adminpw password changeme
slapd slapd/password2 password changeme
slapd slapd/internal/adminpw password changeme
slapd slapd/password1 password changeme
slapd slapd/domain string example.com
slapd shared/organization string example.com
EOF

sudo apt-get install -y slapd ldap-utils
Run Code Online (Sandbox Code Playgroud)

务必小心此处的空格:在密码前放置两个空格会将密码设置为 __changeme_ (即: ( Blankspace )changeme)

感谢 OpenStackPro展示了如何配置选择

您可以使用以下命令测试您的设置

ldapsearch -x -D "cn=admin,dc=example,dc=com" -w "changeme"
Run Code Online (Sandbox Code Playgroud)

应该输出类似的内容

# extended LDIF
#
# LDAPv3
# base <> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
Run Code Online (Sandbox Code Playgroud)

这意味着,您的 LDAP 数据库中还没有任何内容,但至少您能够登录:-)

如果你得到类似的东西

ldap_bind: Invalid credentials (49)
Run Code Online (Sandbox Code Playgroud)

您需要仔细检查您的 admin-DN 和密码。您可以使用以下命令检查您的 admin-DN

sudo slapcat -n0 | grep olcRootDN
Run Code Online (Sandbox Code Playgroud)

CentOS 6.6(很可能还有 RedHat、Fedora 等)

安装软件包

sudo yum -y install openldap openldap-servers openldap-clients
Run Code Online (Sandbox Code Playgroud)

首先获取密码哈希

slappasswd -s changeme
Run Code Online (Sandbox Code Playgroud)

请注意,CentOS 软件包使用my-domain.com而不是example.com,因此您可能需要相应地调整命令。

在init.ldif这样的文件中创建一个初始 ldif :

dn: dc=my-domain,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: my-domain.com
dc: my-domain

dn: cn=admin,dc=my-domain,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: {SSHA}rX8oWGKW6B7mKY+nUJhrv4g1pPH5KtQg
Run Code Online (Sandbox Code Playgroud)

要将此配置写入您的 LDAP,请使用:

sudo slapadd -F /etc/openldap/slapd.d -b "cn=config" -l init.ldif
Run Code Online (Sandbox Code Playgroud)

同样,您可以使用以下命令测试您的设置

ldapsearch -x -D "cn=admin,dc=my-domain,dc=com" -w "changeme"
Run Code Online (Sandbox Code Playgroud)

(参见上面的“Ubuntu”)