安装好了openldap之后,就是对它进行配置了,其中一项就是设置访问控制,限制普通用户只能修改/访问他们能修改/访问的项。这就是ACL需要做的事情。


设置方法

1、可以将 include行放在/etc/openldap/slapd.conf 的顶部,指向一个单独的文件(例如, include /etc/openldap/slapd.access.conf) 
2、或者可以将 ACL 直接添加到 slapd.conf。这完全由您选择 ― Mandrake 通常使用 include 行;Red Hat 将 ACL 添加到配置文件。slapd.conf文件路径:/etc/openldap/slapd.conf

ACL设置语法

1.语法

access to what: 
by who access control
 
其中,access to指示启用访问控制,上句大致可以理解为: 
access to <对什么目标进行控制>[by <作用于哪些访问者> <授予什么样的访问权限><采取什么样的匹配控制动作>]+

2.剖析

2.1 控制目标 what

这一域主要是实现对ACL应用对象的指定,对象可以是记录和属性。选择ACL目标记录的方法一般有两种:DN和filter,语法为:


what ::= * | 
[dn[.basic-style]=regex | dn.scope-style=DN] 
[filter=ldapfilter] [attrs=<attrlist>] 

2.1.1 指定所有的记录

access to *

2.1.2 通过DN指定

语法如下:

to dn[.basic-style]=regex 
basic-style ::= regex | exact 
to dn.scope-style=DN 
scope-style ::= base | one | subtree | children

第一种方法是使用正则表达式(dn.regex)或精确匹配(dn.style)的方式来匹配符合条件的记录(这个好像不像想象的那么简单,实现起来颇为费脑筋),例如:

access to dn="^.*,uid=([^,]+),ou=users,(.*)$"

第二种方法通过“区域”选择的方法进行目标记录的选取,对以指定的DN开始的目录树区域进行目标记录匹配。匹配区域的方式共有四种: 
base 只匹配DN本身一条记录 
one 匹配以给定DN为父目录的所有记录 
subtree 匹配以给定DN为根目录的所有子树内的记录 
children 匹配给定DN下的所有记录,但应该不包括以DN直接命名的那条记录(参见例子的解释)

例如:对于 
0: dc=mydomain,dc=org 
1: cn=root,dc=mydomain,dc=org 
2: ou=users,dc=mydomain,dc=org 
3: uid=samba,ou=users,dc=mydomain,dc=org 
4: cn=Administator,uid=samba,ou=users,dc=mydomain,dc=org 
5: uid=guest,ou=users,dc=mydomain,dc=org

规则 dn.base=”ou=users,dc=mydomain,dc=org” 只会匹配记录2 
规则 dn.one=”ou=users,dc=mydomain,dc=org” 匹配记录3和记录5,记录4是记录3的子目录,故不算在内 
规则 dn.subtree=”ou=users,dc=mydomain,dc=org” 匹配记录2、3、4、5 
规则 dn.children=”ou=users,dc=mydomain,dc=org” 匹配记录3、4、5,因为记录0、1和2都是以DN直接命名的,故不匹配

2.1.3 通过filter匹配记录

通过filter指定过滤规则进行记录过虑,语法如下:

access to filter=ldap filter

其中filter指定的为search的过滤规则,这类同于linux系统中grep的匹配方式。如:

access to filter=(objectClass=sambaSamAccount)

也可以结合使用DN和filter进行记录的匹配,例如:

access to dn.subtree=”ou=users,dc=mydomain,dc=org” filter=(objectClass=posixAccount)

2.1.4 通过attrs选取匹配记录

语法: 
attrs=attribute list

例如: 
access to attrs=uid,uidNumber,gidNumber

也可以结合使用DN和attrs进行记录的匹配,例如: 
access to dn.subtree="ou=users,dc=mydomain,dc=org" attrs=uid

2.2 被用来授权的访问者的指定

