如何在Apache中允许访问目录但不允许访问子目录?

如何在Apache中允许访问目录但不允许访问子目录?

我已经问过这个问题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

相关内容