Bug 43652 - Отсутствуют pw2userdb и vchkpw2userdb в courier-authlib-userdb
Summary: Отсутствуют pw2userdb и vchkpw2userdb в courier-authlib-userdb
Status: CLOSED WONTFIX
Alias: None
Product: Sisyphus
Classification: Development
Component: courier-authlib-userdb (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 enhancement
Assignee: Konstantin A Lepikhov (L.A. Kostis)
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-08-30 10:36 MSK by Alexandr Shashkin
Modified: 2023-01-27 00:37 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexandr Shashkin 2022-08-30 10:36:20 MSK
Версия программы:
=================
courier-authlib-userdb-0.71.3-alt2.1

Шаги, приводящие к ошибке:
==========================
1) man makeuserdb
2) whereis pw2userdb
3) whereis vchkpw2userdb

Результат:
==========
Согласно документации из man для создания файла /etc/courier-authlib/userdb существует две утилиты: pw2userdb и vchkpw2userdb. Но при выполнении команды whereis из шагов 2 и 3 утилиты не найдены. Так же их нет среди устанавливаемых файлов пакета courier-authlib-userdb.

Ожидаемый результат:
====================
Наличие двух утилит (pw2userdb и vchkpw2userdb).

Дополнительно:
==============
В дистрибутивах Ubuntu и Fedora присутствует одна из утилит: pw2userdb.
Также ошибка воспроизводится в P10 на версии courier-authlib-userdb-0.66.4-alt0.3.1
Comment 1 Konstantin A Lepikhov (L.A. Kostis) 2022-08-30 18:48:44 MSK
Надо же, courier кто-то пользуется в дикой природе ))
Comment 2 Konstantin A Lepikhov (L.A. Kostis) 2022-08-31 13:59:16 MSK
(In reply to Alexandr Shashkin from comment #0)
> Версия программы:
> =================
> courier-authlib-userdb-0.71.3-alt2.1
> 
> Шаги, приводящие к ошибке:
> ==========================
> 1) man makeuserdb
> 2) whereis pw2userdb
> 3) whereis vchkpw2userdb
> 
> Результат:
> ==========
> Согласно документации из man для создания файла /etc/courier-authlib/userdb
> существует две утилиты: pw2userdb и vchkpw2userdb. Но при выполнении команды
> whereis из шагов 2 и 3 утилиты не найдены. Так же их нет среди
> устанавливаемых файлов пакета courier-authlib-userdb.
> 
> Ожидаемый результат:
> ====================
> Наличие двух утилит (pw2userdb и vchkpw2userdb).
Я тут посмотрел исходники pw2userdb, это perl скрипт который, копирует содержимое /etc/password и /etc/shadow в userdb. Но, т.к. ALT использует TCB, shadow у нас пустой и применимость скрипта вмесьма сомнительна:

if ( -f $shadow && ! $noshadow)                                                                                                                                                                                                                               
{                                                                                                                                                                                                                                                             
        open (SHADOW, $shadow) || die "$!\n";                                                                                                                                                                                                                 
        while (<SHADOW>)                                                                                                                                                                                                                                      
        {                                                                                                                                                                                                                                                     
                next if /^#/;                                                                                                                                                                                                                                 
                ($acct,$passwd,$dummy)=split(/:/);                                                                                                                                                                                                            
                $PASSWORD{$acct}=$passwd;                                                                                                                                                                                                                     
        }                                                                                                                                                                                                                                                     
        close (SHADOW);                                                                                                                                                                                                                                       
}              

т.е. данный функционал вполне может заменить однострочник на bash. Я просто могу добавить это в README.ALT
Comment 3 Alexandr Shashkin 2022-08-31 14:27:03 MSK
Кроме /etc/shadow есть еще и /etc/passwd. Если однострочник на bash выполнит действия по преобразованию данных из /etc/passwd, то думаю тогда можно и в README. А что по поводу vchkpw2userdb?
Comment 4 Konstantin A Lepikhov (L.A. Kostis) 2022-09-01 23:14:53 MSK
(In reply to Alexandr Shashkin from comment #3)
> Кроме /etc/shadow есть еще и /etc/passwd. Если однострочник на bash выполнит
> действия по преобразованию данных из /etc/passwd, то думаю тогда можно и в
> README. 
Судите сами:

while ( defined ($key=each %UID))                                                                                                                                                                                                                             
{                                                                                                                                                                                                                                                             
        print "$key$domain\tuid=$UID{$key}|gid=$GID{$key}|home=$HOME{$key}" .                                                                                                                                                                                 
                ( $SHELL{$key} =~ /./ ? "|shell=$SHELL{$key}":"") .                                                                                                                                                                                           
                ( $PASSWORD{$key} =~ /./ ? "|systempw=$PASSWORD{$key}":"") .                                                                                                                                                                                  
                ( $GECOS{$key} =~ /./ ? "|gecos=$GECOS{$key}":"") .                                                                                                                                                                                           
                "\n";                                                                                                                                                                                                                                         
        print "$UID{$key}=\t$key\n" unless $nouid;                                                                                                                                                                                                            
}

Строго говоря, какую проблему мы пытаемся решить? Если только "чтобы было как в man", то проще выкинуть упоминания про этот скрипт из man'а, поскольку в 21ом веке я слабо представляю user case, где нужно доставлять почту в maildir системному пользователю, проще завести vmail и создавать пользователей через userdb(8) или вообще держать их в LDAP/SQL.

А что по поводу vchkpw2userdb?

> 0.60.4                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                              
2008-05-08  Mr. Sam  <sam@email-scan.com>                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                              
        * Makefile: Drop the unmaintained authvchkpw module.

Это вообще какой-то рудимент из прошлого.
Comment 5 Konstantin A Lepikhov (L.A. Kostis) 2023-01-27 00:37:30 MSK
Поскольку практической пользы от этих утилит я не вижу, предоставляю исправить это автору бага :)