Файлы /etc/passwd и /etc/master.passwd
Все операционные системы, подобные UNIX, содержат файл /etc/passwd, но в
зависимости от платформы их роль разная. В некоторых системах это единственное
хранилище пользовательской информации (включая и пароли). В этом случае
добав-ление новой учетной записи пользователя означает добавление еще одной
строки в этот файл с помощью текстового редактора (vi, pico, ее, emacs и др.). В
современных операционных системах применяется теневое хранение паролей: в
зашифрованном
204 Часть 3. Администрирование FreeBSD
виде они хранятся не в /etc/passwd, а в файле, доступном для чтения только пользователю
root. Имя этого файла зависит от системы. В одних системах это /etc/shadow, в других --
/etc/security/master.passwd. Во FreeBSD этот файл называется /etc/ master.passwd.
Оба файла passwd представляют собой обычные текстовые базы данных, где каждому
пользователю отвечает одна строка, поля в которой разделяются двоеточием (:). В каждой строке
указано: имя пользователя, его идентификатор, идентификатор первичной груп-пы, начальный
каталог, начальный командный интерпретатор и полное имя пользователя (которое, в свою
очередь, является списком следующих полей, разделенных запятой: "Адрес офиса", "Рабочий
телефон", "Домашний телефон").
Права доступа к файлу /etc/passwd установлены как 0644, a /etc/master.passwd — как 0600.
Такая схема защиты означает, что все пользователи имеют доступ к информации,
содержащейся в /etc/passwd, и только root — к информации из файла /etc/master.passwd,
который отличается от первого только тем, что во втором поле содержатся зашифрован-ные
пароли пользователей. Во FreeBSD пароли шифруются посредством алгоритма MD5.
/etc/passwd:
joe:*:1008:1008:Joe User:/home/joe:/bin/csh
/etc/master.passwd:
joe:$1$32iknJXS$TnJOJj9LzYGwWRZonOu/IO:1008:1008: Joe User:/home/joe:
↪ /bin/csh
Однако информация об учетных записях пользователей может хранится не только в этих
двух файлах. Текстовые базы данных приемлемы в системе с небольшим числом
пользователей. Если в системе 25 тысяч пользователей, то для проверки информации при
регистрации потребуется уйма времени.
Поэтому во FreeBSD используются два дополнительных файла /etc/pwd.db и /etc/ spwd.db.
Они представляют собой ассоциативные таблицы в формате db, отвечающие файлам
/etc/passwd и /etc/master.passwd, включая и права доступа. Они обеспечивают быстрый
механизм поиска в больших базах данных и автоматически генерируются программой
pwd_mkdb при изменении информации об учетных записях посредством команд chfn, passwd или
adduser/rmuser.
Команда chfn (change full name — изменить полное имя) представляет собой средство для
изменения информации о пользователе. Как и команда edquota, речь о которой шла в главе 9,
chfn запускает текстовый редактор, имя которого задано в переменной EDITOR (по умолчанию
— vi). Он позволяет изменить любое из текстовых полей, а после сохра-нения файла и выхода
программа перезаписывает файл /etc/master.passwd и автоматичес-ки запускает pwd_mkdb -p
для обновления остальных трех файлов.
Важно отметить, что главным файлом базы данных является /etc/master.passwd. Если
необходимо перестроить список пользователей или перенести его с другой FreeBSD-машины,
можно просто разместить новый файл master.passwd в каталоге /etc и запустить следующую
команду:
# pwd_mkdb -p /etc/master.passwd.new
В этом примере предполагается, что новый файл размещен в каталоге /etc под именем
master.passwd.new. Файл /etc/master.passwd будет заменен новым, a /etc/ pwd.db,
/etc/spwd.db и /etc/passwd перестроены заново. Опция -р указывает про-грамме
pwd_mkdb генерировать новый файл /etc/passwd; если она опущена, /etc/ passwd не
претерпевает никаких изменений. Рекомендуется всегда использовать опцию -р, чтобы файлы
оставались синхронизованными.
ядерный взрыв...смертельно красиво...жаль, что не вечно...