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

Включение или отключение защиты паролем Apache в зависимости от запрашиваемого URL

У нас есть сценарий CGI в Apache 2.2.3 для просмотра файлов журнала на нашем сервере системного журнала. Скрипт называется так:

http: //myserver/cgi-bin/logView.cgi? /var/log/syslog-ng/a/b/c/20100923.log

Кто-нибудь знает, можно ли наложить контроль стиля .htaccess на доступ к этому CGI, но только если просматриваются определенные пути? Мы хотели бы позволить любому сотруднику нашей организации просматривать такие URL-адреса, как:

http: //myserver/cgi-bin/logView.cgi? /var/log/syslog-ng/public/log/201000923.log

но если кто-то идет в:

http: //myserver/cgi-bin/logView.cgi? /var/log/syslog-ng/private/log/201000923.log

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

Спасибо заранее за любые предложения!

Богатый

В конце концов я нашел решение.

ScriptAlias /log-cgi-bin/ "/var/www/log-cgi-bin/"
ScriptAlias /secure-log-cgi-bin/ "/var/www/log-cgi-bin/"

RewriteEngine on
RewriteCond %{QUERY_STRING} ^/var/log/syslog-ng$
RewriteRule ^/log-cgi-bin/(.*)$ /secure-log-cgi-bin/$1 [R=302,L,QSA]

<Location "/secure-log-cgi-bin">
  AuthUserFile /etc/httpd/conf.d/.log-view-htpasswd
  AuthType Basic
  AuthName "Logs"

  Require valid-user
  Satisfy All
</Location>

Это в основном делает работу. В RewriteCond регулярное выражение должно быть улучшено, чтобы требовать пароль для чего-либо меньшего, чем /var/log/syslog-ng/.

Богатый