В этой статье будут рассмотрены простые способы ограничения доступа к ресурсам, размещенным на веб сервера apache
Установка пароля
За работу того, что будет описано ниже отвечает опция apache
AllowOverride
Код: Выделить всё
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
Она в директории ищет специальный файл, в котором могут содержаться дополнетельные настройки. Таким образом в данной директории эта директива должны быть включена
Код: Выделить всё
<Directory "/usr/home/www/admin/">
AllowOverride All
</Directory>
Сохраняем, перезапускаем apache. Теперь можно приступить к созданию самого файла - идём в ту директорию, о которой мы рассказали конфигу, и создаём там файл - его имя строго предопределено!
Открываем этот файл и приводим к виду
Код: Выделить всё
AuthUserFile /usr/home/www/admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Test pass of go"
AuthType Basic
<limit GET POST>
require user roman
</limit>
Ну вроде как тут всё понятно
1) мы задаём путь к файлу с паролями
2) сообщение при авторизации и метод
3) определяем каким пользователям можно входить - так же можно разрешить всех пользователей, которые прошли авторизацию - для этого строку
require user roman следует заменить на
require valid-user
Сохраняем, закрывем и создаём файл с паролями, раз уж мы его упомянули
Ntgthm надо вписать в него пароли. Для этого существует специальная утилитка, синтаксис которой весьма прост - утилита, файл куда сохранить, логи, пароль:
Код: Выделить всё
www# /usr/local/sbin/htpasswd -b /usr/home/www/admin/.htpasswd roman 123123
Adding password for user roman
Проверим что получилось
Всё. Перезапускать apache при этом не надо - этот файл он будет сканировать как только кто-то обратится к этой папке
Хочу заметить, что содержимое файла .htaccess вполне можно было вписать и в сам конфиг apache в раздел <Directory> - такой способ увеличил бы скорость работы, но при внесении изменений пришлось бы перезапускать вебсервер
Ограничение по IP
Иногда бывают ситуации, когда надо просто разрешить одному ИП адресу - в этом случае морочиться с паролем не совсем хочется, и тогда можно ограничить доступ по IP адресу. В этом случае файл
.htpasswd нам не нужен, а
.htaccess имел бы следующий вид
Код: Выделить всё
<Files upsset.cgi>
deny from all
allow from 192.168.1.42
</Files>
Вот так мы ограничили доступ к файлу
upsset.cgi одним IP
192.168.1.42, и соответственно доступ к папке будет выглядеть как
Ну а что сделать, если нам надо запретить один ИП, и разрешить все остальные? Да просто поменять местами
Хочу заметить, что содержимое файла .htaccess вполне можно было вписать и в сам конфиг apache в раздел <Directory> - такой способ увеличил бы скорость работы, но при внесении изменений пришлось бы перезапускать вебсервер
NTLM авторизация
Но ведь у нас есть домен, и правильнее будет авторизоваться там - возразите вы, и будите правы. О том, как это сделать написано вот тут
http://corp.stniva.ru/forum/viewtopic.p ... &t=44#p298