- Использование passwd и adduser для управления паролями на выделенном сервере Linux
- Что такое файл «/etc/passwd»?
- Чтение файла «/etc/passwd»
- Что такое «/etc/shadow»?
- Чтение файла «/etc/shadow»
- Изменение пароля
- Создание нового пользователя
- Итоги
- Где и как хранятся пароли в Linux?
- Предварительные условия
- Базовые сведения о файле/etc/passwd
- Поиск пользователя в файле/etc/passwd
Использование passwd и adduser для управления паролями на выделенном сервере Linux
Пароли и аутентификация – это понятия, с которыми сталкивается каждый пользователь, работающий в среде Linux. Данные темы охватывают ряд различных конфигурационных файлов и инструментов.
Данное руководство рассматривает некоторые базовые файлы, такие как «/etc/passwd» и «/etc/shadow», а также такие инструменты для настройки проверки подлинности, как команды «passwd» и «adduser».
Для демонстрации примеров используется выделенный сервер Ubuntu 12.04 , но любой современный дистрибутив Linux работает таким же образом.
Что такое файл «/etc/passwd»?
Для начала нужно рассмотреть файл под названием «/etc/passwd», который на самом деле не содержит паролей.
Когда-то этот файл хранил хешированные пароли всех пользователей в системе. Тем не менее, по соображениям безопасности позже эта ответственность была перенесена в отдельный файл.
Итак, что же находится в файле «/etc/passwd»?
less /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
. . .
Первое, на что стоит обратить внимание: этот файл доступен для непривилегированных пользователей.
То есть, любой пользователь системы может читать данный файл. Вот почему все пароли были перенесены в другой файл.
Чтение файла «/etc/passwd»
Каждая строка файла содержит информацию о входе всех пользователей системы. Некоторые из этих пользователей могут быть созданы для работы демонов и фоновых служб.
Чтобы объяснить, какая именно информация содержится в строках данного файла, нужно подробно рассмотреть одну строку.
Поля информации разделяются двоеточием (:). Каждая строка типичного Linux-файла «/etc/passwd» содержит 7 полей:
- Root: имя пользователя;
- х: место для информации о паролях; пароль можно найти в файле «/etc/shadow».
- 0: ID пользователя. Каждый пользователь имеет уникальный идентификатор, благодаря которому система распознает его. ID root-пользователя всегда 0;
- 0: ID группы. Каждая группа имеет уникальный идентификатор. По умолчанию у каждого пользователя есть главная группа. Опять же, ID root-группы всегда 0;
- root: поле для примечаний. Данное поле можно использовать для описания пользователя или его функций. Оно может содержать что угодно, начиная от контактной информации пользователя и заканчивая описанием сервисов, для которых была создана учетная запись;
- /root: домашний каталог. Для обычных пользователей домашним каталогом является «/home/username», для root-пользователя это «/root»;
- /bin/bash: оболочка пользователя. Данное поле содержит оболочку, которая будет создана, или команды, которые будут выполняться при входе пользователя в систему.
По мере добавления пользователей с помощью таких команд, как «adduser» и «useradd», или с установкой большего количества сервисов этот файл будет расти. Информация о новом пользователе будет добавлена в конце данного файла.
В большинстве случаев этот файл не нужно редактировать вручную, так как для управления ним существуют специальные инструменты, обеспечивающие использование правильного синтаксиса.
Что такое «/etc/shadow»?
Фактические данные о паролях хранятся в файле с именем «/etc/shadow».
Данный файл на самом деле не содержит паролей в виде простого текста. Вместо этого, он использует функцию выведения ключей для создания случайных данных. Вот что хранится в данном файле.
Функция выведения ключей – это алгоритм, создающий при вводе одних и тех же данных определенный хэш. Такой же алгоритм выполняется на пароль, который дается в процессе аутентификации, и это значение сравнивается со значением в этом файле.
Имейте в виду, данный файл, в отличие от файла «/etc/passwd», не доступен дл прочтения непривилегированными пользователями.
Пользователь root имеет привилегии читать и писать в файлах; группа «shadow», содержащая пользователей, которым необходима аутентификация, имеет права на чтение.
Чтение файла «/etc/shadow»
Чтобы открыть файл «/etc/shadow», введите:
sudo less /etc/shadow
root:$6$mJD3Rsj4$xUa7jru6EEGTXnhwTfTT26/j8M5XiQvUl6UH32cfAWT/6W9iSI5IuIw5OOw4khwrsOHPyMwfCLyayfYiVdhAq0:15952:0:99999:7.
daemon:*:15455:0:99999:7.
bin:*:15455:0:99999:7.
sys:*:15455:0:99999:7.
sync:*:15455:0:99999:7.
games:*:15455:0:99999:7.
man:*:15455:0:99999:7.
. . .
Как и в файле «/etc/passwd», каждая строка содержит информацию об отдельном пользователе, а каждое поле отделяется символом двоеточия.
Примечание: символ звездочки (*) во втором поле строк значит, что данная учетная запись не может войти в систему. Обычно это используется для сервисов.
Для примера можно рассмотреть одну строку данного файла:
Файл «/etc/shadow» содержит следующие поля:
- daemon: имя пользователя;
- *: соль и хешированный пароль; данное поле можно просмотреть, войдя как root. Как указано выше, звездочка значит, что данная учетная запись не может быть использована для входа в систему.
- 15455: последнее изменение пароля. Данное значение ограничивается датой начала «Unix-эпохи» (1 января 1970).
- 0: допустимое количество дней для смены пароля. 0 в данном поле значит, что таких ограничений нет.
- 99999: количество дней до необходимости смены пароля. Значение 99999 указывает на то, что ограничения на продолжительность использования одного пароля не установлены.
- 7: количество дней до предупреждения об истечении срока использования пароля. Если требуется сменить пароль, пользователь будет извещен о данной необходимости за указанное количество дней.
- [blank]: последние три поля нужны для того, чтобы указать количество дней до деактивации учетной записи. Последнее поле не используется.
Изменение пароля
Для изменения паролей пользователей используется команда «passwd».
По умолчанию данная команда изменяет пароль текущего пользователя и не требует особых привилегий.
Чтобы изменить пароль другого пользователя, нужны привилегии администратора. Для этого используется следующий синтаксис:
Будет запрошен пароль для команды «sudo», затем можно будет ввести новый пароль и подтвердить его.
Если сравнить значение хэш в файле «/etc/shadow», можно увидеть, что после ввода команды passwd оно изменилось.
Создание нового пользователя
Нового пользователя можно создать при помощи нескольких команд.
Самый простой способ – использовать команду «adduser». В системах Ubuntu данная команда связана со скриптом «perl», который обрабатывает создание пользователя.
Команду можно вызвать следующим образом:
adduser demo
Adding user `demo’ .
Adding new group `demo’ (1000) .
Adding new user `demo’ (1000) with group `demo’ .
Creating home directory `/home/demo’ .
Copying files from `/etc/skel’ .
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for demo
Enter the new value, or press ENTER for the default
Full Name []: test
Room Number []: room
Work Phone []: work phone
Home Phone []: home phone
Other []: other
Is the information correct? [Y/n]
На данном этапе появится несколько вопросов, которые помогут внести необходимую информацию в файлы «/etc/passwd» и «/etc/shadow».
Можно просмотреть внесенную в файл «/etc/passwd» запись, введя:
tail -1 /etc/passwd
demo:x:1000:1000:test,room,work phoneme phone,other:/home/demo:/bin/bash
Как можно видеть, данная команда использует поле для примечаний в своих интересах. Остальные поля заполнены должным образом.
Можно запустить похожую команду для того, чтобы просмотреть изменения, внесенные в файл «/etc/shadow».
sudo tail -1 /etc/shadow
demo:$6$XvPCmWr4$HXWmaGSeU5SrKwK2ouAjc68SxbJgUQkQ.Fco9eTOex8232S7weBfr/CMHQkullQRLyJtCAD6rw5TVOXk39NAo/:15952:0:99999:7.
Итоги
При помощи этих простых инструментов можно изменить регистрационную информацию системы.
После внесения изменений важно проверить, можете ли вы войти в систему. Также необходимо проверить права на идентификационные файлы, чтобы сохранить функциональность сервера и обеспечить ему безопасность.
Где и как хранятся пароли в Linux?
Добавить в избранное
Главное меню » 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:
Приведенная выше команда выведет список всех пользователей вашей системы 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, используя следующий синтаксис, тогда мы можем легко найти указанного пользователя, сэкономив наше время:
Приведенный выше синтаксис изменится на следующую форму:
$ grep andreyex / etc / passwd