Курсы Linux (Лекция 10) — Пользователи, группы. Файлы passwd, shadow, group

By | 13.12.2011

На этой лекции мы поговорим о пользователях (учетных записях) и группах пользователей. Как я уже неоднократно говорил операционная система Linux является многопользовательской системой в которой может одновременно существовать достаточно большое число пользователей, которых можно объединять в группы.
Все пользователи локальной системы перечислены в файле /etc/passwd. Давайте посмотрим содержимое этого файла с помощью команды less /etc/passwd. Каждая строка файла /etc/passwd описывает одну учетную запись. Несмотря на то, что у вас может быть всего два пользователя в системе (root и вы сами), строчек в файле /etc/passwd гораздо больше. Дело в том, что для большинства служб операционной системы Linux существует своя собственная учетная запись с правами необходимыми для нормального функционирования этой службы. Такой подход позволяет повысить безопасность системы. Каждая строка состоит из семи полей разделенных двоеточием. Давайте рассмотрим эти поля. Для примера возьмем следующую строку: igor:x:1000:1000:igor,,,:/home/igor:/bin/bash.

1. igor - мнемоническое представление учетной записи. Хотя система работает только с числовыми именами пользователей, нам проще запоминать имена именно в таком виде.

2. х - раньше в этом поле был пароль. Теперь он находится в другом месте, но поле осталось и сейчас там находится просто символ х.

3. 1000 - цифровое обозначение учетной записи. Его UID.

4. 1000 - числовое обозначение основной группы пользователя (GID). Каждый пользователь может принадлежать нескольким группам, но только одна из групп является для пользователя — основной. Именно та которая указана в четвертом поле файла /etc/passwd. Также пользователь должен обязательно принадлежать хотя бы одной группе. Как правило при создании нового пользователя создается одноименная группа для этого пользователя, которая и является основной.

5. igor,,, - В этом поле может содержаться описание пользователя, что позволяет администратору более полно описать того или иного пользователя или службу. Данное поле имеет стандартный формат о котором мы поговорим позднее, когда рассмотрим программу создания нового пользователя в системе.

6. /home/igor - путь к домашнему каталогу пользователя.

7. /bin/bash - командный интерпретатор пользователя. Если вы посмотрите на седьмое поле других учетных записей, то заметите, что /bin/bash является интерпретатором по умолчанию для обычных пользователей,/bin/sh - является интерпретатором для различных служб. Если службе для своей работы не нужен командный интерпретатор, то можно встретить запись /bin/false или /bin/nologin. Обе эти строчки не позволяют регистрироваться в системе, с той лишь разницей, что последняя записывает в журнал попытки входа.

Теперь рассмотрим файл в котором хранятся пароли пользователей. Данный файл называется /etc/shadow. В нем по аналогии с файлом /etc/passwd каждая строка описывает одного пользователя и имеет 9 полей разделенных двоеточием. Для просмотра этого файла нужны права администратора. Давайте рассмотрим поля данного файла на примере строки: root:!:14438:0:99999:7:::

1. root - мнемоническое имя пользователя к которому относится данная строка.

2. ! - в этом поле хранится пароль, а точнее его хеш (хеш пароля). Что такое хеш пароля? Хеш пароля это некая последовательность символов, которая получается после определенных необратимых преобразований над паролем пользователя. Необратимых потому, что обратная процедура: получение исходного вида пароля из хеша пароля представляет собой сложную математическую задачу невыполнимую в определенном заданном промежутке времени (обычно десятилетия и более). Когда вы каждый раз регистрируетесь в системе, то с вашим паролем каждый раз проводится операция (назовем ее хешированием) вычисления хеша пароля и сравнения его с хешем пароля из файла /etc/shadow. Если хеши паролей совпали — пользователь проходит аутентификацию.

По умолчанию в большинстве дистрибутивов применяется алгоритм хеширования md5. Но ничего не мешает вам заменить этот алгоритм на еще более стойкие версии (например md6). Правда в рамках лекции мы этот вопрос рассматривать не будем. Вернемся ко второму полю файла /etc/shadow. В примере вы видите там символ ! (восклицательный знак). Это в данном примере не хеш пароля. Хеш пароля выглядит примерно так:$1$4vN1osMk$EWywQfrBWxCtK45.4ARgc. Первые три символа являются одинаковыми для определенного алгоритма хеширования и позволяют его (алгоритм идентифицировать). В примере $1$ - это идентификатор алгоритма md5. Если перед любым хешем пароля в файле /etc/shadow поставить символ ! или *, то такой пароль будет признан недействительным и учетная запись будет заблокирована.

Пример когда вместо хеша пароля стоит ! характерен для дистрибутива Ubuntu где пользователь rootдействительно по умолчанию не может зарегистрироваться в системе. Таким образом если вы хотите заблокировать учетную запись пользователя, достаточно перед хешем пароля установить символ !, а чтобы разблокировать учетную запись нужно убрать этот символ.

Поля 3-7 содержат временные параметры пароля. Подробнее смотрите в
man shadow.

Поле 8 - это дата до которой учетная запись будет считаться действительной. По достижении указанного времени запись будет заблокирована. Если поле пустое, то время действия не ограничено.

Поле 9 - это зарезервированное поле.

Группы. Информация о группах хранится в файле /etc/group. Принцип тот же: строка описывает одну группу, есть несколько полей. Полей всего 4-е. Рассмотрим пример строки: shara:x:1002:igor,test.

1. shara - мнемоническое имя группы.

2. х - пароль для группы.

3. 1002 - цифровой код группы.

4. igor,test - пользователи, которые входят в группу. Перечисляются через запятую.

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

Материалом любезно поделился Кузьменко Игорь http://igorka.com.ua