Где хранить пароли linux

Содержание
  1. Где хранятся пароли пользователей Linux
  2. Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей
  3. Глава 27. Пароли пользователей
  4. Утилита passwd
  5. Файл shadow
  6. Шифрование ключевых фраз с помощью утилиты passwd
  7. Шифрование ключевых фраз с помощью утилиты openssl
  8. Шифрование ключевых фраз с помощью функции crypt
  9. Файл /etc/login.defs
  10. Утилита chage
  11. Блокировка учетных записей
  12. Редактирование локальных файлов
  13. Практическое задание: пароли пользователей
  14. Корректная процедура выполнения практического задания: пароли пользователей
  15. Где и как хранятся пароли в Linux?
  16. Предварительные условия
  17. Базовые сведения о файле/etc/passwd
  18. Поиск пользователя в файле/etc/passwd
  19. Структура хранения данных о пользователе в Linux. Файл /etc/passwd
  20. Содержимое файла /etc/passwd
  21. Структура записей о пользователе Linux в файле /etc/passwd
  22. Поле login
  23. Поле password
  24. Поле UID
  25. Поле GID
  26. Поле GECOS
  27. Поле home
  28. Поле shell

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

В Linux нет особого реестра, где бы хранились настройки программ, данные пользователей и другие компоненты системы. Всё хранится в файлах. В этой небольшой статье мы поговорим о том, где хранятся пароли пользователей Linux.

Изначально для хранения паролей использовался файл /etc/passwd. Но этот файл доступен для чтения всем пользователям. Поэтому, из соображений безопасности, пароли пользователей были перенесены в файл /etc/shadow. Этот файл доступен для чтения только пользователю root.

Важно отметить, что пароли в этом файле хранятся не в открытом виде, а в хэшированном. Существует несколько алгоритмов хэширования паролей для Linux. Подробно всё это рассматривалось в статье про смену пароля Linux. Сейчас же давайте посмотрим на общий синтаксис файла /etc/shadow:

sudo cat /etc/shadow

В первой строке представлены следующие данные:

  • root — имя пользователя, для которого сохранен пароль;
  • $6$yr. — хэш пароля, длина хэша от пароля никак не зависит, в данном случае зашифровано слово password;
  • 18376 — дата последнего изменения пароля;
  • 0 — количество дней на смену пароля, если его срок действия истёк;
  • 999999 — количество дней от момента последней смены пароля до момента, когда надо сменить пароль принудительно;
  • 7 — за сколько дней пользователь будет предупреждён о необходимости смены пароля.
  • Ещё три поля — задают параметры отключения учётной записи пользователя.

Это всё, что следует знать об этом файле. В Linux есть ещё одно место, где приложения хранят свои пароли, SSH-ключи и другие секретные данные. Это хранилище ключей. В Gnome утилита называется SeaHorce. Вы можете найти её по названию в главном меню:

В самой утилите вы сможете найти и удалить ключи от различных приложений, ключ от хранилища паролей Chromium, токен доступа в Skype, а также все SSH-ключи, добавленные к вашей системе.

Естественно, здесь всё тоже захэшировано и просто прочитать пароль не получиться, если, конечно, какое-нибудь приложение не хранит их в открытом виде. Теперь вы знаете, где хранятся пароли в Linux. На этом всё.

Источник

Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей

Глава 27. Пароли пользователей

Данная глава содержит дополнительную информацию о паролях локальных пользователей.

В главе подробно описаны три метода установки паролей; с использованием утилиты passwd , с использованием реализации алгоритма шифрования passwd из библиотеки openssl , а также с использованием функции crypt в программе на языке C.

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

Утилита passwd

Файл shadow

Файл /etc/shadow содержит таблицу с девятью разделенными двоеточиями столбцами. Эти девять столбцов (слева направо) содержат имя пользователя, зашифрованный пароль, время последнего изменения пароля (первый день соответствует 1 января 1970 года), количество дней, в течение которых пароль должен оставаться неизменным, день истечения срока действия пароля, количество дней перед истечением срока действия пароля, в течение которых должно выводиться предупреждение, количество дней после истечения срока действия пароля, по прошествии которых учетная запись должна быть отключена, а также день, когда учетная запись была отключена (также с начала 1970 года). Последнее поле пока не имеет значения.

Все пароли в примере выше являются хэшами фразы hunter2 .

Шифрование ключевых фраз с помощью утилиты passwd

Шифрование ключевых фраз с помощью утилиты openssl

Другой способ создания учетных записей пользователей с паролями заключается в использовании параметра -p утилиты useradd, но в случае использования данного параметра утилите необходимо передавать уже зашифрованный пароль. Вы можете зашифровать пароль с помощью команды openssl passwd .

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

