У нас есть сценарий 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/
.
Богатый