Создание пользователя linux etc passwd

Создание пользователя linux etc passwd

Ядро Linux работает с идентификаторами, присвоенными пользователям. Каждый пользователь имеет личный числовой идентификатор user id или uid , потому что обрабатывать числа для компьютера проще, чем строковые имена пользователей. Отдельная база данных, вынесенная за пределы ядра, связывает текстовое имя пользователя username (аккаунт) , с соответствующими user id. База данных хранит также немало полезной информации о каждом пользователе.

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

Большинство дистрибутивов Linux имеют программу для создания пользователей. Хуже то, что такие программы везде разные. Есть две наиболее распространенные команды: adduser и useradd ; возможно применение графического интерфейса. Пользователя можно добавить и в ручном режиме.

База данных о пользователях в Unix системах является текстовым файлом /etc/passwd (называется файл паролей (password file) ), который хранит все имена пользователей и сведения о них. Каждому имени пользователя (логину) соответствует одна строка из семи полей, разделенных двоеточиями:


Имя пользователя в системе (его аккаунт).

Пароль (в зашифрованном виде).

Числовой user id.

Числовой group id.

Полное имя и другие сведения о пользователе.

Login shell (программа, запускаемая при входе в систему).


Формат полей детально описан в man-руководстве на passwd .

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

Многие Linux-системы применяют теневые пароли (shadow passwords) . Это альтернативный путь хранения паролей: они пишутся в отдельный файл. /etc/shadow , который доступен уже только для root. Файл /etc/passwd вместо пароля будет во втором поле каждой строки хранить только специальный маркер. Любая программа, которой надо проверять пароли, выполняется с setuid от имени root и может обращаться к затененному файлу паролей. Нормальные программы, которым нужны только другие поля из файла паролей, не смогут получить пароли.

На большинстве систем не имеет значения, что числовые значения идентификаторов пользователя и группы, но если Вы используете сетевую файловую систему (Network filesystem, NFS), Вы должны иметь одни и те же uid и gid на всех системах. Это потому, что NFS также идентифицирует пользователей по числовым uid. Если Вы не используете NFS, Вы можете позволить вашему инструменту создания пользоваьелей выбирать их автоматически.

Если Вы используете NFS, вы должны изобрести механизм для синхронизирования информации о пользователях и группах. Одним из вариантов является система NIS.

Вы должны избегать многократно использовать числовой uid (и текстовое имя пользователя), потому что новый владелец uid (или имени пользователя) может получить доступ к файлам старого владельца (почте, например).

Читайте также:  Те kernel system windows 10 что это такое

Когда создается домашний каталог для нового пользователя, он инициализируется файлами из каталога /etc/skel . Администратор системы может создавать файлы в /etc/skel , которые будут обеспечивать хорошую заданную по умолчанию среду для пользователей. Например, он мог бы создавать конфигурацию /etc/skel/.profile , которая устанавливает системную переменную EDITOR равной некоторому редактору, который является дружественным к новым пользователям.

Однако, обычно самое лучшее пробовать хранить в /etc/skel как можно меньше, так как будет почти невозможно модифицировать файлы существующих пользователей. Например, если имя дружественного редактора измененится, все существующие пользователи должны будут отредактировать свои .profile . Администратор системы мог бы попробовать сделать это автоматически с применением какого-либо скрипта, но это равнозначно попытке разрушить чей-то файл.

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

Чтобы создавать нового пользователя вручную, выполните следующее:


