Назад | Перейти на главную страницу

Deny all files in a certain directory using <files></files>

Я пытаюсь защитить модуль mod_userdir в apache ..

В настоящее время структура каталогов для сайтов моих пользователей

/ home / {user} / domains / {domain} / public_html / site

Проблема в том, что некоторые мои пользователи хранят файлы, которые не должен хранятся в каталоге / domains / (частные файлы), но они хранятся, и id скорее обходит его, чем заставляет их перемещать.

В основном я запретил доступ ко всем каталогам в / {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} / с помощью, но это просто не работает.

Любая помощь будет оценена.

Я не верю, что вы можете указать путь в любой из директив 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>

Возможно, ваша проблема в директиве FilesMatch; FilesMatch использует регулярное выражение для соответствия директивам, поэтому, чтобы получить то, что вы хотите, вы должны написать:

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