Apache2

限制對 apahe 中子目錄的訪問,使父目錄保持打開狀態

  • November 9, 2018

我在 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將推翻任何限制)

不幸的是,子目錄不受此配置的限制,我想了解原因。關於如何限制子目錄的任何建議也很有幫助

我剛剛對此進行了測試(apache2 2.4.18),發現只要我更改LocationDirectory這樣,基本身份驗證就可以工作:

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

我認為這是因為Directoryfor 的指令/var/webdav覆蓋了Locationprojects/secretproject 的指令,但我對此不確定。

此外,您在該配置中有一點錯字,它應該正確讀取:

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

但是由於您的 apache2 正在執行,我認為這只是將其放在 serverfault 上的複制粘貼錯誤。希望這可以幫助!

引用自:https://serverfault.com/questions/938863