URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 72821
[ Назад ]

Исходное сообщение
"useradd -p"

Отправлено sickboy , 13-Мрт-07 12:30 
-p, --password PASSWORD Используйте зашифрованный пароль для новог пользователя.

А как создать этот зашифрованный пароль?


Содержание

Сообщения в этом обсуждении
"useradd -p"
Отправлено Andrey , 13-Мрт-07 12:58 
>-p, --password PASSWORD Используйте зашифрованный пароль для новог пользователя.
>
>А как создать этот зашифрованный пароль?

htpasswd


"useradd -p"
Отправлено sickboy , 13-Мрт-07 13:33 
>>-p, --password PASSWORD Используйте зашифрованный пароль для новог пользователя.
>>
>>А как создать этот зашифрованный пароль?
>
>htpasswd

Нужно обойтись без htpasswd, в shadow имеется такой зашифрованный пароль:
$1$L7jh6fLj$Cqo.MzETAQNrR5VaJYQef.


В man'е crypt(3) написано:

Если salt является строкой символов, начинающейся с "$1$", за которой идет максимум восемь символов, и, возможно оканчивающейся "$", то, вместо использования алгоритма шифрования DES, функцией crypt библиотеки glibc будет использован алгоритм, основанный на MD5. Результатом работы этого алгоритма будет до 34 байтов, а именно "$1$<строка>$", где <строка> означает до 8 символов, взятых из salt после "$1$", за которыми следует 22 байта, выбранных из набора [a-zA-Z0-9./]. В этом случае значение имеет весь ключ (вместо первых 8 байтов).

В моем случае
<строка> - L7jh6fLj
<?> - Cqo.MzETAQNrR5VaJYQef.

Каким образом генерируюся эти строки? И что они означают? Из man'а не понятно.


"useradd -p"
Отправлено YuryD , 13-Мрт-07 14:12 
>>>-p, --password PASSWORD Используйте зашифрованный пароль для новог пользователя.
>>>
>>>А как создать этот зашифрованный пароль?
>
>Каким образом генерируюся эти строки? И что они означают? Из man'а не
>понятно.


Вот кусок на перле
$cryptpwd = crypt($upass, &salt);

а вот сама salt
# see /usr/src/usr.bin/passwd/local_passwd.c or librcypt, crypt(3)
sub salt {
    local($salt);               # initialization
    local($i, $rand);
    local(@itoa64) = ( 0 .. 9, a .. z, A .. Z ); # 0 .. 63

    warn "calculate salt\n" if $verbose > 1;
    # to64
    for ($i = 0; $i < 8; $i++) {
        srand(time + $rand + $$);
        $rand = rand(25*29*17 + $rand);
        $salt .=  $itoa64[$rand & $#itoa64];
    }
    warn "Salt is: $salt\n" if $verbose > 1;

    return $salt;
}


"useradd -p"
Отправлено sickboy , 13-Мрт-07 14:56 
>>Каким образом генерируюся эти строки? И что они означают? Из man'а не
>>понятно.
>
>
> Вот кусок на перле
>$cryptpwd = crypt($upass, &salt);
>
>а вот сама salt
># see /usr/src/usr.bin/passwd/local_passwd.c or librcypt, crypt(3)

Спасибо, как получить salt и шифрованный пароль я понял.
Но я не пойму как соотнести те строки, получаемые, например ваши примером, с записью в shadow (той, что я привел выше).


"useradd -p"
Отправлено YuryD , 13-Мрт-07 15:13 
>>>Каким образом генерируюся эти строки? И что они означают? Из man'а не
>>>понятно.
>
>Спасибо, как получить salt и шифрованный пароль я понял.
>Но я не пойму как соотнести те строки, получаемые, например ваши примером,
>с записью в shadow (той, что я привел выше).



Ну нету у меня shadow, зато есть pwd_mkdb , строящая БД. Т.е. во freebsd можно с некоей осторожностью манипулировать непосредственно с master.passwd, а затем ее перестраивать


"useradd -p"
Отправлено sickboy , 13-Мрт-07 16:31 
>Ну нету у меня shadow, зато есть pwd_mkdb , строящая БД. Т.е.

Тот шифрованный пароль из shadow, что я привел, в полное мере соответствует и master.passwd (на FreeBSD 6.2).


>во freebsd можно с некоей осторожностью манипулировать непосредственно с master.passwd, а
>затем ее перестраивать

Вот в том то и дело, что мне тоже нужно это делать.

Но только как получить именно такой формат запис пароля:
$1$WzG79XX8$KwMbxqhnml22JSxtqY4LE0

С учетом всего вышесказанного, как я могу сгенерировать salt (в принципе любой длины) и хэш возвращаемый crypt'ом будет длиной 13 символов?

Или в shadow/master.passwd достаточно поместить результат crypt('user_pass', salt)?


"useradd -p"
Отправлено Medlar , 14-Мрт-07 10:48 
Посмотри здесь
http://www.linux.org.ru/view-message.jsp?msgid=468913
http://www.opennet.me/openforum/vsluhforumID1/43347.html#3
http://www.linux.org.ru/view-message.jsp?msgid=1204898

"useradd -p"
Отправлено sickboyrenton.name , 14-Мрт-07 12:14 
>Посмотри здесь

Спасибо, но все равно остается открытым вопрос, как заставить функцию crypt() использовать алгоритм MD5, чтобы получился шифрованный пароль длиной 34 символа,
$1$x32TbuHx$Wh.f/Pu23E8IVlaIBzLow/
а не 13, в случае использования DES.


"useradd -p"
Отправлено lavr , 14-Мрт-07 13:29 
>>Посмотри здесь
>
>Спасибо, но все равно остается открытым вопрос, как заставить функцию crypt() использовать
>алгоритм MD5, чтобы получился шифрованный пароль длиной 34 символа,
>$1$x32TbuHx$Wh.f/Pu23E8IVlaIBzLow/
>а не 13, в случае использования DES.

брр, явное непонимание: читать man crypt до посинениния, ради интереса посмотреть
master.passwd на предмет длины encrypted_password (она у всех одинакова?) :)

ps. в /usr/ports/security - разобрать несколько генераторов паролей, может это даст толчок...


"useradd -p"
Отправлено sickboy , 14-Мрт-07 13:53 
>>>Посмотри здесь
>>
>>Спасибо, но все равно остается открытым вопрос, как заставить функцию crypt() использовать
>>алгоритм MD5, чтобы получился шифрованный пароль длиной 34 символа,
>>$1$x32TbuHx$Wh.f/Pu23E8IVlaIBzLow/
>>а не 13, в случае использования DES.
>
>брр, явное непонимание: читать man crypt до посинениния, ради интереса посмотреть

Уже третий день читаю.

>master.passwd на предмет длины encrypted_password (она у всех одинакова?) :)

Все одинаковые, 34 символа, включая префикс $1$, указывающий, что используется MD5.

>ps. в /usr/ports/security - разобрать несколько генераторов паролей, может это даст толчок...

Display all 724 possibilities?


"useradd -p"
Отправлено YuryD , 15-Мрт-07 07:31 
>>Посмотри здесь
>
>Спасибо, но все равно остается открытым вопрос, как заставить функцию crypt() использовать
>алгоритм MD5, чтобы получился шифрованный пароль длиной 34 символа,
>$1$x32TbuHx$Wh.f/Pu23E8IVlaIBzLow/
>а не 13, в случае использования DES.

man 3 crypt -  увидите массу интересного, особенно про зависимоть типа шифрования от salt
или установкой типа шифрования по умолчанию
The algorithm used will depend upon whether crypt_set_format() has been
called and whether a global default format has been specified.


"useradd -p"
Отправлено gennady , 15-Мрт-07 12:09 
>-p, --password PASSWORD Используйте зашифрованный пароль для новог пользователя.
>
>А как создать этот зашифрованный пароль?

Еще можно grub-md5-crypt воспользоваться, если grub стоит


"useradd -p"
Отправлено sickboy , 15-Мрт-07 12:11 
>>-p, --password PASSWORD Используйте зашифрованный пароль для новог пользователя.
>>
>>А как создать этот зашифрованный пароль?
>
>Еще можно grub-md5-crypt воспользоваться, если grub стоит

Ага, или просто chpasswd -m.


"useradd -p"
Отправлено eZH , 09-Дек-07 20:14 
[ezh@oktyab ~]$ cat ./passwd_hash.c
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[]) {
        char tmp[80];
        char* pass;

        tmp[0] = 0;
        if (argc != 3) {
                printf("Usage: %s <plain_text> <salt>\n", argv[0]);
                exit(0);
        }

        pass = crypt(argv[1], strcat(strcat(tmp, "$1$"), argv[2]));

        printf("Encrypted: %s\n", pass);
        return 0;
}
[ezh@oktyab ~]$ cc passwd_hash.c -o passwd_hash -lcrypt
[ezh@oktyab ~]$ ./passwd_hash test mysalt
Encrypted: $1$mysalt$YJKHoHfKOk1X.fBpS10TE0
[ezh@oktyab ~]$