Поиск по сайту:

Как использовать passwd и adduser для управления паролями на Linux VPS


Введение

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

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

Мы будем использовать Ubuntu 12.04 VPS для обсуждения этих тем, но любой современный дистрибутив 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»

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

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

root:x:0:0:root:/root:/bin/bash

Поля информации разделяются двоеточием (:). В типичном Linux-файле \/etc/passwd\ есть семь полей в каждой строке:

  1. root: Account username.
  2. <li><strong>x</strong>: Placeholder for password information.  The password is obtained from the "/etc/shadow" file.</li>
    
    <li><strong>0</strong>: User ID.  Each user has a unique ID that identifies them on the system.  The root user is always referenced by user ID 0.</li>
    
    <li><strong>0</strong>: Group ID.  Each group has a unique group ID.  Each user has a "primary" group that is used as the group by default.  Again, the root group's ID is always 0.</li>
    
    <li><strong>root</strong>: Comment field.  This field can be used to describe the user or user's function.  This can be anything from contact information for the user, to descriptions of the service the account was made for.</li>
    
    <li><strong>/root</strong>: Home directory.  For regular users, this would usually be "/home/<span class="highlight">username</span>".  For root, this is "/root".</li>
    
    <li><strong>/bin/bash</strong>: User shell. This field contains the shell that will be spawned or the command that will be run when the user logs in.</li>	
    

По мере добавления учетных записей пользователей с помощью таких команд, как \adduser\ и \useradd\, или по мере установки дополнительных служб этот файл будет увеличиваться. Информация о новом имени пользователя будет добавлена в конец этого файла.

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

Что такое файл «/etc/shadow»?

Фактические данные пароля хранятся в файле с именем \/etc/shadow\.

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

Функция получения ключа — это, по сути, алгоритм, который всегда будет создавать определенный хэш при получении одного и того же ввода. Тот же алгоритм запускается для пароля, заданного при аутентификации, и это значение сравнивается со значением в этом файле.

Обратите внимание, что этот файл, в отличие от файла \/etc/passwd\, недоступен для чтения непривилегированными пользователями.

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

Как прочитать файл «/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\, каждая строка определяет информацию о пользователе, а каждое поле разделяется символом двоеточия (:).

Примечание. Значение звездочки (*) во втором поле в некоторых из приведенных выше строк означает, что учетная запись не может войти в систему. Это в основном используется для служб и является предполагаемым поведением.

Давайте еще раз взглянем на одну строку:

daemon:*:15455:0:99999:7:::

Это поля, определенные в файле \/etc/shadow\:

  1. daemon: Account username.
  2. <li><strong>*</strong>: Salt and hashed password.  You can see what this looks like with the root entry above.
    
    	As noted above, the asterisk signifies that this account cannot be used to log in.</li>
    
    <li><strong>15455</strong>: Last password change.  This value is measured in days from the Unix "epoch", which is January 1, 1970.</li>
    
    <li><strong>0</strong>: Days until password change permitted.  0 in this field means there are no restrictions.</li>
    
    <li><strong>99999</strong>: Days until password change required.  99999 means that there is no limit to how long the current password is valid.</li>
    
    <li><strong>7</strong>: Days of warning prior to expiration.  If there is a password change requirement, this will warn the user to change their password this many days in advance.</li>
    
    <li><strong>[blank]</strong>The last three fields are used to denote days before the account is made inactive, days since the Epoch when the account expires.  The last field is unused.</li>	
    

Как вы меняете пароли?

Пароли пользователей могут быть изменены путем ввода команды «passwd».

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

passwd

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

sudo passwd username

Вам будет предложено ввести пароль для команды \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:::

Заключение

Используя эти простые инструменты, вы можете изменить информацию для входа в систему.

Важно проверить свою способность войти в систему после внесения любых изменений. Также важно сохранить одинаковые разрешения для файлов аутентификации для обеспечения функциональности и безопасности.