Задача: Забыл пароль при обращении к своему сервису Mercurial Web
где у меня хранятся все наработки скриптов. Т.е. при очередном обращении к сервису не помню какой пароль присвоен учетной записи. Вот дела.
Есть система, на которой поднята связка Mercurial + Web
, повторить такое можете если обратитесь к заметке "Web-доступ к Mercurial на Ubuntu 18.04"
ekzorchik@srv-code:~$ uname -a && lsb_release -a Linux srv-code 4.15.0-175-generic #184-Ubuntu SMP Thu Mar 24 17:48:36 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.6 LTS Release: 18.04 Codename: bionic ekzorchik@srv-code:~$
У меня в каталоге /var/www/html/hg
есть репозитарии и вот при клонировании одного из них я получаю ошибку авторизации:
ekzorchik@srv-us2204a:~$ hg clone http://172.35.35.8/hg/locale.sh http authorization required for http://172.35.35.8/hg/locale.sh realm: Mercurial repositories user: ekzorchik password: чтобы я ни вводил в качестве пароль, все отбивка - ошибка abort: authorization failed ekzorchik@srv-us2204a:~$
Шаг №1:
Чтобы изменить пароль, который хранится в каталоге hgusers:
ekzorchik@srv-code:~$ ls -la /var/www/html/hg/hgusers -rw-r--r-- 1 ekzorchik www-data 48 Apr 14 2022 /var/www/html/hg/hgusers ekzorchik@srv-code:~$ cat /var/www/html/hg/hgusers ekzorchik:$apr1$87S/0RhI$O9xxLhOluArr3N5QL/lwz. ekzorchik@srv-code:~$
Поступаю так, если нужно создать файл:
ekzorchik@srv-bionic:~$ sudo htpasswd -c /var/www/html/hg/hgusers ekzorchik New password: 712mbddr@ Re-type new password: 712mbddr@ Adding password for user ekzorchik
Удаляю пользователя ekzorchik
из файла hgusers:
ekzorchik@srv-code:~$ sudo htpasswd -D /var/www/html/hg/hgusers ekzorchik Deleting password for user ekzorchik ekzorchik@srv-code:~$
Добавляю одного пользователя и добавляю другого пользователя: (Как оказалось ниже я ошибался на этот счет ниже, я перезатирал файл)
ekzorchik@srv-code:~$ sudo htpasswd -c /var/www/html/hg/hgusers ekzorchik New password: указываю к примеру пароль 712mbddr@ Re-type new password: повторяю указанный пароль 712mbddr@ Adding password for user ekzorchik ekzorchik@srv-code:~$ sudo htpasswd -c /var/www/html/hg/hgusers user1 New password: указываю к примеру пароль 712mbddr@ Re-type new password: повторяю указанный пароль 712mbddr@ Adding password for user user1 ekzorchik@srv-code:~$ cat /var/www/html/hg/hgusers user1:$apr1$oLRLrBl9$fxtQgzpTQDHrY7TfTcT/q1 ekzorchik@srv-code:~$
Шаг №2:
Перезапускаю Web
—сервис для активации внесенных изменений:
ekzorchik@srv-code:~$ sudo systemctl restart apache2
Шаг №3:
Проверяю, что обратившись через браузер к URL
адресу http://172.35.35.8/hg
я смогу авторизоваться:
указываю
Имя пользователя: ekzorchik
Пароль: 712mbddr@
и нажимаю "Вход"
, но меня выбрасывает опять на окно аутентификации, значит что-то не работает, логи говорят:
Wed Dec 07 08:11:39.902602 2022] [auth_basic:error] [pid 3307] [client 172.35.35.28:65474] AH01618: user ekzorchik not found: /hg, referer: http://172.35.35.8/
см. файл сайта для Web
-сервиса Apache2:
ekzorchik@srv-code:~$ sudo bash -c "cat /etc/apache2/sites-enabled/hg.conf" <Virtualhost *:80> ScriptAlias /hg "/var/www/html/hg/hgwebdir.cgi" <Directory /var/www/html/hg> Options +ExecCGI </Directory> <Location /hg> AuthType Basic AuthName "Mercurial repositories" AuthUserFile /var/www/html/hg/hgusers Require valid-user ekzorchik </Location> </Virtualhost> ekzorchik@srv-code:~$
а вот добавленная учетная запись user1
не будет работать она не перечислена в "Require valid-user"
, пока не важно. Нужно разобрать почему не идет аутентификация: — я баран, ключ "-с"
не добавляем пользователя, а перезатирает:
ekzorchik@srv-code:~$ sudo mv /var/www/html/hg/hgusers /etc/apache2/ ekzorchik@srv-code:~$ cat /etc/apache2/hgusers user1:$apr1$oLRLrBl9$fxtQgzpTQDHrY7TfTcT/q1 ekzorchik@srv-code:~$ sudo nano /etc/apache2/sites-enabled/hg.conf <Virtualhost *:80> ScriptAlias /hg "/var/www/html/hg/hgwebdir.cgi" <Directory /var/www/html/hg> Options +ExecCGI </Directory> <Location /hg> AuthType Basic AuthName "Mercurial repositories" AuthUserFile /etc/apache2/hgusers Require valid-user ekzorchik </Location> </Virtualhost> ekzorchik@srv-code:~$ sudo htpasswd -c /etc/apache2/hgusers ekzorchik New password: Re-type new password: Adding password for user ekzorchik ekzorchik@srv-code:~$ cat /etc/apache2/hgusers ekzorchik:$apr1$GUKFO2K.$.8z8t903MqnQ7ARZ82oUe. ekzorchik@srv-code:~$ ekzorchik@srv-code:~$ sudo systemctl restart apache2 ekzorchik@srv-code:~$ ekzorchik@srv-code:~$ curl -I -u ekzorchik:712mbddr@ http://172.35.35.8/hg HTTP/1.1 200 Script output follows Date: Wed, 07 Dec 2022 05:29:51 GMT Server: Apache/2.4.29 (Ubuntu) Vary: Accept-Encoding Content-Type: text/html; charset=ascii ekzorchik@srv-code:~$
Шаг №4:
Проверяю, могу ли я теперь с клонировать нужный репозитарий с измененными аутентификационными данными:
ekzorchik@srv-us2204a:~$ hg clone http://172.35.35.8/hg/dproject http authorization required for http://172.35.35.8/hg/dproject realm: Mercurial repositories user: ekzorchik password: destination directory: dproject requesting all changes adding changesets adding manifests adding file changes added 2 changesets with 3 changes to 2 files new changesets 25066b9f886f:6bf843a703d1 updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved ekzorchik@srv-us2204a:~$
Вот теперь успешно.
Шаг №5:
А так ну все же как в файле hgusers
перечислить несколько пользователей:
где "-c"
-> создать новый файл паролей, если он уже есть, то ключ "-c"
использовать не надо, т. к. будет пересоздан файл паролей.
ekzorchik@srv-code:~$ sudo htpasswd /etc/apache2/hgusers test1 New password: 712mbddr@ Re-type new password: 712mbddr@ Adding password for user test1 ekzorchik@srv-code:~$ cat /etc/apache2/hgusers ekzorchik:$apr1$GUKFO2K.$.8z8t903MqnQ7ARZ82oUe. test1:$apr1$ZU6p7Aak$BBuGtJUj.1wmtbFZT0ax1. ekzorchik@srv-code:~$ ekzorchik@srv-code:~$ sudo nano /etc/apache2/sites-enabled/hg.conf <Virtualhost *:80> ScriptAlias /hg "/var/www/html/hg/hgwebdir.cgi" <Directory /var/www/html/hg> Options +ExecCGI </Directory> <Location /hg> AuthType Basic AuthName "Mercurial repositories" AuthUserFile /etc/apache2/hgusers Require valid-user ekzorchik test1 </Location> </Virtualhost> ekzorchik@srv-code:~$ sudo apache2ctl configtest Syntax OK ekzorchik@srv-code:~$ sudo systemctl restart apache2
Итого, я сам себе буратино, который забыл пароль, забыл, как добавлять пользователей в файл доступа к репозитариям, но теперь все поправимо и задокумментировано, если вдруг опять наступлю на те же самые грабли, то мой блок меня выручит. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.