指定被授权的用户范围的方法大致有以下几种: 
* 所有的访问者,包括匿名的用户 
anonymous 非认证的匿名用户 
users 认证的用户 
self 目标记录的用户自身 
dn[.<basic-style>]=<regex> 在指定目录内匹配正则表达式的用户 
dn.<scope-style>=<DN> 指定DN内的用户

例如: 
by dn.subtree="ou=users,dc=domain,dc=org"="^samba*"

2.3 被授予的权限access

当选取好ACL作用的目标记录并选取好用户范围后,就该给这些用户授予他们应该得到的权限了。大致的权限(由低到高)有以下几类: 
none 无权限,即拒绝访问 
auth 访问bind(认证)设置的权限;前提是需要用户提交一个DN形式的用户名并能通过认证 
compare 比较属性的权限;(例如:对照查看某用户的telephoneNumber值是不是158 8888 8888),但并不具有搜索的权限 
search 利用过虑条件进行搜索的权限,但这并不一定具有可读取搜索结果的权限 
read 读取搜索结果的权限 
write 更改记录属性值的权限

可以在slapd.conf文件中通过defaultaccess指定默认的权限级别,如: 
defaultaccess search

2.4 采取什么样的匹配控制动作control

在进行记录的匹配时,如果有多条规则存在,那么在第一次匹配产生后是否还进行后续的匹配或采取其它的动作将取决于此项的设置;控制方式共有以下三种:

stop 这个是默认值,这表示在一次匹配产生后将不再进行下一个匹配,所有后续的匹配将会停止。 
continue 无论匹配是否已经发生,继续进行直到所有的规则全部进行完匹配检查 
break 一个匹配发生后,跳出当前的子句进行后一个子句的检查

2.5 一个例子

access to dn.chilren="ou=users,dc=mydomain,dc=org" 
attrs=userPassword #指定“密码”属性 
by self write #用户自己可更改 
by * auth #所有访问者需要通过认证 
by dn.children="ou=admins,dc=mydomain,dc=org" write #管理员组的用户可更改

access to dn.subtree="ou=SUDOers,dc=test,dc=com" #SUDOers的所有内容必须提供其他匿名可读,不然在linux上切换到该用户,不能使用sudo 
by dn="cn=Manager,dc=test,dc=com" write 
by * read 
access to attrs="gidNumber,homeDirectory,loginShell,uidNumber,sshPublicKey" 
by * read #对这些属性只能读,但是userPassword字段是可写的,允许用户自行修改密码,但是不能修改自己的gid,home目录等 
access to * 
by anonymous read #匿名访问可读 
by self write #自己可写 
by users read
 #其他用户可读

前面这些配置需要放在 
database config 
access to * 
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
by * none 
enable server status monitoring (cn=monitor) 
database monitor 
access to * 
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read 
by dn.exact="cn=Manager,dc=test,dc=com" read 
by * none
 
的前面才能生效

