当我安装 OpenLDAP 时,系统要求我为管理员用户创建密码,但现在我意识到还有另一个管理员用户的cn=config
密码我不知道。有人知道我应该如何更改或获取该管理员密码吗?我使用的是全新安装的 Ubuntu 13.10。
我需要该密码因为我正在尝试设置 sudo-ldap。
答案1
我不知道当前的 Ubuntu 软件包如何进行初始 OpenLDAP 设置,但在 10.04 和 12.04 中,该过程都不能很好地解释 cn=config。如果设置了,您应该在属性中找到密码olcRootPW
(/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif
可能是 base64 编码的)。
要更改密码,请使用ldapmodify
root 身份。将其保存为 LDIF 文件rootpw_cnconfig.ldif
:
dn:olcDatabase={0}config,cn=config 变更类型:修改 替换:olcRootPW olcRootPW: foobar123
笔记:为了更改 CentOS7 上的 root 密码,请使用dn: olcDatabase={2}hdb,cn=config
而不是dn: olcDatabase={0}config,cn=config
。
显然,请将你的密码设置为除 之外的其他密码foobar123
。然后运行ldapmodify
:
$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f rootpw_cnconfig.ldif
这假定cn=config
可以使用 ldapi 协议 ( ) 访问 LDAP 服务器和数据库,-H ldapi:///
并且外部 SASL 身份验证 ( -Y EXTERNAL
) 已启用并正常工作,默认情况下,Debian 和 Ubuntu 中的新 OpenLDAP 设置应该如此。如果您查看/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif
它应该包含一个属性olcAccess
:
olcAccess:{0}至 * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external ,cn=auth 管理通过 * break
答案2
如果您不知道如何更改默认cn=config
的访问权限access to * by * none
(在某些 openldap 分发中),可以使用以下解决方法:
- 创建适当的 slapd.conf,其中包含:
database config
rootdn "cn=admin,cn=config"
rootpw password
access to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
- 将其转换为 LDIF:
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
- 跑步
slapd
- 使用 SASL 授权添加/修改 LDAP 数据库,例如:
sudo ldapadd -Y EXTERNAL -Q -H ldapi:/// <<EOF
dn: cn=config
objectClass: olcGlobal
cn: config
olcIdleTimeout: 30
olcLogLevel: stats config sync
olcArgsFile: /run/openldap/slapd.args
olcPidFile: /run/openldap/slapd.pid
dn: cn=schema,cn=config
objectClass: olcSchemaConfig
cn: schema
include: file:///etc/openldap/schema/core.ldif
dn: olcDatabase=frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: frontend
dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: mdb
olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com
olcRootPW: secret
olcDbDirectory: /var/lib/openldap/openldap-data
olcDbIndex: objectClass eq
EOF