Безопасность

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

Где и как хранятся пароли в Linux?
Имя пользователя с соответствующим паролем для конкретной учетной записи является основным требованием, с помощью которого пользователь может получить доступ к системе Linux. Все пароли учетных записей пользователей сохраняются в файле или базе данных, чтобы пользователь мог быть проверен во время попытки входа в систему. У каждого пользователя недостаточно навыков и опыта, чтобы найти этот файл в своей системе. Однако, если вы получите доступ к базе данных или к файлу, в котором хранятся все пароли пользователей для входа в систему, вы можете легко получить доступ к системе Linux. Когда пользователь вводит имя пользователя и пароль в Linux для входа в систему, он сравнивает введенный пароль с записью в различных файлах каталога '/ etc'.

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

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

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

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

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

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

$ cat / etc / passwd

Приведенная выше команда выведет список всех пользователей вашей системы Linux.
На экране вашего терминала будет отображаться следующий тип формата:

Подробная информация о формате полей / etc / passwd
Из изображения выше:

Имя пользователя: Первое поле представляет имя пользователя. Длина поля имени пользователя определяется от 1 до 32 символов. Это используется, когда пользователь входит в систему. В приведенном выше примере "khuzdar" - это имя пользователя.
Пароль: В приведенном выше примере символ «x» означает, что пароль хранится в зашифрованном виде в файле / etc / shadow.
Идентификатор пользователя (UID): Идентификатор пользователя должен быть назначен каждому пользователю отдельно. Нулевой UID назначается пользователю root, а идентификаторы пользователей от 1 до 99 назначаются предопределенным или стандартным учетным записям. Дальнейшие UID от 100 до 999 назначаются системным административным учетным записям или группам. На приведенном выше снимке экрана идентификатор пользователя - 1001.
ID группы (GID): Следующее поле представляет собой идентификатор группы. GID хранится в файле / etc / group. Исходя из приведенного выше примера, пользователь принадлежит к группе с идентификатором 1001.
Информация о User ID: Следующее поле предназначено для комментариев. В этом поле вы можете добавить дополнительную информацию об указанном пользователе, такую ​​как полное имя пользователя, номер телефона и т. Д. Однако в приведенном выше примере пользователь не предоставляет номер телефона.
Домашний каталог: В этом поле отображается расположение домашнего каталога, назначенного текущему пользователю. Если указанный каталог не существует, будет отображаться «/». На изображении выше показано расположение выделенного пользователя в домашнем каталоге, то есть home / kbuzdar.
Команда // оболочка: Абсолютный путь по умолчанию к оболочке или команде / bin / bash. Это известно как оболочка. Например, системный администратор, использующий оболочку nologin. Он действует как заменяющая оболочка для учетных записей системных пользователей. Если оболочка расположена по пути к / sbin / nologin, и пользователь хочет войти непосредственно в систему Linux, оболочка / sbin / nologin закроет или отключит соединение.

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

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

$ grep имя-пользователя / etc / passwd

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

$ grep kbuzdar / etc / passwd


Или же

$ grep -w '^ kbuzdar' / и т.д. / пароль

Показать разрешения для файла / etc / passwd

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

$ ls -l / etc / passwd

На терминале будет отображен следующий образец вывода:

Чтение файла / etc / passwd

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

#!/ bin / bash
# всего семь полей из / etc / passwd, хранящихся как $ f1, f2…, $ f7
в то время как IFS =: читать -r f1 f2 f3 f4 f5 f6 f7
делать
echo "Пользователь $ f1 использует оболочку $ f7 и хранит файлы в каталоге $ f6."
Выполнено < /etc/passwd

Используя цикл while, он прочитает все семь полей, а затем итеративно отобразит содержимое файла на терминале.
Сохраните указанный выше файл с именем 'readfile.ш '.

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

файл чтения $ bash.ш

Изучите файл / etc / shadow

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

$ sudo cat / etc / shadow

Вы можете увидеть все пароли в зашифрованном виде:

Заключение

Из приведенной выше статьи мы видели, что все данные учетной записи пользователя и пароли хранятся в файле / etc / passwd в системе Linux. Вы можете читать этот файл, но только пользователи root имеют «права на запись». Более того, мы также видели все зашифрованные пароли, хранящиеся в файле / etc / shadow. Вы также можете изучить файл / etc / group, чтобы получить подробную информацию о группе пользователя.

Бесплатные движки с открытым исходным кодом для разработки игр для Linux
В этой статье будет рассмотрен список бесплатных игровых движков с открытым исходным кодом, которые можно использовать для разработки 2D- и 3D-игр в L...
Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...
Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...