OpenLDAP:用ACL 控制访问权限 说明:这段时间我在学习Openldap 的知识,关于访问控制权限这一块遇上较大的麻烦。我在网上看到了一些人的帖子,有些写的不错,有些写的不全,还有些完全是照抄别人的,还不注明出处。因此我把我搜集到的东西整理出一个文档,献给各位正在学习openldap 的朋友,我的初衷是回馈社会,支持免费和开源,水平有限,诸多包涵。我所引用到的东西,我都将注明出处,感谢提供我信息的人,我想说,you are the greatest。 第一部分 语法综述 1.用ACL 控制授权 我们在LDAP 中创建目录树后,最感兴趣的就是如何控制用户在目录树中的权限(读写)。谁在什么条件下有记录权限,我们有权限看到哪些信息。ACL(Access Control List)访问控制列表就是解决用户权限问题的。 2.我们要把 ACL 写在哪里? ACL 写在OpenLDAP 的服务端全局配置文件 slapd.conf 中,如下这段即为其指令: # access to dn.base="" by * read # access to dn.base="cn=Subschema" by * read # access to * # by self write # by users read # by anonymous auth 也可以写在一个单独的文件中,如 access.conf,然后在全局配置文件 slapd.conf 中调用,在配置文件中引入这个文件即可,如下: include /etc/openldap/access.conf include 后面的路径为该文件的放置地址。 3.ACL 语法基础 怎么看懂 ACL 指令? 首先看下 ACL 访问指令的格式: ################################################ access to [resources] by [who] [type of access granted] [control] by [who] [type of access granted] [control] # More 'by' clauses, if necessary.... ################################################ 指令中包含 1 个 to 语句,多个 by语句。 这个指令的大体意思是,通过 access to 约束我们访问的范围(resources),通过 by设定哪个用户(who)获取对这个约束范围有什么权限(type of access granted),并控制(control)这个 by语句完成后是否继续执行下一个 by语句或者下一个 ACL 指令。 Access to [resources] resources 可以有多种形式,如 DN,attrs,Filters.以下即详细说明。 3.1.通过约束 DN 进行访问(同层级访问) 如下所示, access to dn="uid=matt,ou=Users,dc=example,dc=com" by * none 这个指令是指访问...