Apache-2.4

受 LDAP 密碼保護的 Apache UserDir(不想要“public_html”)

  • November 29, 2020

我在 CentOS 7 上執行 Apache 2.4.6-93。我需要的是:每個使用者都應該有自己的主目錄(通過 UserDir 實現),但目錄需要密碼保護。一個使用者應該不能看到另一個使用者的目錄。

我可以通過這種方式使用 AD 設置身份驗證:

<Directory "/mnt/shared/apache_userdir/*/private_html">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
AuthName "Please Login"
AuthBasicProvider ldap
AuthType Basic
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN On
AuthLDAPURL ldap://x.x.x.x:389/DC=example,DC=org?sAMAccountName?sub?(objectClass=*)
AuthLDAPBindDN CN=binduser,OU=someou,OU=anotherou,DC=example,DC=org
AuthLDAPBindPassword somepassword
Require ldap-group CN=group-test-1-,OU=someou,OU=anotherou,DC=example,DC=org

這是有效的。使用者可以使用https://example.com/~username訪問他們的主目錄

但是身份驗證指向一個硬編碼的組(在本例中為:group-test-1)。作為該組成員的任何使用者都將訪問其他使用者目錄。我也可以使用 對某些使用者進行硬編碼Require ldap-user foobar,但我希望這個要求對於訪問該網站的使用者來說是動態的。

就像是:Require ldap-user %username

有沒有辦法在 URL 中獲取使用者名並將其用作此參數的變數?

謝謝。

<DirectoryMatch "/mnt/shared/apache_userdir/(?<username>[^/]+)/private_html">
 ...
 Require ldap-user %{env:MATCH_USERNAME}
</DirectoryMatch>

請參閱DirectoryMatch,其中有一個與此非常相似的範例。您需要 Apache 2.4.8 或更高版本才能工作。

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