Bug 15691

Summary: htpasswd by default generates passwords rejected by apache
Product: Sisyphus Reporter: Ivan Adzhubey <iadzhubey>
Component: apacheAssignee: solo <solo>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: major    
Priority: P1 CC: at, cas, crux, ender, erthad, kharpost, lakostis, ldv, mike, mithraen, qa_viy, rider, shaba, solo, viy, vvk
Version: unstable   
Hardware: all   
OS: Linux   

Description Ivan Adzhubey 2008-05-16 23:29:28 MSD
После сегодняшнего обновления разладилась любовь между htpasswd и apache: первый
 по умолчанию генерирует пароли зашифрованные системным вызовом crypt() (если
верить ману), а apache их принимать отказывается. Пароли, сгенерированные
htpasswd с опцией -m работают.

Имеется в виду вот этот апач:
apache-1.3.41rusPL30.23-alt4

Steps to Reproduce:
1.# htpasswd /usr/local/lib/passwdfile newuser
2.Enter new password, re-enter.
3.Go to password-protected page, enter correct password, login denied.
Actual Results:  
No login to password-protected pages (Basic authentication)

Expected Results:  
Page loads
Comment 1 Michael Shigorin 2008-05-27 18:04:17 MSD
Иван, я уже вернулся из поездки, но всё так же не знаю, что с этим делать.