Читайте также:  Как тестировать приложения windows

Шифрование ключевых фраз с помощью функции crypt

Обратили ли вы внимание на то, что первые два символа зашифрованного пароля являются значением salt ?

Файл /etc/login.defs

Утилита chage

Блокировка учетных записей

Пароли из файла /etc/shadow не могут начинаться с символа восклицательного знака. Если второе поле в строке из файла /etc/passwd начинается с символа восклицательного знака, пароль не может использоваться.

Использование данной особенности обычно называется блокировкой , деактивацией или отключением пользовательской учетной записи. Помимо текстового редактора vi (или vipw) вы можете использовать утилиту usermod для этой цели.

Следует подходить с осторожностью к работе и учитывать различия параметров интерфейса командной строки утилит passwd , usermod и useradd в различных дистрибутивах Linux. Проверяйте содержимое локальных файлов при использовании таких возможностей, как «деактивация, отключение или блокировка» учетных записей пользователей и их паролей.

Редактирование локальных файлов

Практическое задание: пароли пользователей

1. Установите пароль hunter2 для пользователя serena .

2. Также установите пароль для пользователя venus , после чего заблокируйте учетную запись пользователя venus с помощью утилиты usermod . Проверьте наличие признаков блокировки в файле /etc/shadow до и после осуществления блокировки.

3. Используйте команду passwd -d для деактивации пароля пользователя serena . Проверьте наличие строки для пользователя serena в файле /etc/shadow до и после осуществления деактивации.

4. Каковы различия между операцией блокировки пользовательской учетной записи и операцией деактивации пароля пользовательской учетной записи, которые мы только что осуществляли с помощью команд usermod -L и passwd -d ?

5. Попытайтесь изменить пароль serena на пароль serena as serena.

6. Сделайте так, чтобы пользователь serena был обязан изменять пароль через каждые 10 дней.

7. Сделайте так, чтобы каждый новый пользователь был обязан изменять свой пароль через каждые 10 дней.

8. Воспользуйтесь учетной записью пользователя root для создания резервной копии файла /etc/shadow . Используйте текстовый редактор vi для копирования хэша пароля hunter2 из строки пользователя venus в строку пользователя serena . Может ли после этого пользователь serena войти в систему с паролем hunter2 ?

9. В каких случаях следует использовать утилиту vipw вместо vi ? Какая проблема может возникнуть при использовании текстового редактора vi или vim для редактирования файла паролей?

10. Используйте команду chsh для вывода списка доступных командных оболочек (данная команда будет работать исключительно в дистрибутивах RHEL/CentOS/Fedora) и сравните вывод с выводом команды cat /etc/shells .

11. Какой параметр утилиты useradd позволяет установить имя домашней директории пользователя?

12. Как можно определить, заблокирован или разблокирован пароль пользователя serena ? Предложите решение на основе утилиты grep , а также решение на основе утилиты passwd .

Корректная процедура выполнения практического задания: пароли пользователей

1. Установите пароль hunter2 для пользователя serena .

2. Также установите пароль для пользователя venus , после чего заблокируйте учетную запись пользователя venus с помощью утилиты usermod . Проверьте наличие признаков блокировки в файле /etc/shadow до и после осуществления блокировки.

Обратите внимание на то, что в результате выполнения команды usermod -L перед хэшем пароля добавляется символ восклицательного знака.

3. Используйте команду passwd -d для деактивации пароля пользователя serena . Проверьте наличие строки для пользователя serena в файле /etc/shadow до и после осуществления деактивации.

4. Каковы различия между операцией блокировки пользовательской учетной записи и операцией деактивации пароля пользовательской учетной записи, которые мы только что осуществляли с помощью команд usermod -L и passwd -d ?

Блокировка предотвратит вход пользователя в систему с использованием установленного пароля благодаря добавлению символа ! перед хэшем пароля в файле /etc/shadow .

Деактивация с помощью утилиты passwd приведет к удалению хэша пароля из файла /etc/shadow .

5. Попытайтесь изменить пароль serena на пароль serena as serena.

Войдите в систему с именем пользователя serena , после чего выполните команду: passwd serena . Исполнение команды должно завершиться неудачей!

6. Сделайте так, чтобы пользователь serena был обязан изменять пароль через каждые 10 дней.

7. Сделайте так, чтобы каждый новый пользователь был обязан изменять свой пароль через каждые 10 дней.

8. Воспользуйтесь учетной записью пользователя root для создания резервной копии файла /etc/shadow . Используйте текстовый редактор vi для копирования хэша пароля hunter2 из строки пользователя venus в строку пользователя serena . Может ли после этого пользователь serena войти в систему с паролем hunter2 ?

