Создание и администрирование пользователей в ОС на базе ядра Linux
В данном посте рассматривается создание и администрирование пользователей в операционных системах (ОС) на базе ядра Linux. Для примера будет использоваться ОС Oracle Linux 7.5. Будут рассмотрены следующие вопросы:
- Типы пользователей
- Основные файлы, хранящие информацию о пользовательских учетных записях
- Администрирование (управление) учетными записями
Типы пользователей
Oracle Linux является многопользовательской ОС. Одной из основных задач системного администратора является создание, управление, удаление учетных записей. Системный администратор должен всегда знать и понимать, какие учетные записи есть в ОС, в какой группе состоит пользователь, а также к каким системный ресурсам имеет доступ пользователь и группа. В Unix и Linux системах владельцем каждого файла и программы должен быть пользователь (user). Каждый пользователь имеет уникальный идентификатор называемый UID – user ID. Каждый пользователь должен состоять минимум в одной группе, но есть возможность добавить пользователя во множество групп. Так же как и у пользователя, группа имеет уникальный идентификатор группы называемый GID – group ID.
В Linux есть три типа пользовательских учетных записей – root (суперпользователь), системные и пользовательские.
- root (суперпользователь) – учетная запись, имеющая полный контроль над системой. Суперпользователь может запускать любую команду без каких-либо ограничений;
- системные – эти учетные записи нужны для операций над системными компонентами, например для почтовых или sshd учетных записей. Эти учетные записи обычно нужны для выполнения каких-либо конкретных функций в системе, и потому не модифицируются;
- пользовательские – учетные записи этого типа предоставляют доступ к системе для пользователей. Обычные пользователи имеют именно этот тип учетной записи, что ограничивает их доступ к критично важным системным файлам и папкам.
Основные файлы, хранящие информацию о пользовательских учетных записях
Основные параметры пользовательской учетной записи это: Имя, пароль, UID, GID, Комментарий, Домашняя директория, командная оболочка.
Основные файлы ОС, хранящие информацию о пользовательских учетных записях:
- /etc/passwd– Содержит информацию об учетной записи и пароле. Это основной файл, содержащий информацию об учетных записях.
- /etc/shadow– Содержит пароли в зашифрованном виде (SHA-512) для соответствующей учетной записи.
- /etc/group– Содержит информацию о группах для каждой учетной записи.
- /etc/gshadow– Содержит информацию, касающуюся безопасности групп.
Далее подробно рассмотрим каждый файл и его содержимое.
/etc/passwd – в этом файле находятся записи в следующем виде:
loginID:x:UID:GID:comment:home_directory:login_shell
где,
- loginID – имя пользователя (Имя должно быть уникальным и состоять максимум из 32 символов (любые, кроме двоеточия [:] и символа новой строки [\n] )).
- x – плейсхолдер для зашифрованного пароля хранящегося в файле /etc/shadow.
- UID – номер, использующийся системой, для идентификации пользователя (UID для обычных пользователей должны иметь диапазон от 100 до 2^32-1).
- GID – номер, использующийся системой, для идентификации основной группы пользователя.
- comment (GECOS) – комментарий, обычно содержит полное имя пользователя.
- home_directory – полный путь к пользовательской домашней директории. В данной директории хранятся конфигурационные файлы пользователя.
- login_shell – пользовательское командная оболочка.
После установки ОС файл /etc/passwd выглядит (по умолчанию) как на скриншоте:
В файле /etc/shadow находятся записи в следующем виде:
loginID:password:lastchg:min:max:warn:inactive:expire
где,
- loginID – имя пользователя,
- password – пароль в зашифрованном виде. Пароль должен минимум в 8 символов длиной, включая спецсимволы, цифры, и буквы. Обычно формат пароля $id$salt$hashed, где $id – алгоритм, которым шифруется пароль ($1$ is MD5, $2a$ is Blowfish, $2y$ is Blowfish, $5$ is SHA-256, $6$ is SHA-512).
- lastchg – количество дней c 1.01.1970, когда пароль был изменен в последний раз.
- min – минимальное число дней между сменами пароля
- max – максимальное число дней, в течении которых пароль будет валиден
- warn – количество дней за которые пользователь будет предупрежден об истечении пароля
- inactive – количество дней, в течении которых пользователь может быть неактивен перед блокировкой
- expire – дата, когда истекает срок пользовательской учетной записи
Скриншот файла /etc/shadow
Структура файла /etc/group следующая:
groupname:group-password:GID:username-list
где,
- groupname – имя группы (максимум 8 символов);
- group-password – пустое поле или звездочка;
- GID – идентификатор группы;
- username-list – список пользователей, для которых данная группа является вторичной.
Структура файла /etc/gshadow следующая:
groupname:encrypted-password:group-admins:group-users
где,
- groupname – имя группы;
- encrypted-password — зашифрованный пароль группы. Если задан, то пользователи, не являющиеся членами группы, могут присоединиться к группе введя пароль этой группы используя команду newgrp. Если значение этого поля равно !, то пользователи не смогут присоединиться к группе командой newgrp. Значение !! означает то же самое, что и !!, однако еще обозначает то, что пароль еще не был задан. Если значение пусто – в группу могут логиниться только члены группы;
- group-admins — члены группы, перечисленные в этом поле, могу добавлять или убирать членов группы используя команду gpasswd;
- group members — члены группы, перечисленные в этом поле, являются обычными пользователями данной группы.
Администрирование (управление) учетными записями
Добавление пользователей
Для того, чтобы добавить пользовательскую учетную запись, необходимо выполнить команду useradd. Пример добавления пользователя с именем test:
#useradd dushanbe
Проверим, появилась ли соответствующая запись в файле /etc/passwd:
# grep dushanbe /etc/passwd dushanbe:x:1002:1002::/home/dushanbe:/bin/bash
Зададим пароль пользователю dushanbe командой passwd:
#passwd dushanbe
Далее появится приглашение ввести новый пароль.
Проверим, появилась ли соответствующая запись в файле /etc/shadow:
#grep dushanbe /etc/shadow dushanbe:$6$Ubm.y9XK$az3jtXXCDVy.c4YPxgQbqsWdXTFhhQXCIsWtKMz6jAMCJ5rS9Gj.j3GxgDOSOzqJQ.sUlhbch8JuC8jgEYlaH1:18012:0:99999:7:::
Модификация пользователей
Для модификации пользователей используется команда usermod. Попробуем изменить имя пользователя dushanbe на test с помощью команды usermod и опции –l.
# usermod --login test dushanbe
Проверим, изменилась ли соответствующая запись в файле /etc/passwd:
#grep test /etc/passwd test:x:1002:1002::/home/dushanbe:/bin/bash
Удаление пользователей
Для удаления пользователей используется команда userdel (опция –r так же удалит домашнюю директорию пользователя).
#userdel –r test
Добавление группы
Для добавления группы используется команда groupadd:
#groupadd testgrp
Проверим, появилась ли соответствующая запись в файле /etc/group:
#grep testgrp /etc/group testgrp:x:1003:
Модификация группы
Производится командой groupmod. Сменим имя группе testgrp на testg:
#groupmod –n testg testgrp
Проверим, изменилась ли соответствующая запись в файле /etc/group:
#grep testg /etc/group testg:x:1003:
Удаление группы
Для удаления группы из ОС используется команда groupdel:
#groupdel testg
Добавление/удаление учетной записи в группу
usermod –G groupname username – добавить учетную запись в группу;
gpasswd –d username groupname – удалить учетную запись из группы.
В примере проверим файл /etc/group на наличие группы dushanbe и добавим в эту группу пользователя molly. Проверим файл еще раз, и затем – удалим пользователя из группы. Снова проверяем файл, чтобы убедиться в правильности выполнения команды: