/etc/passwd и /etc/shadow

В системах Linux можно использовать несколько различных схем аутентификации. Наиболее часто используемая и стандартная схема — аутентификация по файлам /etc/passwd и /etc/shadow .

/etc/passwd/

/etc/passwd — это база данных на основе обычного текста, которая содержит информацию для всех учетных записей пользователей в системе. Он принадлежит пользователю root и имеет права 644 . Файл может быть изменен только пользователем root или пользователями с привилегиями sudo и доступен для чтения всем пользователям системы.

Следует избегать изменения файла /etc/passwd вручную, если вы не знаете, что делаете. Всегда используйте команду, предназначенную для этой цели.

Например, чтобы изменить учетную запись пользователя, используйте команду usermod , а чтобы добавить новую учетную запись пользователя, используйте команду useradd .

Формат /etc/passwd

Файл /etc/passwd — это текстовый файл с одной записью в строке, представляющий учетную запись пользователя. Чтобы просмотреть содержимое файла, используйте текстовый редактор или команду, например cat :

cat /etc/passwd

Обычно первая строка описывает пользователя root, за ней следуют учетные записи системного и обычного пользователя. Новые записи добавляются в конец файла.

Каждая строка файла /etc/passwd содержит семь полей, разделенных запятыми:

mark:x:1001:1001:mark,,,:/home/mark:/bin/bash
[--] - [--] [--] [-----] [--------] [--------]
|    |   |    |     |         |        |
|    |   |    |     |         |        +-> 7. Login shell
|    |   |    |     |         +----------> 6. Home directory
|    |   |    |     +--------------------> 5. GECOS
|    |   |    +--------------------------> 4. GID
|    |   +-------------------------------> 3. UID
|    +-----------------------------------> 2. Password
+----------------------------------------> 1. Username
  1. Имя пользователя. Строка, которую вы вводите при входе в систему. Каждое имя пользователя должно быть уникальной строкой на машине. Максимальная длина имени пользователя ограничена 32 символами.

  2. Пароль. В старых системах Linux зашифрованный пароль пользователя хранился в /etc/passwd . В большинстве современных систем для этого поля установлено значение x , а пароль пользователя хранится в /etc/shadow .

  3. UID. Идентификатор пользователя — это номер, присвоенный каждому пользователю. Он используется операционной системой для обозначения пользователя.

  4. GID. Номер идентификатора группы пользователя, относящийся к основной группе пользователя. Когда пользователь создает файл , группа файла устанавливается в эту группу. Обычно название группы совпадает с именем пользователя. Вторичные группы пользователей перечислены в /etc/groups .

  5. GECOS или полное имя пользователя. Это поле содержит список значений, разделенных запятыми, со следующей информацией:

    • Полное имя пользователя или название приложения.

    • Номер комнаты.

    • Рабочий Номер Телефона.

    • Номер домашнего телефона.

    • Другая контактная информация.

  6. Домашний каталог. Абсолютный путь к домашнему каталогу пользователя. Он содержит файлы и конфигурации пользователя. По умолчанию домашние каталоги пользователей названы в честь имени пользователя и создаются в каталоге /home .

  7. Оболочка входа. Абсолютный путь к оболочке входа пользователя. Это оболочка, которая запускается, когда пользователь входит в систему. В большинстве дистрибутивов Linux оболочкой входа по умолчанию является Bash.

Выводы

Файл /etc/passwd отслеживает всех пользователей системы.

/etc/shadow/

/etc/shadow — это текстовый файл, содержащий информацию о паролях пользователей системы. Он принадлежит пользователю root и теневой группе и имеет права 640 .

Формат /etc/shadow

Файл /etc/shadow содержит по одной записи в каждой строке, каждая из которых представляет учетную запись пользователя. Вы можете просмотреть содержимое файла с помощью текстового редактора или такой команды, как cat :

sudo cat /etc/shadow

Обычно первая строка описывает пользователя root, за которым следуют учетные записи системного и обычного пользователя. Новые записи добавляются в конец файла.

Каждая строка файла /etc/shadow содержит девять полей, разделенных запятыми:

mark:$6$.n.:17736:0:99999:7:::
[--] [----] [---] - [---] ----
|      |      |   |   |   |||+-----------> 9. Unused
|      |      |   |   |   ||+------------> 8. Expiration date
|      |      |   |   |   |+-------------> 7. Inactivity period
|      |      |   |   |   +--------------> 6. Warning period
|      |      |   |   +------------------> 5. Maximum password age
|      |      |   +----------------------> 4. Minimum password age
|      |      +--------------------------> 3. Last password change
|      +---------------------------------> 2. Encrypted Password
+----------------------------------------> 1. Username
  1. Имя пользователя. Строка, которую вы вводите при входе в систему. Учетная запись пользователя, существующая в системе.

  2. Зашифрованный пароль. Пароль использует $type$salt$hashed формат $type$salt$hashed . $type — это алгоритм криптографического хеширования метода и может иметь следующие значения:

    • $1$ — 5 MDL

    • $2a$ — Blowfish

    • $2y$ — Eksblowfish

    • $5$ — SHA-256

    • $6$ — SHA-512

    Если в поле пароля есть звездочка ( * ) или восклицательный знак ( ! ), Пользователь не сможет войти в систему, используя аутентификацию по паролю. Другие методы входа в систему, такие как аутентификация на основе ключей или переключение на пользователя , по-прежнему разрешены.

    В старых системах Linux зашифрованный пароль пользователя хранился в /etc/passwd .

  3. Последнее изменение пароля. Это дата последней смены пароля. Число дней отсчитывается с 1 января 1970 года (дата эпохи).

  4. Минимальный возраст пароля. Количество дней, которое должно пройти, прежде чем можно будет изменить пароль пользователя. Обычно он равен нулю, что означает отсутствие минимального возраста пароля.

  5. Максимальный возраст пароля. Количество дней после смены пароля пользователя. По умолчанию этот номер установлен на 99999 .

  6. Период предупреждения. Количество дней до истечения срока действия пароля, в течение которых пользователя предупреждают о необходимости изменения пароля.

  7. Период бездействия. Количество дней после истечения срока действия пароля пользователя до отключения учетной записи пользователя. Обычно это поле пусто.

  8. Дата окончания срока. Дата, когда учетная запись была отключена. Он представлен как дата эпохи.

  9. Не используется. Это поле игнорируется. Он зарезервирован для использования в будущем.

Файл /etc/shadow не следует редактировать вручную, если вы не знаете, что делаете. Всегда используйте команду, предназначенную для этой цели. Например, чтобы изменить пароль пользователя, используйте команду passwd , а чтобы изменить информацию об устаревании пароля, используйте команду chage .

Пример записи

Давайте посмотрим на следующий пример:

linuxize:$6$zHvrJMa5Y690smbQ$z5zdL...:18009:0:120:7:14::

Запись выше содержит информацию о пароле пользователя linuxize:

  • Пароль зашифрован с помощью SHA-512 (пароль усечен для лучшей читаемости).

  • Последний раз пароль менялся 23 апреля 2019 г. — 18009 .

  • Нет минимального возраста пароля.

  • Пароль необходимо менять не реже, чем каждые 120 дней.

  • Пользователь получит предупреждающее сообщение за семь дней до истечения срока действия пароля.

  • Если пользователь не попытается войти в систему через 14 дней после истечения срока действия пароля, учетная запись будет отключена.

  • Срок действия учетной записи отсутствует.

Выводы

В /etc/shadow хранятся записи о зашифрованных паролях пользователей, а также другая информация, связанная с паролями.

Last updated