使用<files>拒绝某个目录中的所有文件

我试图保护Apache中的mod_userdir模块..

目前我的用户网站的目录结构是

/家庭/ {}用户/域/ {域} /的public_html /网站

问题是,我的一些用户存储不应该被存储在/ domains /目录(私人文件)中的文件,但是他们这样做,而不是让他们移动它们。

基本上我拒绝访问/ {域} /中的所有目录,除了public_html,但是,仍然可以查看文件。

这是我的usermod.confconfiguration。

<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> 

你可以看到我试图删除/ {域} /中的文件的访问,但是这只是没有工作。

任何帮助,将不胜感激。

也许你的问题在FilesMatch指令中; FilesMatch使用正则expression式来匹配指令,因此,为了获得你想要的,你应该写:

 <FilesMatch "/home/.*/domains/.*/.*"> Order deny,allow Deny from all </FilesMatch> 

我不相信你可以在任何Files指令中指定path。 而且它看起来并不像你真的需要FilesMatch指令,因为你并没有真正使用任何复杂的模式来要求正则expression式。 我通常把我的文件指令放在目录中,但是为了简单起见。

这似乎适用于我的设置类似于你的。 在/ var / www /域下面有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>