# /etc/passwd и /etc/shadow

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

## /etc/passwd/

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

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

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

### Формат /etc/passwd

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

```
cat /etc/passwd
```

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

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

```output
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` содержит девять полей, разделенных запятыми:

```txt
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` .

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

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

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

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

* Пароль зашифрован с помощью SHA-512 (пароль усечен для лучшей читаемости).
* Последний раз пароль менялся 23 апреля 2019 г. — `18009` .
* Нет минимального возраста пароля.
* Пароль необходимо менять не реже, чем каждые 120 дней.
* Пользователь получит предупреждающее сообщение за семь дней до истечения срока действия пароля.
* Если пользователь не попытается войти в систему через 14 дней после истечения срока действия пароля, учетная запись будет отключена.
* Срок действия учетной записи отсутствует.

### Выводы

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://antons-organization-1.gitbook.io/administrirovanie-linux/bazovye-zadachi/rabota-s-polzovatelyami-v-linux/etc-passwd-i-etc-shadow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