9. В каких случаях следует использовать утилиту vipw вместо vi ? Какая проблема может возникнуть при использовании текстового редактора vi или vim для редактирования файла паролей?

Утилита vipw выведет предупреждение в том случае, если кто-либо еще в данный момент редактирует данный файл (с помощью утилиты vipw ).

Читайте также:  Astra linux special edition java

10. Используйте команду chsh для вывода списка доступных командных оболочек (данная команда будет работать исключительно в дистрибутивах RHEL/CentOS/Fedora) и сравните вывод с выводом команды cat /etc/shells .

11. Какой параметр утилиты useradd позволяет установить имя домашней директории пользователя?

12. Как можно определить, заблокирован или разблокирован пароль пользователя serena ? Предложите решение на основе утилиты grep , а также решение на основе утилиты passwd .

Источник

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

Главное меню » Linux » Где и как хранятся пароли в Linux?

Файл /etc/passwd хранит всю важную информацию, необходимую для входа пользователя. Проще говоря, в файле /etc/passwd хранятся данные учетной записи пользователя. Этот файл представляет собой обычный текстовый файл, содержащий полный список всех пользователей вашей системы Linux. Он содержит информацию об имени пользователя, пароле, UID (идентификатор пользователя), GID (идентификатор группы), оболочке и домашнем каталоге. Этот файл должен иметь разрешения на чтение, поскольку многие утилиты командной строки используются для сопоставления идентификаторов пользователей с именем пользователя. Но должны иметь ограниченные права на запись только для учетных записей суперпользователя или пользователя root.

В этой статье будет показано, как и где можно хранить пароли учетных записей системных пользователей в дистрибутиве Linux. Мы реализовали все демонстрации в системе Ubuntu 20.04. Однако вы можете найти файл /etc/passwd в любом дистрибутиве Linux.

Предварительные условия

У вас должны быть права root для выполнения административных команд.

Базовые сведения о файле/etc/passwd

Файл/etc/passwd содержит информацию об учетной записи пользователя вашей системы. Все сохраненные поля разделяются знаком двоеточия «:».
Когда вы запустите следующую команду, вы увидите каждую запись файла /etc/passwd:

Приведенная выше команда выведет список всех пользователей вашей системы Linux.

Подробная информация о форматах полей /etc/passwd:

  • Username: первое поле представляет имя пользователя. Длина поля имени пользователя определяется от 1 до 32 символов. Это используется, когда пользователь входит в систему.
  • Password: В приведенном выше примере символ «x» означает, что пароль хранится в зашифрованном виде в файле /etc/shadow.
  • User ID (UID): идентификатор пользователя должен быть отдельно назначен каждому пользователю. Нулевой UID назначается пользователю root, а идентификаторы пользователей от 1 до 99 назначаются предопределенным или стандартным учетным записям. Дальнейшие UID от 100 до 999 назначаются системным административным учетным записям или группам.
  • Group ID (GID): Следующее поле представляет собой идентификатор группы. GID хранится в файле /etc/group.
  • Information about User ID: Следующее поле предназначено для комментариев. В этом поле вы можете добавить некоторую дополнительную информацию об указанном пользователе, такую как полное имя пользователя, номер телефона и т. д.
  • Home directory: в этом поле отображается расположение домашнего каталога, назначенного текущему пользователю. Если указанный каталог не существует, будет отображаться «/».
  • Command //shell: Абсолютный путь по умолчанию к оболочке или команде – /bin/bash. Это известно как оболочка. Например, системный администратор, использующий оболочку nologin. Он действует как замещающая оболочка для учетных записей пользователей системы. Если оболочка расположена по пути /sbin/nologin, и пользователь хочет войти непосредственно в систему Linux, оболочка /sbin/nologin закроет или отключит соединение.

Поиск пользователя в файле/etc/passwd

Вы можете найти конкретного пользователя с помощью файла/etc/passwd, используя команду grep. Например, мы хотим найти имя пользователя andreyex из файла/etc/passwd, используя следующий синтаксис, тогда мы можем легко найти указанного пользователя, сэкономив наше время:

Приведенный выше синтаксис изменится на следующую форму:

Источник

Структура хранения данных о пользователе в Linux. Файл /etc/passwd

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

Содержимое файла /etc/passwd

Если отрыть и посмотреть содержимое файла /etc/passwd , то можно увидеть, что он состоит из строк, которые начинаются с имени пользователя, после которого через знак двоеточия : следуют ряд текстовых записей. Некоторые записи могут отсутствовать, и тогда двоеточия идут одним за другим. Всего в одной строке шесть двоеточий, разделяющих семь записей, относящихся к одному пользователю. В одной строке содержится информация только об одном пользователе. Так по количеству строк можно определить, сколько всего пользователей зарегистрировано на данной машине.

