Идентификация и ограничение доступа в Apache


Директива Satisfy определяет способ взаимодействия директив идентификации (используемые для защиты паролем) с директивами доступа (например, Allow/Deny). С ее помощью вы, например, можете заставить Apache выполнять те запросы, которые удовлетворяют только требованиям идентификации, либо только требованиям доступа. Или вы можете сделать, чтобы запрос удовлетворял всем требованиям.

Директива Satisfy принимает два значения:
  1. Satisfy Any Пропускает запрос, если выполнено любое из требований (идентификация или проверка доступа).
  2. Satisfy All Пропускает запрос, только если оба требования выполнены (и идентификация и проверка доступа).
Для примера возьмем следующий сценарий:

<Directory /home/www/site1/private>
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
</Directory>
При такой конфигурации вашим пользователям необходимо будет пройти процедуру идентификации.
Но предположим, вы хотите, чтобы пользователи из локальной сети имели полный доступ к каталогу, без необходимости ввода пароля. Для такого сценария необходимо использовать следующую конфигурацию:
<Directory /home/www/site1/private>
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
Order allow, deny
Allow from 172.17.10
Satisfy any
</Directory>
Такая конфигурация заставит всех "внешних" пользователей пройти процедуру идентификации, а тех, кто пришел с локальной сети, пропустит. Apache предоставит им полный доступ к каталогу private без идентификации.
Все вышеописанное также работает и с подкаталогами вашего защищенного каталога. Допустим, вам нужен незакрытый подкаталог nonprotect, который находится в каталоге private. Причем к каталогу nonprotect должен иметь доступ любой пользователь без ввода какого-либо пароля. Делается это следующим образом:
<Directory /home/www/site1/private/nonprotect>
Order allow,deny
Allow from all
Satisfy any
</Directory>
И, наконец, если у вас есть очень секретный каталог, тогда вы можете ограничить к нему доступ, как с помощью пароля, так и с помощью проверки IP пользователя.
<Directory /home/www/site1/super-secret>
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
Order allow,deny
Allow from 172.17.10
Satisfy all
</Directory>
В приведенном выше примере директива "Order allow, deny" по умолчанию блокирует доступ для всех, директива "Allow" разрешает доступ пользователям из локальной сети, а директива "Satisfy all" требует проверки как IP, так и пароля.
Для дополнительной информации по директиве Satisfy смотрите документацию Apache.

Опубликовано в: Советы Январь 6, 2007

34 Комментариев »

  1. очень интересная статья (перевод статьи?), не знал о такой нужной и хорошей директиве. Как я понимаю, она находится в стандартной поставки Apache?

    Комментарий от Vladimir E. — Январь 6, 2007 @ 8:24 pm

  2. да

    Комментарий от RedStalker_Mike — Январь 7, 2007 @ 10:27 pm

  3. Да у меня в магазине все так и работает!

    Комментарий от Капсула — Декабрь 8, 2007 @ 10:29 am

  4. Полезный метод закрытия данных, хотя я пользуюсь более простейшим хтацесс!

    Комментарий от Раскрутка сайтов — Декабрь 8, 2007 @ 10:30 am

  5. Присоединяюсь… вещь полезная..

    Комментарий от web-дизайн сайтов — Декабрь 27, 2007 @ 3:23 am

  6. Order allow,deny это только опция, она как-бы говорит апачу что надо будет делать в следующей строке.. а так как там нечего нет, апач будет периодически пропускать… блокирует как-раз deny from all или deny from 127.0.0.1 .. у
    апача это вопще слабое место, так как он плохо воспринимает всякого рода не определенности (как женщина прям) :) ему надо либо всё разрешать, либо все блокировать, ну или жестко все прописывать, что можно, а что нельзя..

    Комментарий от xtoto — Февраль 4, 2008 @ 3:51 am

  7. Присоединюсь к предыдущему комменту: .htaccess по месту проще, понятнее и быстрее. Хотя для определенных задач указанный способ наверное рульней

    Комментарий от аренда автокранов — Февраль 28, 2008 @ 7:25 pm

  8. спасибо, но все таки удобнее черер хтакцесс

    Комментарий от manual — Июнь 9, 2008 @ 10:22 am

  9. а я даже не знал такого

    Комментарий от iutoledo — Июнь 27, 2008 @ 3:18 pm

  10. супер! спасибо! классная инфа! Респект!!
    ______________
    /go.php?url=/go.php?url=http://rogyl.ru/

    Комментарий от андрюха — Август 29, 2008 @ 12:48 pm

  11. За ограничение доступа к секретный каталог отдельное спасибо, давно хотел узнать как это можно настроить

    Комментарий от Альби — Сентябрь 30, 2008 @ 12:18 pm

  12. так и делаю, молодым все подробно расписали, молодцы

    Комментарий от Милана — Октябрь 26, 2008 @ 7:27 pm

  13. Я вот с этим Allow/Deny так и не разобрался до конца.

    Комментарий от Милан — Ноябрь 7, 2008 @ 1:31 pm

  14. Литературку почитаите соответствующую

    Комментарий от makhno666 — Ноябрь 17, 2008 @ 6:36 pm

  15. Все перелопатил не нашел ничего

    Комментарий от prv — Ноябрь 17, 2008 @ 6:37 pm

  16. Допустим это не сработало ? альтернатива есть ?

    Комментарий от pcix — Ноябрь 17, 2008 @ 6:39 pm

  17. И, наконец, если у вас есть очень секретный каталог, тогда вы можете ограничить к нему доступ, как с помощью пароля, так и с помощью проверки IP пользователя.
    AuthUserFile /home/www/site1-passwd

    Комментарий от bufc11 — Ноябрь 29, 2008 @ 5:14 pm

  18. Блин тут одни спам комментарии.

    Комментарий от Дмитрий — Декабрь 11, 2008 @ 2:52 pm

  19. Хорошая вещь.

    Комментарий от Roma — Декабрь 11, 2008 @ 4:35 pm

  20. Да походу просто качественно перевели.

    Комментарий от Дмитрий — Декабрь 11, 2008 @ 10:12 pm

  21. А эта директива требует наличия каких-либо модулей apache?
    Может быть, глупый вопрос, но у меня не работает….

    Комментарий от Странное место — Декабрь 26, 2008 @ 4:54 am

  22. Благодарю за истракшн..давно хочу подобное поставить на сайт

    Комментарий от Дурулекс — Январь 9, 2009 @ 3:46 am

  23. “И, наконец, если у вас есть очень секретный каталог, тогда вы можете ограничить к нему доступ, как с помощью пароля, так и с помощью проверки IP пользователя.”
    Отлично просто..давно подыскивал скрипт…

    Комментарий от Мажоррр — Январь 10, 2009 @ 2:09 am

  24. Да уж…такой скриптик в работе не помешает эт точно

    Комментарий от Альфон — Январь 11, 2009 @ 1:30 am

  25. Отличный инстракшн, жаль только что уже по-другому всё наворотил но в будущем буду пользоваться вашим способом.

    Комментарий от Домовой — Январь 24, 2009 @ 3:24 am

  26. Вы про ограничение доступа или чего ?

    Комментарий от Кришна — Январь 26, 2009 @ 9:38 am

  27. А если у пользователя динамический Ай-Пи ?

    Комментарий от Эстонец — Январь 28, 2009 @ 1:52 am

  28. Эстонец , можно по маске Банить, но так можно сразу целый город забанить , или страну :)

    Комментарий от Просто Вася — Январь 28, 2009 @ 10:02 pm

  29. Директива Satisfy отвечает не только за этот параметр..так - для общего развития

    Комментарий от ГригоровиЧ — Январь 31, 2009 @ 12:19 am

  30. Order allow,deny это только опция, она как-бы говорит апачу что надо будет делать в следующей строке.. а так как там нечего нет, апач будет периодически пропускать… блокирует как-раз deny from all или deny from 127.0.0.1 .. у

    Комментарий от Зарина — Февраль 1, 2009 @ 10:42 pm

  31. Полезный метод закрытия данных, хотя я пользуюсь более простейшим хтацесс!

    Комментарий от Елизавета — Февраль 12, 2009 @ 11:51 pm

  32. Order allow,deny это только опция, она как-бы говорит апачу что надо будет делать в следующей строке.. а так как там нечего нет, апач будет периодически пропускать… блокирует как-раз deny from all или deny from 127.0.0.1 .. у
    апача это вопще слабое место, так как он плохо воспринимает всякого рода не определенности (как женщина прям) :) ему надо либо всё разрешать, либо все блокировать, ну или жестко все прописывать, что можно, а что нельзя..

    Комментарий от Гаврила — Февраль 13, 2009 @ 11:30 pm

  33. А как сделать так, чтобы пользователи из локальной сети имели полный доступ к каталогу, без необходимости ввода пароля?

    Комментарий от Юрия — Март 21, 2009 @ 12:09 am

  34. А можно ли с помощью директивы Satisfy, например, заставить Apache выполнять те запросы, которые удовлетворяют только требованиям идентификации?

    Комментарий от Елизавета — Апрель 5, 2009 @ 10:06 am

Оставить комментарий

You must be logged in to post a comment.

© apachedev.ru, 2005-2011