Файл скрытых паролей
Механизм устаревания паролей ограничивает срок, в течение которого пароль пользователя остается корректным. Этот механизм может быть реализован на общесистемном уровне посредством файла /etc/login.defs либо для отдельных пользователей посредством файла /etc/shadow. Последний называют файлом скрытых паролей. Для каждого пользователя он содержит запись, в которой указаны хешированный пароль и сведения о сроке его действия. По умолчанию этот файл может не существовать. Давайте рассмотрим, как создавать и использовать такой файл.
Файл скрытых паролей по умолчанию создается в ходе инсталляции системы, что существенно повышает ее безопасность, и вот почему. Дело в том, что все хешированные пароли переносятся из файла /etc/passwd в файл /etc/shadow, доступ к которому разрешен только суперпользователю и только для чтения. Кроме того, появляется возможность задать предельный срок действия каждого пароля. Файл /etc/ passwd открыт для чтения, а значит, и для копирования. Если файл скрытых паролей не используется, все хешированные пароли находятся в файле /etc/passwd, и любой пользователь может попытаться «взломать» его с помощью утилиты Crack.
Для того, чтобы создать файл скрытых паролей в Linux (предполагается, что файл не был создан во время инсталляции) не нужны статусы в контакте (см. finestatus.ru), выполните команду pwconv от имени суперпользователя. Она автоматически переместит в файл /etc/shadow все хешированные пароли (а также пароли вида *) и запишет во второе поле каждой записи файла /etc/passwd символ х. Если нужно произвести обратное действие, просто выполните команду pwunconv от имени суперпользователя. Разумеется, информация об устаревании паролей, хранящаяся в файле /etc/shadow, будет потеряна.
Механизм устаревания паролей отдельных пользователей включается только при наличии файла /etc/shadow. С помощью команды chage в этот файл можно добавлять сведения о пользовательских паролях. Фрагмент файла /etc/shadow:
root:otlY/YgV5e.Bk:10640:0:99999:7::: bin:*:10640:0:99999:7::: daemon:*:10640:0:99999:7::: adm:*:10640:0:99999:7::: lp:*:10640:0:99999:7::: sync:*:10640:0:99999:7::: joe:E/ulR7fLAQO6o:10640:0:99999:7::: mary:VBtHXaJk3IPD6:10640:7:30:3:45:: guest1:xdbt9JIxfCUvo:10 64 0:0:99999:7::10640:
Подобно файлу passwd, файл shadow содержит одну строку (запись) для каждого пользователя. Каждая запись состоит из списка полей, разделенных двоеточиями. Всего существует 9 полей. Порядок записей в обоих файлах должен быть идентичным. Поля файла /etc/shadow:
№ |
Команда для модификации |
Описание |
1 |
useradd, usermod и userdel |
Регистрационное имя пользователя; должно в точности соответствовать имени пользователя в файле /etc/passwd |
2 |
passwd
|
Хешированный пароль длиной от 13 до 34 ASCII-символов; допустимые символы — a-z, A-Z, 0-9, ‘.’, $и/ |
3 |
passwd или chage -d |
Дата последнего изменения пароля (число дней, прошедших с начала эпохи UNIX — с 1 января 1970 года) |
4 |
chage -m |
Число дней, которое должно пройти с момента последнего изменения пароля, прежде чем его снова можно будет поменять |
5 |
chage -M |
Число дней, которое должно пройти с момента последнего изменения пароля, когда пользователь обязан будет сменить пароль |
6 |
chage -W |
Число дней до истечения срока действия пароля, когда выдается предупреждение |
7 |
chage -I |
Число дней по истечении срока действия пароля, когда учетная запись блокируется |
8 |
chage -E |
Число дней, которое должно пройти с начала эпохи UNIX, чтобы учетная запись устарела. В полночь последнего дня учетная запись будет заблокирована |
9 |
– |
Зарезервировано |
Команда chage
Для запуска команды chage необходимо иметь привилегии суперпользователя. Это не касается только опции -l, позволяющей пользователю узнать текущие установки. Все остальные опции были определены в таблице. Рассмотрим несколько примеров.
В первом примере пользователю joe запрещается менять пароль в течение 14 дней, а по прошествии 30 дней он обязан поменять пароль:
Во втором примере срок действия учетной записи guest истекает 4 апреля 2009 года:
А вот как пользователь mary может проверить свои текущие установки:
$ chage -1 mary
Minimum: 7
Maximum: 30
Warning: 3
Inactive: 45
Last Change: Feb 18, 2009
Password Expires: Mar 20, 2009
Password Inactive: May 04, 2009
Account Expires: Never
Файл /etc/login.defs
Файл /etc/shadow — не единственный способ включить механизм устаревания паролей. В Linux есть общесистемный файл /etc/login.defs, который задает параметры устаревания паролей всех пользователей, кроме root. В нем также содержится ряд других записей.
В первой части файла содержатся директивы, определяющие местонахождение почтовых ящиков пользователей. Подробнее об этом говорится в комментариях самого файла.
В следующей части файла задаются общесистемные параметры устаревания паролей. Параметры PASS_MIN_DAYS, PASS_MAX_DAYS и PASS_WARN_AGE соответствуют четвертому, пятому и шестому полям файла /etc/shadow (см. табл.). Установки файла /etc/shadow имеют более высокий приоритет. Параметры устаревания паролей в файле /etc/login.defs:
PASS_MAX_DAYS 30 PASS_MIN_DAYS 10 PASS_MIN_LEN 5 PASS_WARN_AGE 7
Параметр PASS_MIN_LEN задает минимальную длину пароля для всех пользователей, кроме root. Если используются модули РАМ, их установки имеют более высокий приоритет.
Помните, что записи файла /etc/shadow действительны для конкретных пользователей, поэтому если в файле /etc/login.defs заданы параметры устаревания паролей, а в файле /etc/shadow описан не каждый пользователь, то для «отсутствующих» пользователей будут выбраны стандартные установки. Таким образом, в файле /etc/login.defs можно задать установки по умолчанию, а затем настроить их для конкретных пользователей в файле /etc/shadow.
Оставшаяся часть файла показана ниже. Параметры CHFN_AUTH и CHFN_RESTRICT могут принимать значение yes либо no. Если первый из них равен yes, то всякий раз, когда пользователь выполняет команду chfn или chsh, будет выдаваться запрос на ввод пароля. В противном случае пользователь сможет менять информацию, выдаваемую утилитой finger, и при этом не вводить пароль. Только суперпользователь имеет право менять данные утилиты finger, относящиеся к другим пользователям. Если параметр CHFN_RESTRICT равен yes, пользователь не сможет поменять свое «настоящее» имя с помощью команды chfn —f. Завершающие директивы файла /etc/login.defs:
UID_MIN 500 UID_MAX 60000 GID_MIN 500 GID_MAX 60000 # CHFN_AUTH yes # CHFN_RESTRICT yes # #USERDEL_CMD /usr/sbin/userdel_local # CREATE_HOME yes
Все параметры, за исключением CHFN_AUTH и CHFN_RESTRICT, связаны с командами useradd и userdel. Это утилиты командной строки, предназначенные для управления учетными записями. Параметры UID_MIN, UID_MAX и CREATE_HOME задают стандартное поведение команды useradd, а параметр USERDEL_CMD расширяет функциональные возможности команды userdel.
Если при вызове команды useradd не задать идентификатор пользователя, то при наличии показанных выше установок команда назначит первой созданной учетной записи идентификатор 500, следующей — идентификатор 501 и т.д. вплоть до максимального идентификатора 60000. Параметр CREATE_HOME может принимать значение yes или no. В первом случае команда useradd автоматически создаст начальный каталог пользователя в каталоге /home. Во втором случае начальный каталог будет создан только в том случае, если указан флаг -m. Дополнительные установки команды useradd содержатся в файле /etc/default/useradd. Если возникает неоднозначность, установки файла /etc/login.defs имеют приоритет.
Параметр USERDEL_CMD задает сценарий или программу (должно быть указано полное имя) для выполнения перед удалением учетной записи. По умолчанию ни сценария, ни программы не существует. Команда userdel не удалит учетную запись, если пользователь зарегистрирован в системе и/или в ней выполняются процессы пользователя. С помощью параметра USERDEL_CMD администратор может задать собственную программу, которая проанализирует и, возможно, устранит все факторы, препятствующие удалению учетной записи.
Параметры GID_MIN и GID_MAX задают, соответственно, минимальное и максимальное значения идентификаторов групп.
В Linux, есть графические утилиты, позволяющие выполнять все действия, связанные с управлением учетными записями. Сюда относится как универсальная утилита linuxconf, так и специальные административные программы (например, User Manager).
Твитнуть