Аутентификация · 4 min read · Jan 04, 2026
.htaccess Аутентификация На Подкаталогах
.htaccess Аутентификация На Подкаталогах
Автор: Наяр Ахмад
Контакт: nayyares AT gmail DOT com
Домашняя страница: www.cbtcandy.org
Посвящение: Баджи, за все те усилия, которые она сделала для меня.
Предисловие:
.htaccess используется для изменения конфигурации на уровне каталога, этот файл может содержать одну или несколько директив, которые будут применены к каталогу, содержащему файл .htaccess.
.htaccess — это популярное название этого файла для изменения конфигурации, вы можете изменить это имя по умолчанию, изменив параметр AccessFileName в конфигурационном файле Apache. т.е.
AccessFileName .anynameВ этом руководстве я возьму фиктивный сценарий с двумя параллельными подкаталогами и реализую аутентификацию по паролю для обоих из них. Это означает, что только те пользователи, которые имеют правильное имя пользователя и пароль, могут получить доступ к этим каталогам.
Итак, начнем :)
Здесь я предполагаю, что ваш каталог DocumentRoot — это /var/www/html, но если у вас есть конфигурация VirtualHost или Apache настроен на какой-то другой корневой каталог, вы можете настроить это в соответствии с вашей ситуацией.
Примечание: Я возьму два фиктивных имени для этих каталогов как test-dir1 и test-dir2.
1 Создание каталога:
$ cd /var/www/html$ mkdir test-dir1$ mkdir test-dir22 Создание тестового HTML файла:
Создание html файла в первом каталоге.
$ cd /var/www/html/test-dir1$ cat > index.htm| ТЕСТОВАЯ СТРАНИЦА В TEST-DIR1. |
Создание html файла во втором каталоге.
$ cd /var/www/html/test-dir2$ cat > index.htm| ТЕСТОВАЯ СТРАНИЦА В TEST-DIR2. |
3 Просмотр тестовых страниц:
Теперь вы можете просмотреть и протестировать, доступны ли страницы или нет, открыв любой веб-браузер, мне нравится Firefox (он крут :) ) и введите:
Это отобразит тестовую страницу первого каталога, а
отобразит вторую тестовую страницу в test-dir2.
Если вы можете увидеть обе страницы, это означает, что вы почти готовы к использованию .htaccess.
4 Создание файла .htaccess:
$ cd /var/www/html/test-dir1$ vi .htaccessЗапишите следующие строки в этот файл:
| AuthName "Только авторизованные пользователи." AuthType Basic AuthUserFile /etc/httpd/conf/.htpasswd require user testusr |
Теперь я объясню, какие магические строки мы написали в этом файле:
Параметр AuthName просто определяет заголовок окна ввода пароля, когда пользователь входит в систему, в то время как AuthType сообщает серверу, какой тип обработки используется, а Basic является наиболее распространенным и вполне достаточным для почти любой цели. AuthUserFile используется для определения местоположения файла .htpasswd, этот файл содержит пароль пользователя, который будет аутентифицирован в файле .htaccess. require user используется для идентификации доверенного пользователя, если есть более одного доверенного пользователя, вы можете указать их имена в списке, разделенном пробелами.
Теперь, чтобы защитить test-dir2 с помощью .htaccess, нам нужно скопировать его из test-dir1 в test-dir2 ** с помощью следующей команды:
$ cp /var/www/html/test-dir1/.htaccess /var/www/html/test-dir2/5 Создание пользователя:
Здесь мы создадим тестового пользователя, чтобы проверить наш .htaccess:)
$ adduser testusr$ passwd testusr6 Информирование Apache о пользователях:
Теперь мы должны проинформировать Apache о пользователе и его пароле, но прежде чем перейти к этому шагу, у меня есть социальная обязанность, т.е. объяснить разницу между установкой Apache через RPM и из исходников. :) Если вы установили Apache из RPM, то он установит все связанные команды в вашем /usr/local/bin, так что проблем нет, вы можете использовать команду htpasswd где угодно в вашей системе, но если вы установили Apache из исходников, вам нужно найти каталог bin Apache, чтобы выполнить команду htpasswd. В этом HowTo я дам оба способа, вот они:
$ htpasswd -c /etc/httpd/conf/.htpasswd testusrВышеуказанная команда будет работать, если у вас есть htpasswd в вашем /usr/local/bin, и это происходит, если вы установили Apache из RPM. /etc/httpd/conf/.htpasswd — это местоположение файла, который будет содержать пароль аутентифицированного/доверенного пользователя.
ИЛИ
$ cd /apache/bin/$ ./htpasswd -c /etc/httpd/conf/.htpasswd testusrВышеуказанные команды корректны, если вы установили Apache из исходников, $ cd /apache/bin можно настроить в соответствии с вашей системой, так как, возможно, вы установили его где-то еще.
7 Права доступа к файлу .htpasswd:
Нам нужно установить права доступа к файлу .htpasswd и сделать пользователя apache владельцем этого файла.
$ chown apache.apache /etc/httpd/conf/.htpasswd8 Редактирование httpd.conf:
Теперь нам нужно отредактировать httpd.conf, так как Apache должен быть проинформирован о .htaccess, здесь мы изменим AllowOverride All | none на Authconfig, теперь есть два случая: один, если вы хостите только один сайт, и другой, если у вас есть VirtualHost, вот первый случай:
В этом случае у вас будет только один тег Directory в файле httpd.conf, так как мы хостим только один сайт, поэтому мы отредактируем тег
| |
Теперь для второго случая, когда у нас несколько сайтов, т.е. VirtualHost:
| |
9 Перезапуск Apache:
Теперь вам нужно перезапустить сервер Apache, чтобы перезагрузить конфигурацию.
Для системы на основе RPM:
$ service httpd restartДля системы на основе исходников, настройте путь к каталогу bin вашего Apache.
$ /apache/bin/apachectl restart10 Тестирование:
Теперь все готово к тестированию, снова откройте ваш любимый браузер и попробуйте открыть следующие ссылки:
и
Примечание: Когда вы просматриваете эти ссылки, вас попросят ввести имя пользователя и пароль, как только вы их предоставите, вас перенаправит на тестовую страницу. Но как только вы войдете в один каталог, вам не потребуется вводить имя пользователя и пароль для другого тестового каталога, так как Apache не будет запрашивать имя пользователя и пароль снова и снова для каталогов одного уровня или подкаталогов. Итак, как только вы аутентифицированы, дочерние и параллельные каталоги открыты для использования. Но если вы все же хотите их проверить, используйте текстовый браузер links, именно это я делаю для их проверки.*
Get new posts in your inbox
No spam. Unsubscribe anytime.