限制对apache中子目录的访问,使父目录保持打开状态

限制对apache中子目录的访问,使父目录保持打开状态

我在 apache2.4 上设置一个 webdav,我需要我的顶级目录 /webdav可以自由打开,并且子目录需要/webdav/projects/secretproject用密码保护。

我现在的样子dav.conf是这样的

Alias /webdav /var/webdav/
Alias /secretproject /webdav/projects/secretproject/ 
<Location /webdav/projects/secretproject >
   AuthType Basic
   AuthName "TEST - TEST"
   AuthBasicProvider file
   AuthUserFile "/etc/apache2/auth/test.passwd"

   <RequireAll>
       Require all granted
       Require valid-user
    </RequireAll>
</Location>

 <Location /webdav >
     DAV on
     Options +Indexes
     <LimitExcept GET HEAD OPTIONS PROPFIND>
          Deny from all
      </LimitExcept>
      Require all granted
 </Location>

 <Directory /var/webdav/ >
      Options Indexes 
      FollowSymLinksAllow from all
 </Directory>

我理解权限从最通用//webdav最具体进行合并/webdav/projects/secretproject

根据这个问题

https://unix.stackexchange.com/questions/404034/restrict-access-to-subdirectory-in-apache

我的权限需要被强制<RequireAll>执行Require valid-user,因此子目录被锁定(否则将Require all granted推翻任何限制)

不幸的是,此配置对子目录没有限制,我想了解原因。有关如何限制子目录的任何建议也很有帮助

答案1

我刚刚测试了这个(apache2 2.4.18)并发现只要我更改LocationDirectory这样,基本身份验证就可以起作用:

<Directory /var/webdav/projects/secretproject >
</Directory>

我认为这是因为 的Directory指令/var/webdav覆盖了Locationprojects/secretproject 的指令,但我对此并不确定。

此外,您的配置中有一个小拼写错误,正确的应该是:

<Directory /var/webdav/ >
     Options Indexes FollowSymLinks
     Allow from all
</Directory>

但是由于您的 apache2 正在运行,我认为这只是将其放在 serverfault 上的复制粘贴错误。希望这能有所帮助!

答案2

正如前面的评论所指出的,在auth没有位置的目录中实现解决了这个问题

Alias /webdav /var/webdav/
Alias /secretproject /webdav/projects/secretproject/ 
<Directory /webdav/projects/secretproject >
   AuthType Basic
   AuthName "TEST - TEST"
   AuthBasicProvider file
   AuthUserFile "/etc/apache2/auth/test.passwd"
<RequireAll>
   Require all granted
   Require valid-user
</RequireAll>
</Directory>

<Directory /var/webdav/ >
    DAV on
    Options +Indexes
    FollowSymLinks from all
    <LimitExcept GET HEAD OPTIONS PROPFIND>
        Deny from all
    </LimitExcept>
    Require all granted
  </Directory>

感谢您的帮助

相关内容