Седьмое поле задает командную оболочку входа в систему. Не всякую оболочку можно указать в этом поле. В зависимости от настроек системы в нем может быть указана только оболочка из списка допустимых оболочек. В МСВС список допустимых оболочек находится по умолчанию в файле /etc/shells.
Файл /etc/shadow
Владельцем файла /etc/shadow является пользователь root и только он имеет право читать этот файл. Для его создания нужно взять имена пользователей и хэши-рованные пароли из файла passwd и поместить их в файл shadow, заменив при этом все хэшированные пароли в файле passwd символами х. Если посмотреть на файл passwd системы, то можно увидеть, что на месте хэшированных паролей там стоят символы х. Данный символ указывает системе на то, что пароль следует смотреть не здесь, а в файле /etc/shadow. Переход от простых паролей к теневым и обратно осуществляется посредством трех утилит. Для перехода к теневым паролям сначала запускается утилита pwck. Она проверяет файл passwd на предмет всяких аномалий, из-за которых следующий шаг может закончиться неудачей или попросту зациклиться. После того как отработает pwck, запускается утилита pwconv для создания /etc/shadow. Обычно это делается после ручного обновления файла /etc/passwd. Для возвращения к обычным паролям запускается pwuncov.
Файл теневых паролей во многих отношениях схож с файлом обычных паролей. В частности, первые два поля этих файлов одинаковы. Но помимо этих полей в нем, естественно, есть и дополнительные поля, отсутствующие в файле обычных паролей. Листинг 1.2. показывает содержимое типичного файла /etc/shadow.
Листинг 1.2. Файл /etc/shadow
root:1iDYwrOmhmEBU:10792:0:: 7:7::
bin:*:10547:0::7:7::
daemon:*:10547:0::7:7::
adm:*:10547:0::7:7::
lp:*:10547:0::7:7::
sync:*:10547:0::7:7::
shutdown:U:10811:0:-1:7:7:-1:134531940
halt:*:10547:0::7:7::
mail:*:10547:0::7:7::
news:*:10547:0::7:7::
uucp:*:10547:0::7:7::
operator:*:10547:0::7:7::
games:*: 10547:0: :7:7::
gopher:*:10547:0::7:7::
ftp:*:10547:0::7:7::
man:*:10547:0::7:7::
majordom:*:10547:0::7:7::
postgres:*:10547:0::7:7::
mysql:*:10547:0::7:7::
si1via:1iDYwrOmhmEBU:10792:0:30:7:-l::
nobody:*:10547:0::7:7::
david:1iDYwrOmhmEBU:10792:0::7:7::
Подробнеео /etc/shadow
Назначение первого поля файла shadow такое же, как и у первого поля файла passwd.
Второе поле содержит хэшированный пароль. Реализация теневых паролей в МСВС допускает хэшированные пароли длиной от 13 до 24 символов, однако программа шифрования паролей crypt умеет выдавать только 13-символь-ные хэшированные пароли. Символы, используемые в хэше, берутся из набора, состоящего из 52 букв алфавита (строчных и прописных), цифр 0-9, точки и наклонной черты вправо (/). Итого выходит 64 символа, допустимых в поле хэшированного пароля.
Затравка, таким образом, которая, как и ранее, представляет собой первые два символа, может выбираться из 4096 возможных комбинаций (64x64). Для шифрования используется алгоритм DES с 56-битным ключом, то есть пространство ключей этого алгоритма насчитывает 256 ключей, что приблизительно равно 72 057 590 000 000 000 или 72 квадрильонам. Число выглядит впечатляюще, однако перебрать все ключи из пространства такого размера можно на самом деле за весьма короткое время.
С третьего поля начинается информация об устаревании пароля. В нем хранится число дней, прошедших с 1 января 1970 года до дня последнего изменения пароля.
Четвертое поле задает минимальное число дней, которые должны пройти, прежде чем можно будет вновь изменять пароль. Пока со дня последнего изменения пароля не пройдет столько дней, сколько указанно в этом поле, вновь изменять пароль нельзя.
Пятое поле задает максимальное число дней, в течение которых можно использовать пароль, после чего он подлежит обязательной смене. При положительном значении этого поля попытка пользователя войти в систему после истечения срока действия пароля приведет к тому, что команда password будет запущена не как обычно, а в режиме обязательной смены пароля.
Значение из шестого поля определяет, за сколько дней до окончания срока действия пароля следует начать выдавать предупреждение об этом. Получив предупреждение, пользователь может начать придумывать новый пароль.
Седьмое поле задает число дней, начиная со дня обязательной смены пароля, по истечении которых данная учетная запись блокируется.
В предпоследнем поле хранится день блокировки учетной записи.
Последнее поле зарезервировано и не используется.
Подробнее о /etc/group
Каждая запись файла /etc/group состоит из четырех полей, разделенных двоеточиями. Первое поле задает имя группы. Подобно имени пользователя.
Второе поле обычно всегда пустое, так как механизм паролей для групп обычно не используется, однако если данное поле не пусто и содержит пароль, то к группе может присоединиться любой пользователь. Для этого нужно выполнить команду newgrp с именем группы в качестве параметра, после чего ввести правильный пароль. Если пароль для группы не задан, то присоединиться к ней могут только пользователи, перечисленные в списке членов группы.
Третье поле задает идентификатор группы (GroupID, GID). Смысл его такой же, как и у идентификатора пользователя.
Последнее поле представляет собой список имен пользователей, принадлежащих к группе. Имена пользователей перечисляются через запятую без пробелов. Первичная группа пользователя указывается (в обязательном порядке) в файле passwd и назначается при подключении пользователя к системе исходя из этой информации. Соответственно, если изменить первичную группу пользователя в файле passwd, то пользователь более не сможет присоединиться к своей бывшей первичной группе.
Файл /etc/login.defs
Добавить нового пользователя в систему можно несколькими способами. В МСВС для этого используются следующие программы: coastooL, LISA, useradd. Подойдет любая из них. Утилита COAS использует свой собственный файл. А программы useradd и LISA берут информацию о значениях по умолчанию для полей файлов passwd и shadow из файла /etc/login.defs. Содержимое этого файла в сокращенной форме показано в листинге 1.4.
Листинг 1.4. Сокращенный файл /etc/login.defs
#Максимальное количество дней, в течение которого разрешается использовать пароль:
#(-1 - смена пароля не обязательна) PASS_MAX_DAYS-1
Минимальное количество дней между сменами пароля: PASS_MIN_DAYSО
#За какое количество дней до даты смены пароля должно выдаваться предупреждение: PASS_WARN_AGE7
#Какое количество дней должно пройти после истечения допустимого срока использования пароля, прежде чем учетная запись будет блокирована: PASS_INACTIVE-1
#Форсировать истечение срока использования пароля в заданный день:
# (дата идентифицируется количеством дней после 70/1/1, -1 = не форсировать) PASS_EXPIRE -1
###
#Значения полей создаваемой учетной записи для программы useradd
#группа по умолчанию:GROUP100
#домашний каталог пользователя: %s = имя пользователя) НОMЕ /home/%s
#командная оболочка по умолчанию: SHELL/bin/bash
#каталог, в котором расположен скелет домашнего каталога: SKEL/etc/skel
#минимальное и максимальное значения для автоматического выбора gid в groupaddGID_MIN100
GID_MAX60000
Содержимое этого файла задает значения по умолчанию для полей файлов passwd и shadow. Если не переопределить их из командной строки, будут использованы именно они. Как отправная точка, эти значения вполне подойдут, однако для реализации устаревания паролей некоторые из них нужно будет изменить. Значение, равное -1, означает отсутствие ограничений.
В программе COAS дистрибутива Caldera используется графический интерфейс пользователя л то
Изменение информации об устаревании пароля
Для изменения информации об устаревании пароля для одного или двух пользователей можно воспользоваться командой chage (changeaging — изменить устаревание). Непривилегированные пользователи могут запускать chage только с параметрами -l и собственным именем пользователя, то есть запрашивать информацию об устаревании только собственного пароля. Для изменения информации об устаревании достаточно указать имя пользователя, остальные параметры будут запрошены в диалоговом режиме. Вызов chage без параметров выдаст краткую справку об использовании.
Программа COAS может использоваться с целью изменения параметров устаревания паролей для каждой из учетных записей по отдельности. При этом значения указываются в днях. Интерфейс программы очевиден.
ПРИМЕЧАНИЕ -
Для получения информации об устаревании пароля пользователя или форсирования этого процесса можно воспользоваться командой expiry.
Система безопасности РАМ
Основная идея РАМ состоит в том, что всегда можно написать новый модуль безопасности, который бы обращался к файлу или устройству за информацией и возвращал результат выполнения процедуры авторизации: УСПЕХ (SUCCESS), НЕУДАЧА (FAILURE) или ИГНОРИРОВАТЬ (IGNORE). А РАМ, в свою очередь, возвратит УСПЕХ (SUCCESS) или НЕУДАЧА (FAILURE) вызвавшей ее службе. Таким образом, неважно, какие пароли, теневые или обычные, используются в системе, если в ней есть РАМ: все поддерживающие РАМ программы будут прекрасно работать и с теми и другими.
Перейдем теперь к рассмотрению основных принципов работы РАМ. Рассмотрим листинг 1.6. В каталоге /etc/pam.d содержатся файлы конфигурации и для других служб, таких как su, passwd и т. п., в зависимости от того, какое программное обеспечение установлено в системе. Каждой службе с ограничением доступа (restrictedservice) соответствует свой файл конфигурации. Если такового нет, то данная служба с ограничением доступа попадает в категорию «other», с файлом конфигурации other.d. (Службой с ограничением доступа называется любая служба или программа, для использования которой требуется пройти авторизацию. Иными словами, если при нормальных условиях служба запрашивает у вас имя пользователя и пароль, она является службой с ограничением доступа.)
Листинг 1.6. Файлконфигурациислужбы login
auth required pam_securetty.so