С помощьюawk
сценариев:
$ awk '/Red Hat Satellite/{ f=1; next }f && /Pool ID:/{ print $NF; exit }' yourfile
abcdxyz12340987
Это распространенная проблема. Документация Apache предлагает использовать директиву <Location />
вместо <Directory />
. В следующем примере VirtualHost должен предоставить вам функциональную базовую аутентификацию:
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/srv/www/htdocs/"
<Location />
AuthType Basic
AuthName "Authorized Access Only"
AuthUserFile /etc/apache2/auth/htpass
AuthGroupFile /etc/apache2/auth/group
Require group myusers
</Location>
<Directory "/srv/www/htdocs/">
Require all granted
</Directory>
</VirtualHost>
Файл htpass генерируется с использованием htpasswd -c /etc/apache2/auth/htpass myname
, группового файла (, который является необязательным! ), использует следующий синтаксис (по отношению к приведенному выше примеру виртуального хоста):
myusers: myname myfriend mycolleague
Файл htpasswd и групповые файлы должны быть доступны для чтения пользователю, от имени которого запускается Apache.
Это не окончательный ответ, но я могу сообщить, как я это исправил.
Все http-запросы были перенаправлены на https, хотя я не знаю, где это было сделано. Это означало, что vhosts для *:80 игнорировались, а использовались *:443. Я переместил материал аутентификации на виртуальный хост *:443 и поставил перед ним «Требовать все отказы», и теперь он запрашивает вход в систему. Вот код, включенный в vhost
<Directory /subdir/>
Require all denied
</Directory>
<Location /subdir/>
AllowOverride All
AuthType Basic
AuthName "admins only"
AuthUserFile /etc/apache2/userpass.txt
AuthGroupFile /etc/apache2/group
Require group admins
</Location>
Любой, кто может улучшить или упростить это, пожалуйста.