Теневой файл, вероятно, является одним из самых важных файлов в вашей системе Linux, и это потому, что он хранит фактические зашифрованные пароли для всего в вашей системе. Теневой файл находится в /etc/shadow и доступен только пользователю root. Фактически, у него есть разрешение 640, которое предоставляет владельцу разрешение на чтение и запись, а группе – на чтение. В этом уроке мы рассмотрим теневой файл.
Теневой файл содержит информацию, разделенную двоеточием. Итак, это выглядело бы примерно так:
В нашем случае мы собираемся выбрать одного из пользователей (user = kalyani) для использования в качестве примера.
kalyani:$6$uUSXwCvO$Ic9kN9dS0BHN.NU.5h7rAcEQbtjPjqWpej5o5y7JlrQK0hdQrzKBZ B1V6CowHhCpk25PaieLcJEqC6e02ExYA.:18917:0:99999:7:::
Здесь девять полей, разделенных двоеточием!
1. Первое поле – это само имя пользователя. В моем случае это кальяни, но в вашем случае это будет ваше имя пользователя.
2. Второе поле содержит зашифрованный пароль.
($6$uUSXwCvO$Ic9kN9dS0BHN.NU.5h7rAcEQbtjPjqWpej5o5y7JlrQK0hdQrzKBZB1V6CowHhCpk25PaieLcJEqC6e02ExYA.). Здесь есть трехдолларовые знаки. Между первым и вторым знаком доллара указан тип шифрования; между вторым и третьим знаком доллара – соль, а после третьего знака доллара – сам хеш.
Здесь вы можете увидеть $6$, это означает, что тип шифрования – SHA-512.
Другие типы шифрования:
- 1$ – MD5
- $2$ – Blowfish
- $3$ – Blowfish
- $5$ – SHA-256
- $6$ – SHA-512
После этого идет uUSXwCvO, соль. Чтобы сделать хеш более уникальным, мы добавляем так называемую соль. Сама соль представляет собой случайную последовательность символов. Эта случайная последовательность символов прикрепляется к паролю во время вычисления хэша.
Если вы хотите попробовать проверить это самостоятельно, вы можете сделать это с помощью пакета whois. Сначала установите пакет whois:
$ sudo apt-get install whois
Затем, после установки пакета whois, вы можете ввести следующее:
$ mkpasswd -m sha-512 PASSWORD [SALT]
В последнем случае замените PASSWORD желаемым паролем и SALT желаемой солью.
Например:
$ mkpasswd -m sha-512 toor uUSXwCvO
Последняя часть зашифрованного пароля или содержимое после третьего знака доллара является фактическим хешем.
3. Третье поле – это дата последней смены пароля. Число рассчитывается по эпохе (1 января 1970 г.). Это означает, что число рассчитывается на основе даты эпохи. В моем случае это номер 18917. Если это поле пустое, это означает, что функции устаревания пароля не включены. 0 в этом поле означает, что пользователь должен изменить свой пароль при следующем входе в систему.
4. Четвертое поле – это минимальный возраст пароля. Минимальный срок действия пароля – это время в днях, которое должно пройти, прежде чем пользователю будет разрешено снова вносить изменения в пароль. Значение 0 означает, что минимального возраста пароля нет. В моем случае это 0. Это означает, что в моей системе нет минимального возраста пароля.
5. Пятое поле – это максимальный срок действия пароля. Максимальный срок действия пароля – это время в днях, в течение которого пользователю потребуется изменить пароль. Пустое значение в этом поле означает, что максимальный срок действия пароля отсутствует. В моем случае это 99999.
6. Шестое поле – период предупреждения пароля. Пользователь будет предупрежден за несколько дней до истечения срока действия пароля, это период предупреждения пароля. В моем случае это 7.
7. Седьмое поле – период бездействия пароля. Период бездействия пароля – это время в днях, в течение которого пароль с истекшим сроком действия все еще принимается. По истечении этого периода и истечении срока действия пароля вход в систему будет невозможен. В моем случае поле пустое, и это означает, что период бездействия пароля отсутствует.
8. Восьмое поле – это срок действия аккаунта. Дата истечения срока действия учетной записи точно такая, как она звучит, день, когда истекает срок действия учетной записи. Это число выражается с эпохи (1 января 1970 г.).
9. Девятое поле – это зарезервированное поле. Это поле зарезервировано на будущее и в настоящее время не используется.
Смена пароля
Все это означает, что пароль необходимо регулярно обновлять или менять. Следующий вопрос: как изменить текущий пароль и избежать всевозможных проблем со старением пароля? Для смены пароля необходимо быть root!
$ sudo passwd {USERNAME}
Вместо {USERNAME} введите собственное имя пользователя, для которого вы хотите изменить пароль. Вам будет предложено ввести текущий пароль. Как только вы введете его, он попросит вас ввести новый пароль, и вы тоже можете его ввести. Вот и все!
Изменение информации об истечении срока действия пароля пользователя
Еще одна информация, которую можно было бы изменить, – это информация об истечении срока действия пароля. В таких случаях очень пригодится команда chage!
На всякий случай вы можете использовать его со следующим:
chage [options]
- -d, –lastday. Это дата последней смены пароля с эпохи. Он пишется как YYYY-MM-DD.
- -E, –expiredate. Это устанавливает дату, когда учетная запись будет отключена. Сама дата выражается как YYYY-MM-DD, начиная с эпохи. Если вы передадите -1, дата истечения срока действия учетной записи не будет.
- -h, –help. Это отобразит справку.
- -I, –inactive. Это устанавливает период бездействия пароля. Если вы поставите -1 в неактивное поле, то информации о бездействии не будет.
- -l, –list. Это отображает информацию об устаревании пароля.
- -m, –mindays. Это устанавливает количество дней между сменой пароля. Если вы поставите 0, это означает, что пользователь может изменить свой пароль в любое время.
- -M, –maxdays. Это устанавливает максимальное количество дней, когда текущий пароль активен. Если передано -1, это снимет проверку действительности пароля.
- -W, –warndays. Это устанавливает период предупреждения пароля.
Теневой файл – это, безусловно, самый важный файл в вашей системе Linux. Раньше файл passwd содержал все пароли, но в наши дни файл passwd представляет собой простой текстовый файл, содержащий информацию о пользователе, а теневой файл вместо этого содержит всю информацию о паролях! И поскольку он содержит информацию о пароле, он как заблокирован для суперпользователя, так и хеширован (зашифрован).
В теневом файле есть однострочные поля, содержащие девять полей, разделенных двоеточиями, каждое из которых выражает информацию о пароле или информацию об устаревании пароля. В любом случае, теневой файл должен быть защищен и заблокирован!