Где хранится пароль пользователя в Linux?

Пароли системы находятся в захешированном виде в двух файлах, о которых мы расскажем в данной статье. Получив доступ к этим файлам, можно авторизоваться под нужным пользователем.

Файл passwd

Файл /etc/passwd содержит основную информацию о каждой учетной записи пользователя в системе.

Пример содержимого файла:

john:x:1001:1001::/home/john:/bin/bash
doe:x:1002:1002::/home/doe:/bin/bash

Файл /etc/passwd доступен для чтения, а это означает, что любой пользователь может его прочитать.

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

  • Первое поле. Это имя пользователя для входа в систему;
  • Второе поле. Начало эпохи unix, использовавшейся для хранения зашифрованного пароля. В настоящее время оно содержит букву x, чтобы обозначить, что пароль был назначен, но был сохранен в другом файле теневого файла. Если это второе поле пусто, пользователю не нужно вводить пароль для входа;
  • Третье поле. Идентификатор пользователя;
  • Четвертое поле. Идентификатор группы;
  • Пятое поле. Комментарий;
  • Шестое поле. Использование домашнего каталога;
  • Седьмое поле. Оболочка по умолчанию, обычно указана /bin/bash. Если вместо /bin/bash ничего не указано или false, это означает, что после входа у пользователя не запустится никакой оболочки.

Файл shadow

В файле /etc/shadow хранятся фактические пароли пользователей в зашифрованном формате. На самом деле, есть хэш пароля с дополнительными свойствами, относящиеся к паролям пользователя, такие как даты истечения срока действия пароля.

Пример содержимого файла:

john:$6$Zn1L0SXW$owMV1EFAeY7eLgjxUu2g16yDEB2Etm2kwzJMjrL8rpB6nOf45cEC532F1.PFa/HAy.wz.arnypp5E6MO0u.sJ0:19132:0:99999:7:::
doe:$6$QWNqiFDb$Wb/z4HMn.BJG3mtiZLf1JN7gsjyexX7Nd.0gOixBVT7jHuuNPYPi3mNjJsqgtZ5NGt2ofxT14FHHkVSCmzPSo0:19504:0:99999:7:::

Файл доступен для чтения только для учетной записи root.

Давайте рассмотрим содержимое файла. Каждая строка файла содержит 9 полей, разделенных запятыми:

  • Первое поле. Имя пользователя. Именно так строка в теневом файле соединяется с соответствующей строкой в файле паролей /etc/passwd ;
  • Второе поле. Захешированный пароль с солью (salt). Если поле пароля содержит звездочку или восклицательный знак, то пользователь не сможет войти в систему;
  • Затем идут несколько полей связанных с датами истечения срока действия пароля, такими как минимальный и максимальный возраст пароля последнего изменения пароля и так далее. Более подробное описание руководства можно найти используя команду man shadow.

Пароль захеширован с солью (дополнительными данными). Соль в сочетании с паролем добавляется в процесс хеширования, чтобы обеспечить уникальность выходного хэша, или, другими словами, тот же пароль даст различные хэши из-за этой случайной соли. Они смягчают атаки на пароли, такие как радужные таблицы. Соль генерируется случайным образом для каждого пароля, но это не секрет, как пароль. Если с помощью хэша злоумышленник может найти пароль в открытом виде, то все другие похожие пароли других пользователей по-прежнему в безопасности, потому что их хэш отличается.

У одного и того же пароля хеш отличается. Он уникален, потому что система вычислила хеш, используя как общий пароль, так и соль, которая теперь уникальна для каждого пользователя. Поэтому зная хеш одного пользователя не узнать пароль другого пользователя.

Файл /etc/passwd, /etc/shadow не должны редактироваться вручную, как правило для этого используются соответствующие утилиты.

Запись опубликована в рубрике Это база с метками , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий