|
Пароли в UNIX
|
Posted by: Антон on February 12, 2003 at 17:26:58
Posters Details: [195.151.158.180], X-Forwarded 4: [] [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)]
Кое-что из NETHACK.FAQ.
===
2.2.1 Пароли в UNIX.
В классическом UNIX'е информация о пользователях хранится в файле
/etc/passwd. Этот файл содержит для каждого пользователя системы, семь
полей, разделенных знаком ':'.
Пример записи на одного пользователя из /etc/passwd:
will:5fg63fhD3d5g:9406:12:Will Spencer:/home/fsg/will:/bin/bash
Каждая запись содержит :
Имя пользователя (login): will
Зашифрованный пароль: 5fg63fhD3d5g
Номер пользователя: 9406
Номер группы: 12
Информация о пользователе: Will Spencer
Домашний каталог: /home/fsg/will
Оболочка (Shell): /bin/bash
Важное примечание:
В современных UNIX'ах зашифрованные пароли не хранятся в доступном
всем /etc/passwd, а хранятся в файле, доступном только администратору:
/etc/master.passwd или /etc/shadow. В поле пароля /etc/passwd в этом
случае стоит символ '*'. Что делать? На довольно старых версиях SunOS
может помочь следующая программа:
#include <pwd.h>
main()
{
struct passwd *p;
while(p = getpwent())
printf("%s:%s:%d:%d:%s:%s:%s\n", p->pw_name, p->pw_passwd, p->pw_uid,
p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell);
}
---
2.2.2 Как узнать пароль в UNIX ?
Вопреки распространенным мнениям, пароли в UNIX не могут быть
расшифрованы. Шифpуются не паpоли. Шифpуется Salt. Salt - это две
первые буквы (5f) в 5fg63fhD3d5g - это то, что все считают шифрованным
паролем и находится в passwd во втором поле записи, cм. пред. пример.
Как задается пароль в Unix ?
a) Система вырабатывает Salt - случайные две буквы.
б) Запрашивает у пользователя пароль.
в) Шифрует Salt используя DES, пароль используется как ключ. (*)
г) Записывает Salt, плюс pезультат шифpования в passwd.
===========
В данном случае хеш - 5fg63fhD3d5g.
Вопрос: почему он такой короткий? В ВинНТ с помощью DES'а получается LMHash, который состоит из двух "половинок" по 8 байт. А тут не понятно как он был получен - длина 10(12) байт и еще символы, которые в HEX не входят (g, например). Как это обЪяснить?
Follow Ups:
|
|