Читайте также:  Spring boot windows service

Структура записей о пользователе Linux в файле /etc/passwd

Итак, разберём поля, относящиеся к пользователю в этом файле. Как было указано их ровно семь:

login : password : UID : GID : GECOS : home : shell

Поле login

Поле login содержит регистрационное имя (или логин) пользователя. Регистрационные имена должны быть уникальными и представлять собой строки не длиннее 32 символов (любые, кроме двоеточия и символа новой строки). По сути дела, имя пользователя — это его короткий и легко запоминаемый псевдоним, который используется при входе в систему и часто включается в адреса электронной почты.

Поле password

Поле password предназначено для хранения пароля пользователя. Но хранить его в явном виде, да ещё и все пароли в одном месте, не безопасно. Поэтому в этом поле обычно стоит символ x , вместо паролей хранятся их хэши, и не в этом поле, а в специальном файле /etc/shadow . Таким образом, даже если кому-то удастся получить файл /etc/passwd , то паролей пользователей в нём нет и требуется ещё файл /etc/shadow , в котором хранятся хэши паролей (зашифрованные записи самих паролей). То есть пароль пользователя в явном виде не знает даже администратор. Можно конечно порадоваться, но админ всегда может поменять ваш пароль и войти с этим новым паролем на компьютер. Так что root — всё равно имеет доступ ко всему на компьютере. (Другое дело, что при смене пароля придётся объяснять пользователю, почему он вдруг не может войти под своим логином, но это уже другая история.) 😉

Поле UID

Поле UID содержит идентификатор пользователя. Идентификатор пользователя — это число от 0 до 2 32 -1. Пользователь с идентификатором 0 (обычно root ) называется суперпользователем и имеет право на выполнение любых операций в системе. Принято соглашение о выделении «специальным» пользователям ( bin , daemon ), назначение которых — только запуск определённых программ, маленьких идентификаторов (меньше 100 или, в некоторых дистрибутивах Linux, меньше 500). По UID в некоторых программах можно определить, что за пользователь совершает (или совершил (в логах)) какое-либо действие. В системе могут существовать несколько пользователей с одним идентификатором. Это нередко используется взломщиками, когда они после проникновения в систему создают себе учётную запись с UID =0. В результате они выглядят как обычные пользователи, но на самом деле имеют права root .

Поле GID

Поле GID содержит идентификатор группы пользователя. Один пользователь в UNIX может принадлежать к одной или нескольким группам, которые используются для задания прав более чем одного пользователя на тот или иной файл. Максимальное количество групп, в которых может состоять один пользователь, разное в разных вариантах системы. Список групп с их участниками задаётся в /etc/group . В файле /etc/passwd указывается идентификатор группы по умолчанию.

Поле GECOS

Поле GECOS хранит вспомогательную информацию о пользователе (номер телефона, адрес, полное имя и так далее). Оно не имеет чётко определённого синтаксиса.

Поле home

Поле home содержит путь папке пользователя (домашнему каталогу). После входа в систему пользователь оказывается в своём домашнем каталоге, в котором хранятся данные пользователя: файлы, логи и прочая информация, относящаяся к работе этого пользователя на данном компьютере. Если на момент входа в систему домашний каталог отсутствует, то система выдаёт сообщение об ошибке и отказывается допустить пользователя к командной строке. Такое поведение не характерно для GNU/Linux; в большинстве дистрибутивов этой ОС просто выводится предупреждение, после чего пользователь попадает в каталог « / ». В целях безопасности это можно изменить посредством установки параметра DEFAULT_HOME в файле /etc/login.defs в значение no .

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

Поле shell

Поле shell содержит данные по регистрационной оболочке, подключенной к учётной записи пользователя. В поле регистрационной оболочки задаётся shell , то есть интерпретатор командной строки. Здесь может быть указана любая программа, и пользователь может сам выбирать для себя наиболее подходящую при помощи команды chsh . Тем не менее, некоторые системы в целях безопасности требуют, чтобы суперпользователь root явно разрешил использовать приложение в качестве интерпретатора командной строки. Для этого используется специальный файл /etc/shells , содержащий список допустимых оболочек. Для того, чтобы отключить доступ пользователя к shell , в это поле можно ввести значение /bin/false . Таким образом, пользователь при попытке зайти в систему через консоль будет попадать на обработчик /bin/false вместо запуска оболочки shell заданной в системе по умолчанию, например /bin/bash или /bin/date .

Источник

Оцените статью