我正在尝试保护 apache 中的 mod_userdir 模块。
目前我的用户网站的目录结构是
/home/{用户}/域/{域}/public_html/site
问题是,我的许多用户存储的文件不应该存储在 /domains/ 目录 (私有文件) 中,但是他们确实这样做了,我宁愿解决这个问题,也不愿让他们移动它们。
基本上我已经拒绝访问 /{domain}/ 中的所有目录(public_html 除外),但是仍然可以查看文件。
这是我的 usermod.conf 配置。
<IfModule mod_userdir.c>
UserDir /home/*/domains
UserDir disabled root
<Directory /home/*/domains/*/*>
Order allow,deny
Deny from all
</Directory>
<FilesMatch /home/*/domains/*/*>
Order deny,allow
Deny from all
</FilesMatch>
<Directory /home/*/domains/*/public_html>
Order allow,deny
Allow from all
</Directory>
<Directory /home/*/domains>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
您可以看到我如何尝试使用 删除对 /{domain}/ 中的文件的访问权限,但这不起作用。
任何帮助,将不胜感激。
答案1
也许您的问题出在 FilesMatch 指令中;FilesMatch 使用正则表达式来匹配指令,因此,为了获得您想要的结果,您应该这样写:
<FilesMatch "/home/.*/domains/.*/.*">
Order deny,allow
Deny from all
</FilesMatch>
答案2
我不认为您可以在任何 Files 指令中指定路径。而且看起来您似乎并不需要 FilesMatch 指令,因为您实际上并没有使用任何复杂的模式来要求正则表达式。不过,为了简单起见,我通常会将 Files 指令放在目录中。
对于我来说,这似乎适用于与您的类似的设置。在 /var/www/domains 下有 1/ 2/ 和 3/,每个都有各种 html 文件。现在都无法访问。
<Directory /var/www/domains/*/>
Options None
AllowOverride None
Order Allow,Deny
Deny from All
<Files *>
Order Allow,Deny
Deny from All
</Files>
</Directory>