我已经问过这个问题apache 邮件列表但我没有得到我想要的答案。
我想根据 IP (192.168.1.2 192.168.1.7) 允许两个用户使用目录“ /var/www/html/ldap”:
<Directory /var/www/html/ldap>
Order allow,deny
Allow from 192.168.1.2 192.168.1.7
Satisfy any
AuthName "LDAP Authentication"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPauthoritative off
AuthLDAPURL ldap://192.168.1.3/dc=example,dc=com?uid?sub?(objectClass=*)
Require valid-user
</Directory>
但我不想允许 192.168.1.7 存在子目录(我希望只允许 192.168.1.2 存在):
我尝试添加:
<Directory /var/www/html/ldap/manager>
Order allow,deny
Allow from 192.168.1.2
Satisfy any
AuthName "LDAP Authentication"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPauthoritative off
AuthLDAPURL ldap://192.168.1.3/dc=example,dc=com?uid?sub?(objectClass=*)
Require valid-user
</Directory>
但似乎192.168.1.7可以到达manager目录,因为它是ldap目录的一部分,我该如何禁止呢?
更新:
作为拉扎建议我尝试过类似的事情:
对于主目录:
<Directory /var/www/html/ldap>
Order allow,deny
Allow from 192.168.1.2 192.168.1.7
Satisfy any
AuthName "LDAP Authentication"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPauthoritative off
AuthLDAPURL ldap://192.168.1.3/dc=example,dc=com?uid?sub?(objectClass=*)
Require valid-user
</Directory>
对于子目录:
<Directory /var/www/html/ldap/manager>
Order Deny,Allow
Deny From All
Allow From 192.168.1.2
Satisfy any
AuthName "LDAP Authentication"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPauthoritative off
AuthLDAPURL ldap://192.168.1.3/dc=example,dc=com?uid?sub?(objectClass=*)
Require valid-user
</Directory>
笔记:
我不想被要求对两个目录(主目录和子目录)上的 192.168.1.2 和 192.168.1.7 进行身份验证(LDAP AUTH)。
答案1
使用重写规则来阻止 192.168.1.7 系统访问子目录怎么样?
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.7$ [NC]
RewriteCond %{REQUEST_URI} ^/ldap/manager/.* [NC]
RewriteRule ^(.*)$ - [R=404,L]
根据原始答案进行编辑;现在这会发回“禁止”错误代码。
答案2
您可以.htaccess
使用以下选项在您不想显示列表的目录中创建文件。
Order Deny,Allow
Deny From All
Allow From 192.168.1.2
脚步:
cd /var/www/html/ldap/manager
vi .htaccess (use your favorite editor)
copy/past the following :
Order Deny,Allow
Deny From All
Allow From 192.168.1.2