使用以下方式拒绝特定目录中的所有文件

使用以下方式拒绝特定目录中的所有文件

我正在尝试保护 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>

相关内容