2 ldv: нет идей?
Comment 2 Dmitry V. Levin 2008-05-27 18:07:58 MSD
(In reply to comment #1)
> Иван, я уже вернулся из поездки, но всё так же не знаю, что с этим делать.
> 
> 2 ldv: нет идей?

Я не знаю, как ты этого добился, да и к самому htpasswd уже давно утратил интерес.
Comment 3 Michael Shigorin 2008-08-17 19:34:14 MSD
Лёш, посмотришь при возможности?
Comment 4 Ivan Adzhubey 2008-08-17 22:55:55 MSD
(In reply to comment #3)
> Лёш, посмотришь при возможности?
> 

(In reply to comment #2)
> (In reply to comment #1)
> > Иван, я уже вернулся из поездки, но всё так же не знаю, что с этим делать.
> > 
> > 2 ldv: нет идей?
> 
> Я не знаю, как ты этого добился, да и к самому htpasswd уже давно утратил интерес.

А что вместо него?

Вчера проблема воспроизвелась на новом компьютере со свежеустановленным apache2-2.2.9-alt8.1, причем система - x86_64, в отличие от x86_32 на первом. Так что на local misconfiguration не похоже. Пароли, сгенерированные методом по умолчанию, не распознаются. Если добавить ключик -m - распознаются.
Comment 5 solo 2008-08-18 01:39:21 MSD
(In reply to comment #3)
> Лёш, посмотришь при возможности?

  OK, проверю.
Comment 6 solo 2008-08-19 19:28:45 MSD
  Проверил на apache2-2.2.9-alt9. Результат странный:

1. Задействовать Require user неудалось вообще -- Error 500 на выходе и ругань в /var/log/httpd2/error_log:

[crit] [client 192.168.1.101] configuration error:  couldn't check access.  No groups file?: /

  Эффект наблюдается независимо от того, определён ли AuthGroupFile, существует и/или корректен ли он...

2. Require group работает правельно, независимо от того какой алгоритм использовался при задании пароля (проверял htpasswd2 {,-{d,m}})...
Comment 7 solo 2008-08-19 20:02:05 MSD
С apache-1.3.41rusPL30.23-alt4.5 вообще весело:

[Tue Aug 19 20:07:10 2008] [error] [client 192.168.1.101] (13)Permission denied: Could not open password file: /etc/httpd/conf/passwd/passwd
[Tue Aug 19 20:07:10 2008] [error] [client 192.168.1.101] user test3 not found: /

Хотя:

$ sudo -H ls -lA /etc/httpd/conf/passwd/
total 8
-rw-r----- 1 root apache 44 Aug 19 20:06 passwd
Comment 8 Michael Shigorin 2008-08-19 20:15:07 MSD
У меня-то работает.

Сделай su - apache -s /bin/bash и попробуй зайти в тот каталог?
Comment 9 solo 2008-08-19 22:55:33 MSD
(In reply to comment #8)
> У меня-то работает.
> 
> Сделай su - apache -s /bin/bash и попробуй зайти в тот каталог?
 
  Ларчик просто открывался:

$ ls -lA /etc/httpd
/etc/httpd:
итого 0
drwxr-x--- 8 root webmaster 424 Авг 19 20:02 conf

  apache -- в группу webmaster не входит...

  Думаю, что для каталогаов /etc/httpd{,2}/conf (и ниже) стоит поставить 2775 root:webmaster (для файлов -- 664 root:webmaster). (Исключение -- ssl ключи и сертификаты.)
Comment 10 Michael Shigorin 2008-08-19 23:06:50 MSD
(In reply to comment #9)
>   Думаю, что для каталогаов /etc/httpd{,2}/conf (и ниже) стоит поставить 2775 root:webmaster
> (для файлов -- 664 root:webmaster). (Исключение -- ssl ключи и сертификаты.)
Зачем?

Всё, что нужно из конфигурации -- читается рутовым апачем.

А .htaccess/.htpasswd туда отродясь не клали.

Их клали в виртхосты (.htpasswd -- не в html/ или htdocs/, разумеется).
Comment 11 solo 2008-08-19 23:17:42 MSD
(In reply to comment #9)
> (In reply to comment #8)
> > У меня-то работает.
> > 
> > Сделай su - apache -s /bin/bash и попробуй зайти в тот каталог?
> 
>   Ларчик просто открывался:
> 
> $ ls -lA /etc/httpd
> /etc/httpd:
> итого 0
> drwxr-x--- 8 root webmaster 424 Авг 19 20:02 conf
> 
>   apache -- в группу webmaster не входит...
> 

  После правки прав всё работает (проверял htpasswd {,-{d,m}}).
Comment 12 solo 2008-08-19 23:22:59 MSD
(In reply to comment #10)
> (In reply to comment #9)
> >   Думаю, что для каталогаов /etc/httpd{,2}/conf (и ниже) стоит поставить 2775 root:webmaster
> > (для файлов -- 664 root:webmaster). (Исключение -- ssl ключи и сертификаты.)
> Зачем?
> 
> Всё, что нужно из конфигурации -- читается рутовым апачем.
> 
> А .htaccess/.htpasswd туда отродясь не клали.

  А я там обычно глобальные для сервера файлы паролей складывал...
> 
> Их клали в виртхосты (.htpasswd -- не в html/ или htdocs/, разумеется).

  Давай тогда зафиксируем правельное для них место с учётом того, что для apache и apache2 файлы поролей возможно не совместимы (это сейчас проверю).
Comment 13 solo 2008-08-19 23:55:01 MSD
На данный момент:

1. apache-1.3.41rusPL30.23-alt4.5 понимает пароли сгенирированные htpasswd{,2} {,-{d,m}}, но непонимает пароли сгенерированные с опцией -s (htpasswd или htpasswd2 -- не важно).

2. apache2-2.2.9-alt9 понимает всё, сгенерированное htpasswd2 {,-{d,m,s}} и htpasswd2 {,-{d,m}} (непонимает опцию -s у htpasswd)...

PS: Похоже надо сгенирировать SHA пароль сторонними средствами и проверить...
Comment 14 Michael Shigorin 2008-08-20 02:20:54 MSD
(In reply to comment #12)
> Давай тогда зафиксируем правельное для них место с учётом того, что для apache
> и apache2 файлы поролей возможно не совместимы (это сейчас проверю).
Давай спросим в sysadmins@ (и если удобно -- глянь в дебиане)?
Comment 15 solo 2008-08-20 10:31:13 MSD
(In reply to comment #13)
> 
> PS: Похоже надо сгенирировать SHA пароль сторонними средствами и проверить...
> 

1. Генерация:

$ /usr/sbin/slappasswd -s test -h {SHA}
{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=

2. Добавил в файл парорлей:

test7:{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=

Работает в apache2-2.2.9-alt9, но не работает в apache-1.3.41rusPL30.23-alt4.5

Похоже у apache-1.3.41rusPL30.23-alt4.5 с SHA паролями всё плохо... Это его нормальное состояние?
Comment 16 Ivan Adzhubey 2008-08-20 11:20:50 MSD
(In reply to comment #15)
> (In reply to comment #13)
> > 
> > PS: Похоже надо сгенирировать SHA пароль сторонними средствами и проверить...
> > 
> 
> 1. Генерация:
> 
> $ /usr/sbin/slappasswd -s test -h {SHA}
> {SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
> 
> 2. Добавил в файл парорлей:
> 
> test7:{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
> 
> Работает в apache2-2.2.9-alt9, но не работает в apache-1.3.41rusPL30.23-alt4.5
> 
> Похоже у apache-1.3.41rusPL30.23-alt4.5 с SHA паролями всё плохо... Это его нормальное
> состояние?

Народ, вы отвлеклись, а мой багрепорт кто-нибудь проверит? Напоминаю:

# htpasswd{2} /var/lib/гдетотам ктототам

генерирует пароли, которые не принимает соотв., apache/apache2. Тогда как;

# htpasswd{2} -d /var/lib/гдетотам ктототам

генерирует пароли, которые работают. Хотя в мане написано, что ключик -d (криптованые пароли) - это умолчательное поведение в Linux.

Про SHA пароли я даже и не заикался.
Comment 17 solo 2008-08-20 11:48:21 MSD
(In reply to comment #16)
> (In reply to comment #15)
> > (In reply to comment #13)
> > > 
> > > PS: Похоже надо сгенирировать SHA пароль сторонними средствами и проверить...
> > > 
> > 
> > 1. Генерация:
> > 
> > $ /usr/sbin/slappasswd -s test -h {SHA}
> > {SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
> > 
> > 2. Добавил в файл парорлей:
> > 
> > test7:{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
> > 
> > Работает в apache2-2.2.9-alt9, но не работает в apache-1.3.41rusPL30.23-alt4.5
> > 
> > Похоже у apache-1.3.41rusPL30.23-alt4.5 с SHA паролями всё плохо... Это его нормальное
> > состояние?
> 
> Народ, вы отвлеклись, а мой багрепорт кто-нибудь проверит? Напоминаю:
> 
> # htpasswd{2} /var/lib/гдетотам ктототам
> 
> генерирует пароли, которые не принимает соотв., apache/apache2. Тогда как;
> 
> # htpasswd{2} -d /var/lib/гдетотам ктототам
> 
> генерирует пароли, которые работают. Хотя в мане написано, что ключик -d
> (криптованые пароли) - это умолчательное поведение в Linux.

  Повторить не удаётся (см. comment #6 и #11): пароли сгенерированные htpasswd{,2} {,-d} работают одинаково. (При проверке выплыло другое.)

> 
> Про SHA пароли я даже и не заикался.
 
  Оно выплыло при проверке взаимозаменяемости htpasswd{,2}: смотрел можно ли иметь один парольный файл для обоих apache`й (comment #12 и #13)...
Comment 18 solo 2008-08-20 12:54:32 MSD
(In reply to comment #13)
> На данный момент:
> 
> 1. apache-1.3.41rusPL30.23-alt4.5 понимает пароли сгенирированные htpasswd{,2} {,-{d,m}}, но
> непонимает пароли сгенерированные с опцией -s (htpasswd или htpasswd2 -- не важно).
> 
> 2. apache2-2.2.9-alt9 понимает всё, сгенерированное htpasswd2 {,-{d,m,s}} и htpasswd2 {,-{d,m}}
> (непонимает опцию -s у htpasswd)...

  Проверил версии из бранча 4.1:

1. apache-1.3.41rusPL30.23-alt4 непонимает SHA пароли. Строки сгенирированные 
htpasswd {,-{d,m}} -- принимаются без вопросов (данную багу не обнаружил).

2. apache2-2.2.8-alt1 -- нормально ест строки сгенирированные htpasswd2 {,-{d,m,s}} (данную багу не обнаружил) но имеет проблемы с Require user (см. comment #6).

PS: Все мои проверки касались сборок под x86_64, i586 -- не проверял.
Comment 19 solo 2008-08-20 13:25:46 MSD
По мотивам раскопок данного бага открыл https://bugzilla.altlinux.org/show_bug.cgi?id=16779 и https://bugzilla.altlinux.org/show_bug.cgi?id=16778
Comment 20 solo 2008-08-20 13:27:37 MSD
(In reply to comment #19)
> По мотивам раскопок данного бага открыл https://bugzilla.altlinux.org/show_bug.cgi?id=16779

  Ошибся. Открыл https://bugzilla.altlinux.org/show_bug.cgi?id=16777, а не #16779

> и https://bugzilla.altlinux.org/show_bug.cgi?id=16778
> 

Comment 21 Dmitry A. Kharitonov 2009-07-29 13:30:17 MSD
Кто подскажет: как в апаче поставить пароль на директорию?

нужно запаролить /var/www/html/lightsquid/admin.
1 создаю /var/www/html/lightsquid/admin/.htaccess
AuthName "lightsquid administrator mode"
AuthType Basic
AuthUserFile /var/www/html/lightsquid/admin/.htpasswd
require user admin

2 создаю /var/www/html/lightsquid/admin/.htpasswd
htpasswd -bcm /var/www/html/lightsquid/admin/.htpasswd admin admin

3 пробую зайти ввожу пароль и получаю ошибку 500
смотрю логи http:
[Tue Jul 28 15:43:00 2009] [error] (25)Inappropriate ioctl for device: access to /lightsquid/admin/user_detail.cgi failed for 192.168.2.1, reason: Authentication service cannot retrieve authentication info
Yury L.Olkov wrote:
> Привет.
>
> Права на файлы .ht* проверь для начала
[user@SERVER 20:40:34 ~]$ ls -la /var/www/html/lightsquid/admin/.h*
-rw-r--r-- 1 lightsquid lightsquid 108 Июл 28 17:13 /var/www/html/lightsquid/admin/.htaccess
-rw-r--r-- 1 lightsquid lightsquid 108 Июл 28 17:12 /var/www/html/lightsquid/admin/.htaccess~
-rw-r--r-- 1 lightsquid lightsquid  20 Июл 28 14:00 /var/www/html/lightsquid/admin/.htpasswd
[user@SERVER 20:42:23 ~]$ id lightsquid
uid=123(lightsquid) gid=58(lightsquid) группы=58(lightsquid),23(squid)
сделал
chmod -R 777 /var/www/html/lightsquid/admin -- не помогает
Сделал
htpasswd -bcm /var/www/html/lightsquid/admin/.htpasswd admin admin -- не помогает
[user@SERVER 20:54:11 ~]$ rpm -qa | egrep "apache|auth"
apache2-2.2.4-alt24
apache2-mod_ssl-2.2.4-alt24
mod_auth_pam-1.1.1-alt1
apache2-common-2.2.4-alt24
apache-1.3.41rusPL30.23-alt1
apache-common-1.3.41rusPL30.23-alt1
apache2-httpd-prefork-2.2.4-alt24
Comment 22 Michael Shigorin 2011-03-12 15:56:11 MSK
Похоже, "не шмогли".

Предлагаю использовать htpasswd -m.