Вопрос или проблема
Второе поле в файле Linux /etc/shadow
представляет собой пароль. Однако, что мы видели, так это:
-
Некоторые поля пароля могут содержать один восклицательный знак
<account>:!:.....
-
Некоторые поля пароля могут содержать два восклицательных знака
<account>:!!:.....
-
Некоторые поля пароля могут содержать знак звезды
<account>:*:.....
По некоторым исследованиям в интернете и через эту тему, я могу понять, что *
означает, что пароль никогда не устанавливался, !
означает заблокирован.
Может ли кто-нибудь объяснить, что означает двойной восклицательный знак (!!
)? И чем это отличается от (!
)?
Присутствие как “!” так и “!!” в поле пароля означает, что невозможно войти в учетную запись, используя пароль.
Как можно прочитать в документации RHEL-4, “!!” в поле пароля shadow означает, что учетная запись пользователя была создана, но пароль еще не был задан. Документация утверждает (возможно, ошибочно), что до тех пор, пока системный администратор не задаст начальный пароль, она по умолчанию заблокирована.
Тем не менее, как отметили другие, и как указывают страницы справки для более поздних версий RHEL-7, возможно, что пользователь все равно сможет войти в учетную запись другими способами, такими как через SSH, используя аутентификацию по открытому/закрытому ключу.
Также стоит отметить, что <account>::.....
означает, что пароль не требуется (пустой пароль).
Если вы создаете пользователя только с ssh ключом, вы можете использовать <account>::0:0:99999:7:::
, чтобы потребовать от пользователя установить свой пароль (т.е. тот, который они используют для sudo) при первом входе.
Примечание: аутентификация только по ключу означает, что пароль НЕ является фактором аутентификации.
В кратце:
! указывает на заблокированную учетную запись, часто используется для временного отключения учетной записи без удаления хеша пароля. Таким образом, вы можете найти ! вместе с паролем или просто ! без всего остального, если пароль пустой.
!! указывает на то, что пароль никогда не был установлен для учетной записи, что означает, что учетная запись отключена до тех пор, пока пароль не будет назначен.
Ответ или решение
Вопрос о различиях между символами !
, !!
и *
в файле /etc/shadow
является ключевым для понимания механизмов управления доступом к учетным записям пользователей в Linux. Каждый из этих символов имеет свое уникальное значение и используется для управления доступом к учетной записи.
Символ !
Символ !
в поле пароля означает, что учетная запись заблокирована. Это позволяет администратору временно отключить доступ к учетной записи без удаления хеша пароля. Строка вида:
<account>:!<other_fields>
указывает на то, что пользователь не сможет аутентифицироваться с использованием пароля, так как учетная запись заблокирована. Однако, в некоторых случаях, такой пользователь все еще может получать доступ к системе через другие методы, например, используя SSH-ключи, если они настроены.
Символы !!
Двойной символ !!
указывает на то, что учетная запись была создана, но для нее не был установлен пароль. Строка вида:
<account>:!!<other_fields>
означает, что учетная запись временно недоступна до тех пор, пока администратор не назначит ей пароль. Это может быть полезно при создании новых учетных записей, чтобы предотвратить несанкционированный доступ до завершения настройки аккаунта и назначения пароля.
По информации, приведенной в более новых версиях документации RHEL, учетная запись с !!
может быть доступна через альтернативные методы аутентификации. Это означает, что, в отличие от !
, наличие !!
может не запрещать доступ через SSH с использованием публичного/приватного ключа.
Символ *
Символ *
означает, что пароль для данной учетной записи никогда не был установлен. Учетная запись с такой пометкой также недоступна для входа по паролю. Строка вида:
<account>:*<other_fields>
указывает, что доступ к системе по паролю невозможен. Это может использоваться для пользователей, которым позволено подключаться к системе только через другие механизмы аутентификации (например, SSH-ключи).
Сравнение и резюме
-
!
: Учетная запись заблокирована, доступ по паролю невозможен. Может быть использован для временного отключения доступа. -
!!
: Учетная запись никогда не имела установленного пароля. Она недоступна до назначения пароля и может быть доступна через альтернативную аутентификацию, если это настроено. -
*``**: Учетная запись также недоступна по паролю. Это указывает на то, что пароль никогда не был установлен, и учетная запись может использовать только альтернативные методы доступа.
Эти символы играют важную роль в безопасности учетных записей пользователей в системах Linux, и понимание их значений позволяет администраторам более эффективно управлять доступом.