|
Пароли в 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
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);
}
|