Отредактируйте файл паролей /etc/passwd редактором vipw и добавьте строку для нового пользователя. Будьте внимательным с синтаксисом. Не редактируйте каким попало редактором! vipw блокирует файл, так, чтобы другие команды не пробовали модифицировать его в то же самое время. Вы должны записать в поле пароля ` * ‘ так, чтобы было невозможно войти.

Точно так же редактируйте /etc/group редактором vigr , если надо создать новую группу

Создайте основной каталог пользователя командой mkdir .

Скопируйте файлы из /etc/skel в домашний каталог нового пользователя.

Смените владельца и права доступа для свежесозданных файлов и каталогов командами chown и chmod . Опция -R весьма полезна. Правильные разрешения немного разные для разных систем, но обычно следующие команды делают то, что надо:

Установите пароль командой passwd .

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

Иногда необходимо создать псевдопользователя. Такой пользователь никогда не используется как обычный. Например, чтобы установить анонимный сервер FTP станция (так, чтобы любой мог сгружать и загружать файлы без необходимости иметь логин в системе), Вы должны создать пользователя ftp. В таких случаях, пароль задавать не надо. Значит, файл пароля имеет всю информацию относительно пользователя за исключением его пароля.

Источник

Использование passwd и adduser для управления паролями на выделенном сервере Linux

Вступление

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

Данное руководство рассматривает некоторые базовые файлы, такие как «/etc/passwd» и «/etc/shadow», а также такие инструменты для настройки проверки подлинности, как команды «passwd» и «adduser».

Для демонстрации примеров используется выделенный сервер Ubuntu 12.04 , но любой современный дистрибутив Linux работает таким же образом.

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

Для начала нужно рассмотреть файл под названием «/etc/passwd», который на самом деле не содержит паролей.

Когда-то этот файл хранил хешированные пароли всех пользователей в системе. Тем не менее, по соображениям безопасности позже эта ответственность была перенесена в отдельный файл.

Читайте также:  Windows 10 возврат меню пуск

Итак, что же находится в файле «/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 полей:

  1. Root: имя пользователя;
  2. х: место для информации о паролях; пароль можно найти в файле «/etc/shadow».
  3. 0: ID пользователя. Каждый пользователь имеет уникальный идентификатор, благодаря которому система распознает его. ID root-пользователя всегда 0;
  4. 0: ID группы. Каждая группа имеет уникальный идентификатор. По умолчанию у каждого пользователя есть главная группа. Опять же, ID root-группы всегда 0;
  5. root: поле для примечаний. Данное поле можно использовать для описания пользователя или его функций. Оно может содержать что угодно, начиная от контактной информации пользователя и заканчивая описанием сервисов, для которых была создана учетная запись;
  6. /root: домашний каталог. Для обычных пользователей домашним каталогом является «/home/username», для root-пользователя это «/root»;
  7. /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», каждая строка содержит информацию об отдельном пользователе, а каждое поле отделяется символом двоеточия.

Читайте также:  Что делать если майкрософт windows не отвечает

Примечание: символ звездочки (*) во втором поле строк значит, что данная учетная запись не может войти в систему. Обычно это используется для сервисов.

Для примера можно рассмотреть одну строку данного файла:

Файл «/etc/shadow» содержит следующие поля:

  1. daemon: имя пользователя;
  2. *: соль и хешированный пароль; данное поле можно просмотреть, войдя как root. Как указано выше, звездочка значит, что данная учетная запись не может быть использована для входа в систему.
  3. 15455: последнее изменение пароля. Данное значение ограничивается датой начала «Unix-эпохи» (1 января 1970).
  4. 0: допустимое количество дней для смены пароля. 0 в данном поле значит, что таких ограничений нет.
  5. 99999: количество дней до необходимости смены пароля. Значение 99999 указывает на то, что ограничения на продолжительность использования одного пароля не установлены.
  6. 7: количество дней до предупреждения об истечении срока использования пароля. Если требуется сменить пароль, пользователь будет извещен о данной необходимости за указанное количество дней.
  7. [blank]: последние три поля нужны для того, чтобы указать количество дней до деактивации учетной записи. Последнее поле не используется.

Изменение пароля

Для изменения паролей пользователей используется команда «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.

Итоги

При помощи этих простых инструментов можно изменить регистрационную информацию системы.

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

Источник

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