![如何在Apache中允许访问目录但不允许访问子目录?](https://linux22.com/image/40409/%E5%A6%82%E4%BD%95%E5%9C%A8Apache%E4%B8%AD%E5%85%81%E8%AE%B8%E8%AE%BF%E9%97%AE%E7%9B%AE%E5%BD%95%E4%BD%86%E4%B8%8D%E5%85%81%E8%AE%B8%E8%AE%BF%E9%97%AE%E5%AD%90%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我已经问过这个问题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