Как мы уже знаем Linux является многопользовательской системой, то есть в ней могут быть зарегистрированы и одновременно работать сразу несколько пользователей.
Как можно работать всем сразу на одном компьютере?
Для этого достаточно подключиться к нему удаленно. Это нормальное явление для серверов.
Во всех Linux системах существуют суперпользователь (root), который может абсолютно все и обычные пользователи, которые могут обладать правами администратора или не обладать ими вовсе. Все зависит от требований к работе системы.
Логика работы Linux такова, что определенным пользователям назначаются определенные права, то есть одни могут настраивать систему и менять конфигурацию, а другие могут лишь просматривать и редактировать документы.
Так как пользователей может быть очень много, к тому же каждый пользователь может выполнять лишь определенную часть работы, то в системе существуют и группы. Каждая группа имеет определенные привилегия и права на осуществление определенных задач.
Чтобы гибче управлять правами и привилегиями пользователей достаточно создать необходимые группы и назначать пользователей в ту или иную группу, не меняя при этом привилегия самого пользователя.
Например, в системе зарегистрировано 200 пользователей — это равносильно средней компании. Для корректной работы системы было решено выделить следующие группы:
- администраторы с полными правами
- администраторы для установки и настроек пользовательских программ
- продвинутые пользователи, которые могут менять параметры, связанные с их личным аккаунтом, а также устанавливать свои программы
- обычные пользователи, которые не могут ничего настраивать и устанавливать программы
Вроде бы ничего сложного, но сделать это все для 200 и более пользователей довольно утомительная задача. К тому же работники приходят и уходят, переходят на другие позиции и всегда нужно знать кому и какие права необходимо назначить. Гораздо проще назначить все необходимые привилегия группам, а затем добавить пользователей в эти группы.
А может пользователь состоять в нескольких группах?
Конечно, в этом и заключается вся прелесть.
А сколько всего можно иметь пользователей и групп в системе?
Теоретически и тех и других может быть в системе по 65535. Это связано с тем, что каждый пользователь и группа имеют свой уникальный номер, который принимает значения от 0 до 65535:
UID (User ID) — идентификатора пользователя
GID (Group ID) — идентификатор группы
Однако в Linux можно создать пользователей и с повторяющимися идентификаторами, поэтому количество пользователей может быть еще больше.
Суперпользователь root всегда имеет UID = 0, он также состоит в группе root и имеет GID = 0.
Значения от 0 до 500 зарезервированы самой системой. От 501 и выше назначаются новым пользователям и группам.
Каждый пользователь имеет свои собственные настройки, например какой командный интерпретатор запускается, домашний каталог, группы, в которых состоит.
По умолчанию, когда создается новый пользователь, то автоматически создается и домашний каталог в /HOME. Имя каталога всегда совпадает с именем пользователя в системе (login). Однако это необязательное условие, домашний каталог может быть где угодно, даже на съемных носителях.
Файлы конфигураций
Прежде, чем приступим к управлению учетными записями ознакомимся с какими файлами нам придется работать.
Каждому пользователю присущи следующие атрибуты:
- логин для входа в систему
- пароль
- оболочка терминала (bash, shell и др.)
- персональные данные (имя, фамилия, компания и т.д.)
- принадлежность к группам в системе
И естественно возникает резонный вопрос: “А где хранятся все эти данные?”
Рассмотрим по порядку каждый файл.
/etc/passwd
Судя по названию можно предположить, что в этом файле хранятся пароли пользователей, но это не так. Данный файл содержит следующую информацию:
- логин
- идентификатор пользователя UID
- идентификатор группы, в которой он состоит GID
- персональная информация, которая в Linux еще называется finger
- путь к домашнему каталогу
- командный интерпретатор
Доступ к файлу ограничен. Его можно просматривать, но нельзя редактировать обычным пользователям.
Файл содержит очень много пользователей. Зачем они все?
На самом деле это не простые пользователи, а системные. Их UID меньше 500 и используются они для выполнения специфических задач для обеспечения работоспособности системы в целом.
Если необходимо добавить пользователя, можно ли просто добавить нужную запись в конец файла? Будет ли данный пользователь активен?
Да, будучи суперпользователем можно добавить запись, но необходимо еще настроить пароль.
/etc/shadow
Этот файл содержит информацию о пароле.
То есть можно увидеть пароли всех пользователей?
Нет, в открытом виде пароли уже давно не хранятся. Хранится лишь их хэш, то есть когда вводится новый пароль его шифрует хэш функция и в дальнейшем уже сравниваются лишь хэши.
Файл содержит следующую информацию:
- логин для привязки соответствующей записи в /etc/passwd с текущей записью в /etc/shadow
- хэш пароля
- дата последнего изменения пароля
- минимальное количество дней между изменениями пароля, то есть когда можно поменять пароль, если вдруг не понравился
- максимальное количество дней между изменениями пароля
- количество дней до истечения действия пароля, чтобы выдать предупреждение пользователю
- количество дней после истечения срока действия пароля, после чего учетная запись отключается
- Срок действия учетной записи
А что означают знаки “*” и “!” в поле пароля?
Знак “*” устанавливается только у системных пользователей и означает, что нельзя войти в систему от имени системного пользователя.
Если знак “!” стоит перед хэшем пароля, то это означает, что пароль и учетная запись заблокированы и пользователь не сможет войти в систему.
Если после знака “!” нет хэша, то это означает, что пароль не установлен и учетная запись временно заблокирована до тех пор, пока не установят пароль.
/etc/group
В нем содержится информация о группах:
- название группы
- идентификатор группы GID
- список пользователей, входящих в конкретную группу
/etc/gshadow
А это файл содержит информацию о паролях групп:
- название группы
- зашифрованный пароль
- администраторы через запятую
- обычные пользователи через запятую
А зачем группе пароль?
Дело в том, что некоторые группы могут обладать расширенными правами. Чтобы пользователь смог вступить в группу ему предлагается ввести пароль данной группы. Если он его знает, то становится членом группы.
А если у группы не установлен пароль?
Если у группы нет пароля, об этом свидетельствует знак “!” в поле пароля, то пользователь не сможет вступить в группу.
Но ведь группа будет активна и без пароля?
Совершенно верно.
Знак “*” в поле пароля некоторых групп означает то же самое, что и у пользователей?
Не совсем. Знак “*” присутствует у системных групп. Пароли этих групп можно менять будучи суперпользователем, а также можно вступать в эти группы, достаточно лишь знать пароль группы. Когда пароль устанавливается для системных групп, то знак “*” сменяется на зашифрованный пароль.
/etc/skel/
В данном каталоге хранятся необходимые файлы, которые необходимы каждому пользователю, имеющему свой домашний каталог. При создании учетной записи все файлы данного каталога автоматически копируются в домашний каталог нового пользователя. Все файлы скрытые.
ВНИМАНИЕ: Вторая часть по управлению пользователями и группами в Lunix находится по этой ссылке.