Intereting Posts
Прочитайте все значения определенного столбца файла и сохраните его в другом файле При установке виртуального бокса на 64-разрядную машину kali linux 2.0 мне нужно установить среду chroot? Как сохранить текущую команду на zsh? Добавить другой под-уровень в подменю KDE в действиях / службах дельфинов? Удаленная SSH-команда выходит из строя только в сценарии оболочки с ошибкой: «Нет такого файла или каталога» Как я могу отобразить приглашение режима вставки слева при использовании zsh с плагином в режиме vi? Как найти процессор и использование памяти для дочерних процессов Командная строка: как я могу подключиться к беспроводной сети без запуска процесса автоконфигурации DHCP? Игнорировать указанные абсолютные каталоги с завершением табуляции? Неверный синтаксис в sql Понимание% CPU при работе с верхней командой lilo, установить в target-mbr из другой системы Установка драйверов принтера Canon Pixma mg2400 на Manjaro / Arch? Только цифры sh и grep Что может привести к тому, что каталоги в / var / run исчезнут / не будут созданы при запуске? (CentOS 7.3)

Как настроить аутентификацию для личного userdir в Apache?

Я установил аутентификацию в своем личном public_html в моем home каталоге, но это не имеет никакого эффекта. Т.е., я должен получить всплывающее окно с просьбой о моих учетных данных, но этого не происходит. Аутентификация отлично работала с каталогом в корневом каталоге сервера, и она работала нормально. Теперь я реструктурирую сервер.

Вот еще несколько деталей. Есть несколько побочных проблем и вопросов, связанных с конфигурационным файлом, который я выделяю полужирным шрифтом . Если ты тоже поможешь мне с ними, это будет здорово.

  • У меня есть основной каталог HTTP в /var/www/html и тот же для HTTPS.
  • Там только один файл, index.html со ссылкой на мой личный URL ~tomas . Он работает нормально. Я использую userdir mod для отображения ~tomas .
  • У меня также есть личный каталог cgi-bin , и CGI работают нормально, но я хотел бы, чтобы URL ~tomas/cgi-bin показывал список каталогов , который по какой-то причине не работает, и я получаю 403 Forbidden.
  • Я хочу, чтобы основной каталог был доступен как в HTTPS, так и в HTTP и без авторизации. Но как только клиент запрашивает одну из личных каталогов public_html через ~user , доступ должен быть аутентифицирован, а аутентификация должна проходить через HTTPS . Поэтому HTTP необходимо переключить на HTTPS. Я уже настроил и протестировал HTTPS-объекты, но в этом контексте еще не настроен. Поэтому, если вы можете дать мне совет по этому вопросу, это будет здорово. Особенно, если вы знаете стандартный способ интеграции этих двух (принудительная проверка подлинности HTTPS +). Если это имеет значение, у меня нет полного доменного имени.

Однако главный вопрос заключается в том, как заставить аутентификацию работать для ~user , даже по HTTP.

Я поместил все конфиги в userdir.conf и я предполагаю, что проблема заключается в использовании подстановочного знака в /home/*/public_html . Однако я новичок в Apache. Вот userdir.conf .

 <IfModule mod_userdir.c> UserDir "public_html" UserDir disabled UserDir enabled tomas <Directory "/home/*/public_html"> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Require all granted </Limit> <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> AuthType Basic AuthName "Personal HTML" AuthUserFile "/usr/share/apache2/passwd/passwords" Require valid-user SSLOptions +StdEnvVars </Directory> <Directory "/home/*/public_html/cgi-bin"> Options ExecCGI Indexes SetHandler cgi-script </Directory> </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet 

Если у вас есть какие-либо комментарии к этому файлу конфигурации или о моем подходе к Apache в целом, сделайте комментарий.

Ключ – это директива Limit . Ключ присутствует в разделе <Limit> Директива core страницы Apache doc mod mod.

При использовании директив <Limit> или <LimitExcept> директивой Require , обратите внимание, что первый запрос на успех разрешает запрос независимо от наличия других директив Require .

Как оказалось, первое Require которое соответствует рассматриваемому делу, решает, как оно обрабатывается. С конфигурацией из моего вопроса, то есть:

  <Limit GET POST OPTIONS> Require all granted </Limit> <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> AuthType Basic AuthName "Personal HTML" AuthUserFile "/usr/share/apache2/passwd/passwords" Require valid-user 

с простым запросом GET, это Require all granted во второй строке листинга выше, которое делает вещь. AuthType Basic и другие строки под ним являются мертвым кодом. Правильный путь:

  <Limit GET POST OPTIONS> AuthType Basic AuthName "Personal HTML" AuthUserFile "/usr/share/apache2/passwd/passwords" Require valid-user </Limit> <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> 

В стороне, вот случай, когда директива Limit игнорируется.

  Require all granted <Limit GET POST OPTIONS> AuthType Basic AuthName "Personal HTML" AuthUserFile "/usr/share/apache2/passwd/passwords" Require valid-user </Limit> <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> 

Первая строка успешно завершена и авторизует запрос.