- 论坛徽章:
- 0
|
本人在分析openldap过程中,根据有关资料,对访问控制有了一定了解.现遇到有关正则表达式的问题,恳请高手不吝赐教,谢谢!
问题如下:
目的:使数据库中所有dn为"ou=***,……"的entry能够被他的子孙所读
例子:假设目录数据库中的整体结构如下图:
c=IBM
ou=Accounting
cn=Bob
cn=Tom
cn=Rose
ou=Product Departmen
ou=Management
ou=Human Resources
如果我以cn=Bob的身份登陆,便可以读"ou=Accounting"的信息.
于是我在配置文件slapd.conf中设置为:
……
access to dn.regex="^ou=([^,]+),c=IBM"
by dn.regex="ou=$0,c=IBM" read
by * none break
access to *
by self write
by annonymous auth
by * none
但不能达到目的.
通过LDAPBrowser,以用户cn=Bob登陆,查看不到任何信息.
另附:
如果希望每个父结点(entry)都能够具有对其子树中所有子孙的写权限,可在配置文件slapd.conf中输入设置:
access to dn.regex="^.*,ou=([^,]+),c=IBM"
by dn.regex="^ou=$1,c=IBM" write
by * none break
access to *
by self write
by annonymous auth
by * none
然后启动服务进程slapd,通过LDAPBrowser,以ou=Accounting的身份登陆,可以看到并修改ou=Accounting整个子树,而看不到其他的ou=***.
现在我的目的是希望:
任何以"cn=***"身份登陆的用户,只能看到本单位的信息和修改自己的信息.而看不到其他任何人和单位的信息,即他的视图应为:
c=IBM
ou=Accounting
cn=***
任何以"ou=***"身份登陆的用户,可以看到并修改他整个子树的信息,即他的视图应为:(以ou=Accounting为例)
c=IBM
ou=Accounting
cn=Bob
cn=Tom
cn=Rose
现后者问题已经解决,但前者,也就是允许任何ou=***的目录项被他的子孙以读的权限进行访问,还没有解决,恳求高手赐教.
谢谢. |
|