Apache UserDir 受 LDAP 密码保护(不想要“public_html”)

Apache UserDir 受 LDAP 密码保护(不想要“public_html”)

我在 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/~用户名

但身份验证指向一个硬编码组(在本例中为:group-test-1)。任何属于该组的用户都可以访问其他用户目录。我也可以使用对某些用户进行硬编码Require ldap-user foobar,但我希望此要求对于访问网站的用户来说是动态的。

就像是:Require ldap-user %username

有没有办法获取 URL 中的用户名并将其用作此参数的变量?

谢谢。

答案1

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

目錄匹配,其中有一个与此非常相似的示例。您需要 Apache 2.4.8 或更高版本才能运行。

相关内容