Традиционные ОС *nix хранят информацию о пользователях в файле /etc/passwd, его используют многие утилиты и естественно, что он открыт на чтение для всех пользователей, что опасно. Для повышения безопасности используется shadow-копия этого файла /etc/shadow, в которой хранятся хеш-пароли всех пользователей системы. Файл /etc/passwd остаётся в системе, но не хранит в себе пароли пользователей, предназначенные для этого поля содержат только символ х.
Если Linux использует обычный формат хранения паролей, то установив утилиту pwconv можно произвести конвертацию в формат shadow. Для конвертации назад (в традиционный нормальный формат) служит утилита pwunconv.
Пример строки в /etc/shadow может выглядеть вроде этого:
1 |
root:$6$Xwg3PsUW$M49EeBEW7jBPfArGNLcNt6p2uck2o71V.XS8VZzhcNCYQRpPkWTD16WSrTHUhQ2qegMgb56CLuc2Qe/TxXT.H0:11983:0:99999:7::: |
Что означают поля в /etc/shadow:
- username длиной до 8 символов, совпадает с username из файла /etc/passwd.
- Детали хеширования пароля и сам пароль. Если поле пароля содержит символы ! или * — это означает, что аккаунт заблокирован. Два восклицательных знака подряд !! говорят о том, что пароль никогда не был установлен. Пустая запись (то есть, ::) показывает, что для входа пароль не нужен. Поле с паролем состоит из сегментов $id$salt$hashed. В данном примере $6 = SHA-512 (алгоритм хеширования). Другие алгоритмы GNU/Linux:
- $1$ is MD5
- $2a$ is Blowfish
- $2y$ is Blowfish
- $5$ is SHA-256
- $6$ is SHA-512
$Xwg3PsUW$ = Соль служит для смешения в функции хеширования. Соль делает бессмысленной переборку паролей по его хешу.
Длинная строка символов — хешированный пароль. Длина строки зависит от метода хеширования, для SHA-512 — это 86 символов. Для $1 = MD5 — 22 символа, для $5 = SHA-256 — 43 символа.
3. lastchanged — Время последнего изменения пароля. Измеряется в количестве дней с 1 января 1970.
4. Minimum — время жизни пароля или число дней до смены пароля (0 означает, что он может быть сменен всегда).
5. Maximum — число дней, после которых пароль должен быть сменен (99999 показывает, что пользователь может не менять пароль).
6. Warn число дней, в течение которых пользователь будет получать предупреждения о необходимости изменить пароль.
7. Inactive Число дней после окончания действия пароля, когда еще можно работать. Если пароль не сменить, после данного срока он выдохнется, и аккаунт будет заблокирован.
8. Expire Число дней (начиная с 1 января 1970) после которых пароль не может быть использован.
9. Зарезервировано для вероятного будущего использования.
Свежие комментарии