OpenLDAP权限配置的更多相关文章

  1. Mosquitto搭建Android推送服务(四)Mosquitto服务器用户登录与权限配置

    文章钢要: 1.对服务器进行多用户配置 2.根据不同用户给予不同权限 一.Mosquitto的用户机制 mosquitto中可以添加多个用户,只有使用用户名和密码登陆服务器才允许用户进行订阅与发布操作 ...

  2. 13、Apache中虚拟目录和目录权限配置

    一.虚拟目录 之前的个人主页,为了安全起见,需要把~yanji 用户隐藏起来,这时就可以设置个 虚拟目录. 它在Apache服务器应用比较多,能够隐藏系统的真实目录,实用性非常高. 虚拟目录主要 通过 ...

  3. [译]SQL Server分析服务的权限配置

    简介: 本文介绍如何配置SSAS数据库和cube相关维度的安全设置. 相对数据引擎来说,在Management Studio中配置分析服务的安全设置基本没什么区别.但是也会有一些限制,比如SSAS的权 ...

  4. SVN的服务器端用户权限配置

    第一:用户的配置 SVN和apache整合的话,用户可以直接使用htpasswd dav_svn.passwd_file_address USERNAME来配置. 而账户的管理可以用dav_svn.a ...

  5. Ecshop :后台添加新功能 菜单及 管理权限 配置

    需求:在<商品管理>下增加一项[商品推广管理]功能 一. 添加菜单项 打开 /admin/includes/inc_menu.php 文件(后台框架左边菜单),在最后添加一行如下: $mo ...

  6. CentOS学习笔记--账号管理与权限配置

    Linux 的账号管理与权限配置 管理员的工作中,相当重要的一环就是『管理账号』啦! 使用者标识符: UID 与 GID 虽然我们登陆 Linux 主机的时候,输入的是我们的账号,但是其实 Linux ...

  7. Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员

    Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员 1. 配置server连接权限 1 2. 配置数据库权限 1 3. 设置表格/视图安全性 2 1.  ...

  8. SVN 权限配置具体说明

    svnserve权限配置 分配权限时.文件夹应该应该遵从从大到小,权限应该从小到大的规则 即:文件夹从根文件夹開始,权限从没有权限(为空就可以)到可写再到可读写. 提示:文件夹的訪问权限既能够分配给组 ...

  9. jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限

    jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->conf ...

随机推荐

  1. 解析ASP.NET Mvc开发之EF延迟加载 分类: ASP.NET 2014-01-04 01:29 4017人阅读 评论(1) 收藏

    目录: 从明源动力到创新工场这一路走来 解析ASP.NET WebForm和Mvc开发的区别 解析ASP.NET 和Mvc开发之查询数据实例 ----------------------------- ...

  2. 使用epublib解析epub文件(章节内容、书籍菜单)

    链接地址https://blog.csdn.net/sonnyching/article/details/47407549

  3. NLP 装桶(Bucketing)和填充(padding)

    翻译模型也是用了装桶(bucketing)和填充(padding),这两种方法是用于高效地处理不同长度句子的情况.我们首先来弄清楚是怎么一回事.当我们从英语翻译成法语的时候,假设我们的输入英语的长度为 ...

  4. SpringBoot入门 (一) HelloWorld

    一 什么是springboot springboot是一个全新的框架,它设计的目的简化spring项目的初始环境的搭建和开发,主要有以下几个特点: 1.简化初始配置 ,可与主流框架集成: 2.内置Se ...

  5. DateUtils 通用类

    package com.egaoqi.util; import org.apache.commons.lang3.time.DateFormatUtils; import java.text.Pars ...

  6. 触摸UITextView找到该触摸点的文字

    参加了一个比赛有一道题是如标题一样,在UITextView上触摸找到该触摸点对应的文字,比赛也可以查资料,当时做的时候就是抱着玩玩的心态试试也没认真做,就没查就去吃饭去了,昨晚下班回去在思考这个问题发 ...

  7. MySQL5.6.12 rpm制作及及自动化部署安装

    转自:http://blog.itpub.net/29254281/viewspace-1268918/ 首先,下载rpmbuildyum install rpm-build -y它是Red Hat用 ...

  8. 我在项目中运用 IOC(依赖注入)--入门篇

    之前就听同事说过依赖注入(dependency injection).控制反转(Inversion of Control).起初听的是一头雾水,试着在项目中运用了几次,总算明白了一些,抛砖引玉,与大家 ...

  9. 撩课-Web大前端每天5道面试题-Day25

    1.web前端开发,如何提高页面性能优化? 内容方面: .减少 HTTP 请求 (Make Fewer HTTP Requests) .减少 DOM 元素数量 (Reduce the Number o ...

  10. MyBatis 常用写法

    MyBatis 常用写法 1.forEach 循环   forEach 元素的属性主要有 item, idnex, collection, open, separator, close. collec ...