Формат файла passwd linux

/etc/passwd Структура и формат записей файла — Данные о пользователе в linux

Primary tabs

Forums:

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

Стуктура записей в /etc/passwd

Каждая строка файла описывает одного пользователя и 7 полей, разделенных двоеточиями:

  1. Регистрационное имя. Регистрационные имена должны быть уникальными и состоять не более чем из 32 символов.
    Они могут содержать любые символы, кроме двоеточия и символа новой строки. Они не должны начинаться с цифры.
  2. Зашифрованный пароль или «заполнитель» пароля.

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

  1. символа «х»
    так указыватеся, что пароль храниться в файле /etc/shadow
  2. символа «*»
    — значит, что данная учетная запись временно отключена.
  3. или набора случайных символов и чисел
    — значит указывается непосредственный пароль пользователя в зашифрованном виде.
  • Идентификатор пользователя — это 32-битное целое число, которое уникально идентифицирует пользователя в системе.
    По умолчанию, идентификаторы меньше 500 зарезервированы для служебных учетных записей. Регулярные пользователи имеют идентификаторы, начиная с 500.
  • Идентификатор группы по умолчанию.
    Как и идентификатор пользователя, идентификатор группы (GID) является 32-битным целым числом.
    Причем:
    • Идентификатор 0 зарезервирован для группы с именем root,
    • идентификатор 1 — для группы bin,
    • а 2 — для группы daemon.

    Группы определяются в файле /etc/group, а поле идентификатора группы в файле /etc/passwd задает стандартный («эффективный») идентификатор на момент регистрации пользователя в системе.

    Этот идентификатор не играет особой роли при определении прав доступа; он используется лишь при создании новых файлов и каталогов.

    Новые файлы обычно включаются в эффективную группу своего владельца, но если у каталога установлен специальный бит setgid (02000) или файловая система смонтирована с опцией grpid, новые файлы принадлежат группе владельца каталога.
    По умолчанию, в ОС Linux для каждого нового пользователя создается новая группа с таким же регистрационным именем и идентификатором.

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

    Структура данного поля может быть произвольной, но команда finger интерпретирует разделенные запятыми элементы данного поля в следующем порядке:

    • полное имя;
    • номер офиса и здания;
    • рабочий телефон;
    • домашний телефон.
  • Домашний каталог. Войдя в систему, пользователь попадает в свой домашний каталог. Если на момент регистрации этот каталог отсутствует, выводится сообщение о его отсутствии. Если в качестве значения поля домашнего каталога по умолчанию DEFAULT_HOME в файле /etc/login.defs установлено «no», продолжение регистрации пользователя будет невозможно; в противном случае пользователь попадает в корневой каталог.
    По умолчанию, домашние каталоги пользователей создаются в каталоге /home. При добавлении в систему нового пользователя в его домашний каталог копируются все файлы из каталога /etc/skel, в котором содержаться персональные конфигурационные файлы командного интерпретатора и различных программ.
  • Командный интерпретатор.
    — В качестве регистрационной оболочки, как правило, задается интерпретатор команд, например,

    ,
    — но, в принципе, это может быть любая программа. По умолчанию используется интерпретатор bash.

    Пользователи могут менять интерпретатор с помощью команды chsh. Файл /etc/shells содержит список тех интерпретаторов, которые доступны для выбора.

    Пример записи в /etc/passwd

    Типовые записи файла /etc/passwd имеет следующий вид (приведём две строки):

    В первой записи указана учетная запись пользователя root. Как видно, идентификатор пользователя и идентификатор группы пользователя для данной учетной записи совпадают и равны нулю. Затем следует поле персональных данных, домашний каталог, которым является каталог /root и командный интерпретатор пользователя — /bin/bash.

    Источник

    Использование 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 полей:

    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», каждая строка содержит информацию об отдельном пользователе, а каждое поле отделяется символом двоеточия.

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

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

    Файл «/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.

    Итоги

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

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

    Источник

    Формат файла passwd linux

    Традиционные Unix системы хранят данные о пользователях вместе с зашифрованным паролем в текстовом файле « /etc/passwd ». Поскольку этот файл используется многими инструментальными средствами (типа «ls») чтобы отобразить владельца файла и другие подобные сведения, файл должен быть открыт на чтение для всех, что, конечно, дает отличный шанс хакерам.

    Другой метод хранения информации, тот, который я всегда использую, затенение паролей. Как и раньше, есть файл /etc/passwd с данными о пользователях. Однако, вместо паролей ставится символ “x”, а пароли хранятся отдельно в файле « /etc/shadow », в котором хранятся зашифрованные пароли и некоторая дополнительная информация о паролях. Файл /etc/shadow доступен для чтения только root, что повышает защиту.

    В Red Hat Linux установка пакета Shadow Password Suite, ответственного за теневые пароли, проста. Наберите как root:

    С теневыми (shadow) паролями файл « /etc/passwd » хранит сведения о пользователях в виде:

    Каждое поле в записи отделено символом “:”:

    Username, до 8 символов. Регистр важен, обычно пишут в нижнем регистре.

    Символ “x” в поле пароля. Пароли хранятся в файле « /etc/shadow ».

    Числовой user id. Назначается скриптом « adduser ». Unix использует данное значение и значение группы для определения кому какие файлы принадлежат.

    Числовой group id. Red Hat использует group id в довольно неожиданном способе усиления защиты файла. Часто group id равен user id.

    Полное имя пользователя. Максимальная длина мне неизвестна, но лучше ограничиться разумными рамками (до 30 символов).

    Домашний каталог пользователя. Обычно /home/username (например, /home/smithj). Там хранятся все личные файлы пользователя и его web-страницы.

    Пользовательская оболочка. Обычно используется « /bin/bash » для доступа к оболочке bash.

    Если нужно чтобы пользователь не имел доступа к shell, создайте скрипт « /bin/sorrysh », который выведет соотвтетствующее сообщение и завершит работу пользователя. Впишите скрипт сюда в качестве оболочки.

    Замечание: Если пользователь должен передавать файлы по “FTP” shell должна быть нормальной оболочкой, например, « /bin/bash », а чтобы не давать shell-доступа надо настроить доступ в домашнем каталоге пользователя. См. раздел Администрирование Web-сервера и HTTP Proxy в главе 7.

    Файл « /etc/shadow » хранит данные о пользователе в формате:

    Как и в файле passwd, каждое поле в файле shadow отделяется двоеточием:

    Username, до 8 символов. Совпадает с username в файле /etc/passwd.

    Пароль, 13 символов (зашифрованный). Пустая запись (то есть, ::) показывает, что для входа пароль не нужен (обычно идея плохая), и запись «*» (то есть, :*:) показывает, что вход заблокирован.

    Количество дней (с 1 января 1970), когда пароль был сменен в последний раз.

    Число дней до смены пароля (0 показывает, что он может быть сменен всегда).

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

    Число дней, в течение которых пользователь получает предупреждения о необходимости пароль сменить (7 для полной недели).

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

    Число дней, начиная с 1 января 1970, после которых пароль будет заблокирован.

    Зарезервировано для возможного будущего использования.

    Источник

    Читайте также:  Razer ornata chroma linux
    Оцените статью