我在 Ubuntu 10.04 上使用 Apache 2.2.14,尝试使用 LDAP 身份验证保护文件夹。我们的 LDAP 服务器正在运行 Novell eDirectory。
我们所有的用户都位于 ou=Users、ou=Directory、o=IC 的子组中。如下所示:
- ou=经理,ou=用户,ou=目录,o=IC
- ou=员工,ou=用户,ou=目录,o=IC
- ou=杂项,ou=用户,ou=目录,o=IC
- ou=局外人,ou=用户,ou=目录,o=IC
我希望 ou=Users,ou=Directory,o=IC 中的所有人都能访问我的文件夹,除了 ou=Outsiders,ou=Users,ou=Directory,o=IC 中的人。
我可以使用以下设置通过我的 LDAP 登录信息进入我的文件夹,但它不会阻止外部人员组中的用户:
AuthName "Login Required: please enter your L-number and PIN"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL ldaps://ldap.example.com/ou=Users,ou=Directory,o=IC?cn?sub?(objectclass=Person)
Require ldap-filter (|(cn=*,ou=Managers,ou=Users,ou=Directory,o=IC)(cn=*,ou=Employees,ou=Users,ou=Directory,o=IC)(cn=*,ou=Misc,ou=Users,ou=Directory,o=IC))
AuthLDAPBindDN cn=binder,ou=Admin,ou=Directory,o=IC
AuthLDAPBindPassword password
我试过了:
- 需要有效用户
- 各种 AuthLDAPURL
- 仅对我想要的组要求 ldap-group。
- 其他搜索需要 ldap-filter,例如其中不包含“cn=*”。
一切要么不让我进去,要么抛出 500 错误,要么让 ou=Outsiders、ou=Users、ou=Directory、o=IC 的成员进去。
那么,如何将 ou=Outsiders、ou=Users、ou=Directory、o=IC 的成员排除在我的文件夹之外?
答案1
假设我有 2 个具有以下结构的组:
dn: ou=IT,dc=domain,dc=com
ou: IT
objectClass: top
objectClass: organizationalUnit
dn: cn=bob,ou=IT,dc=domain,dc=com
cn: bob
sn: Bob
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
userPassword:: xx
...
dn: ou=HR,dc=domain,dc=com
ou: HR
objectClass: top
objectClass: organizationalUnit
dn: cn=alice,ou=HR,dc=domain,dc=com
cn: alice
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword:: xx
...
您可以通过执行以下操作列出 IT 部门或 HR 部门的所有用户:
$ ldapsearch -W -x -D "cn=binder,dc=domain,dc=com" \
'(&(|(ou:dn:=IT)(ou:dn:=HR))(cn=*))'
ldapsearch
因此,您应该首先从命令行尝试:
$ ldapsearch -W -x -D "cn=binder,ou=Users,ou=Directory,o=IC" \
'(&(|(ou:dn:=Managers)(ou:dn:=Employees)(ou:dn:=Misc))(cn=*))'
如果有效,请mod_authz_ldap
按如下方式编辑配置文件:
Require ldap-filter &(|(ou:dn:=Managers)(ou:dn:=Employees)(ou:dn:=Misc))(cn=*)