如何在 LDAP 中设置正确的访问指令?

Posted

技术标签:

【中文标题】如何在 LDAP 中设置正确的访问指令?【英文标题】:How to set up proper access directive in LDAP? 【发布时间】:2021-12-27 18:00:19 【问题描述】:

我是 LDAP 新手,对于一个学校项目,我可以访问我学校 LDAP 的一部分。我可以与组织单位中的用户绑定。

当我绑定时,我可以看到我的密码,而不是其他用户的任何其他密码(出于安全原因,这很正常)。

所以我已经导出了这个 LDAP 的 LDIF 并将其导入到我自己的 LDAP 服务器上以进行学习。

ldapsearch 命令运行良好,我检索了所有条目(密码除外,这很正常)。

所以现在,我尝试与任何用户绑定,我已经通过 Apache Directory Studio 在每个 LDAP 用户中添加了密码(inetorgPerson 在我通常搜索的 ou 下)。

但是,我无法绑定。

我猜是因为访问权限错误。

我知道我必须使用 ldapmodify 命令,并且我需要伪造一个指令,例如 access to * by * read(权限比 * 少,但一开始可能很好)。

但是,我找不到如何将此指令与 ldapmodify 一起使用。

我认为我必须创建一个 LDIF 文件来修改配置,但我不明白我应该更新哪个条目。

谁能给我提示以修改正确的条目?

谢谢

这里是我配置的 id 部分(域编辑为 domain.fr):

    dn: olcDatabase=-1frontend,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcFrontendConfig
    olcDatabase: -1frontend
    olcAccess: 0to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
    olcAccess: 1to dn.exact="" by * read
    olcAccess: 2to dn.base="cn=Subschema" by * read
    olcSizeLimit: 500
    
    dn: olcDatabase=0config,cn=config
    objectClass: olcDatabaseConfig
    olcDatabase: 0config
    olcAccess: 0to * by * write
    
    dn: olcDatabase=1mdb,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcMdbConfig
    olcDatabase: 1mdb
    olcDbDirectory: /var/lib/ldap
    olcSuffix: dc=domain,dc=fr
    olcAccess: 0to attrs=userPassword by self write by anonymous auth by * none
    olcAccess: 1to attrs=shadowLastChange by self write by * read
    olcAccess: 2to * by * read
    olcLastMod: TRUE
    olcRoot
    
    dn: cn=admin,dc=domain,dc=fr
    olcRootPW: SSHAYNGbI0zpbUoVLZggbKeZqFIlVdq+0ZJP
    olcDbCheckpoint: 512 30
    olcDbIndex: objectClass eq
    olcDbIndex: cn,uid eq
    olcDbIndex: uidNumber,gidNumber eq
    olcDbIndex: member,memberUid eq
    olcDbMaxSize: 1073741824
    search: 2

【问题讨论】:

你可以参考这个帖子LDAP configuration ACL on centos 7(检查你的后端,可以是hdb、bdm、mdb)。 谢谢,我去看看,根据我的配置,我的后端确实是mdb(刚刚在帖子中添加) 【参考方案1】:

• 由于您已在新 AD 中导入 LDIF 文件,因此在您的 AD 环境中重新创建了原始 AD 中的所有用户。因此,您需要在您的环境中创建一个与原始 DNS 命名服务相同的 DNS 命名服务,因为您要添加条目的后缀应该存在于数据库中。此外,原始 LDAP 目录中使用的域管理员凭据将需要与导入的 LDIF 文件中的用户凭据绑定。

为此,您需要使用以下命令修改域管理员凭据。下面显示的脚本是有关如何修改域管理员凭据然后尝试使用这些凭据绑定用户的示例。 使用以下内容创建一个新的 LDIF 文件:-

 ‘ dn: uid=XYZ,ou=Domain Administrators,dc=example,dc=com
   cn: XYZ
   sn: XYZ
   givenName: XYZ
   objectClass: top
   objectClass: person
   objectClass: organizationalPerson
   objectClass: inetOrgPerson
   ou: Accounting
   ou: People
    l: Santa Clara
  uid: XYZ
 mail: XYZ@example.com
  roomnumber: 5484
    userpassword: Pass@123 ’

然后,使用带有“—defaultAdd”选项的“ldapmodify”添加条目

   ‘ ldapmodify --hostname localhost --port 389 --bindDN "cn=Directory Manager" \
 --bindPassword password --defaultAdd --filename /tmp/new.ldif ‘

使用这些命令,您将能够修改域管理员凭据,然后肯定能够在 LDAP 中绑定用户。只需将 ldif 文件名更改为您拥有的文件名,然后将 ldif 文件中的条目更改为原始目录中的实际条目。请在下面找到此链接以供参考:-

https://docs.oracle.com/cd/E22289_01/html/821-1273/adding-modifying-and-deleting-directory-data.html

【讨论】:

以上是关于如何在 LDAP 中设置正确的访问指令?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 指令的 Link 函数中设置 CSS 样式

如何在 AngularJS 指令范围中设置默认值?

如何使用 @Input 在 *ngFor 指令中设置管道

如何在 Oracle 10g Java VM 中设置并发调用

如何在 iText 7 中设置 Tab 键顺序?

如何在 ejabberd 中设置用户密码? [关闭]