Кроме установки пароля команда passwd также позволяет посмотреть его статус. Для этого команде передается опция -S
Например, пусть у нас ранее был создан пользователь "superuser1", и у него установлен пароль:
eugene@Eugene:~$ sudo useradd superuser1 eugene@Eugene:~$ sudo passwd superuser1 New password: Retype new password: passwd: password updated successfully
Посмотрим статус пароля данного пользователя "superuser1":
eugene@Eugene:~$ sudo passwd -S superuser1 superuser1 P 2024-03-07 0 99999 7 -1
Статус пароля выводит следующую информацию:
Имя пользователя
Дата установки пароля.
Количество дней до того, как пароль может быть изменен.
Количество дней, после которых необходимо сменить пароль.
Количество дней до истечения срока действия пароля, когда пользователь получает предупреждение.
Количество дней после истечения срока действия пароля, после которых учетная запись блокируется.
Аналогично можно получить статус пароля текущего пользователя:
eugene@Eugene:~$ passwd -S eugene P 2024-01-28 0 99999 7 -1
Файл /etc/passwd позволяет получить нам информацию различную информацию о пользователе, в том числе и о его пароле. Например, получим данные о выше созданном пользователе superuser1:
superuser1:x:1001:1001::/home/superuser1:/bin/sh
Второе поле - символ "x" указывает, что пароль хранится в файле /etc/shadow. Посмотрим на этот файл. Он имеет вид наподобие следующего:
root:*:13669:0:99999:7::: daemon:*:13669:0:99999:7::: bin:*:13669:0:99999:7::: sys:*:13669:0:99999:7::: sync:!:13669:0:99999:7::: sssd:!:13669:::::: eugene:$1$Qqn0p2NN$L7W9uL3mweqBa2ggrBhTB0:13669:0:99999:7::: ........................................
Строки в /etc/shadow также разделены на несколько полей, которые разделены двоеточием. Это следующие поля:
Логин
Зашифрованный пароль. Кроме собственно пароля здесь может стоять знак !, который означает, что вход в систему в настоящее время отключен. Также может использоваться символ *, который означает системную учетную запись - она используется для запуска служб, но не разрешена для входа в интерактивную оболочку (поэтому в основном имеет тот же эффект, что и !)
Дни между 1 января 1970 г. и датой последнего изменения пароля.
Минимальное количество дней до того, как пароль может быть изменен - срок, в течение которого пользователь должен использовать один и тот же пароль.
Максимальное количество дней, после которых пароль необходимо изменить - срок, в течение которого пользователь может использовать один и тот же пароль.
Количество дней до истечения срока действия пароля, в течение которых пользователь получает сообщение о необходимости смены пароля.
Количество дней после истечения срока действия пароля, после которого учетная запись отключается. (Если это произойдет, для разблокировки пароля потребуется вмешательство администратора.)
Срок действия: дни между 1 января 1970 г. и датой отключения учетной записи.
Зарезервированное поле (данное поле в настоящее время не используется).
Получим данные пароля созданного в начале статьи пользователя superuser1:
eugene@Eugene:~$ sudo grep superuser1 /etc/shadow superuser1:$y$XUwEQCaqGCpg8G87cC2$Dimds3J:19796:0:99999:7:::
В данном случае получается следующая палитра данных:
superuser1
- логин
$y$XUwEQCaqGCpg8G87cC2$Dimds3J
- зашифрованный пароль
19796
- количество дней, прошедших с 1 января 1970 г до последнего изменения (или создания, если не изменялся) пароля
0
- минимальное количество дней, в течение которых пользователь может использовать пароль
99999
- макисмальное количество дней использования пароля
7
- период предупреждения перед истечением пароля
Все остальные параметры не указаны.
Но, допустим, удалим пароль для пользователя superuser1 и снова проверим состояние пароля:
eugene@Eugene:~$ sudo passwd -d superuser1 passwd: password changed. eugene@Eugene:~$ sudo grep superuser1 /etc/shadow superuser1::19796:0:99999:7:::
Теперь пароль отсутствует, о чем говорят два двоеточия подряд после имени пользователя - ::