是否可以在像 slapd.conf 这样的文件中进行 ldif 配置?

是否可以在像 slapd.conf 这样的文件中进行 ldif 配置?

slapd 弃用了 slapd.conf,更喜欢 ldif conf,slapd -F dir使用新的 ldif conf,但目录必须遵循 ldif 结构

  • cn=配置.ldif
  • cn=配置/
    • cn=schema.ldif
    • cn=架构/

是否可以在一个文件(如 slapd.ldif)中创建初始 ldif 配置?

答案1

任何 LDIF 文件都可以包含多个对象。例如,如果我想创建一个organizationalUnit和几个organizationalPerson 对象,我可以这样写:

dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users

dn: cn=user1,ou=users,dc=example,dc=com
objectClass: organizationalPerson
objectClass: simpleSecurityObject
cn: user1
sn: user1
userPassword: {SSHA}lNnn048f5TFMqjb/hWaMibYm5LavDFtK

dn: cn=user2,ou=users,dc=example,dc=com
objectClass: organizationalPerson
objectClass: simpleSecurityObject
cn: user2
sn: user2
userPassword: {SSHA}vNEUo1M42aG9w4p1zwMkjY2+7xUzeOeF

由于最新版本的slapd配置管理为 ​​LDAP 数据库,我们可以像上面一样将配置提交为 LDIF 文件。例如,以下 LDIF 文件将加载后端mdb ,然后为配置 MDB 数据库dc=example,dc=com

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/openldap
olcModuleLoad: back_mdb.so

dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: mdb
olcSuffix: dc=example,dc=com
olcRootDN: cn=manager,dc=example,dc=com
olcRootPW:: c2VjcmV0
olcDbDirectory: /var/lib/openldap/example.com
olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage

slapd我喜欢像这样初始化:

  1. 创建存根/etc/openldap/slapd.conf.init

    pidfile /var/lib/openldap/run/slapd.pid
    
    database config
    access to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
    

    上述配置中的 ACL 授予manage系统用户通过套接字root访问时的访问权限。这对于为您提供对数据库的写访问权限是必要的。slapdldapi://cn=config

  2. 使用它来初始化您的slap.d配置:

    slaptest -f slapd.conf.init -F slapd.d
    
  3. 启动slapd,并确保启用了ldapi://套接字:

    slapd ... -h 'ldap:// ldaps:// ldapi://'
    
  4. 使用ldapadd身份EXTERNAL验证添加基于 LDIF 的配置:

    ldapadd -Y EXTERNAL -H ldapi:// -f configuration.ldif
    

在所有这些过程中,您需要注意文件/目录所有权:例如,如果您slapdldap用户身份运行,则需要确保用户ldap能够写入slapd.d 目录。


更新这里是一个例子:

  • 构建自定义 slapd 映像,旨在使用运行时提供的 LDIF 文件进行初始化
  • 将映像部署到 kubernetes 中并挂载单个ConfigMap以初始化它的示例配置。

相关内容