Администраторы и пользователи

Общая информация

Как типичная Linux-система, ОС является многопользовательской. Администратор может управлять учетными записями других пользователей с помощью консольного и графического интерфейса.

В Системе существуют три типа пользователей:

Администраторы – привилегированные пользователи с полным доступом к Системе. По умолчанию на серверной ОС после ее установки всегда есть один такой пользователь root.

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

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

Примечание – По умолчанию при установке ОС первый, созданный в инсталляторе, пользователь является пользователем-администратором Системы.

Каждый пользователь имеет свой уникальный идентификатор пользователя UID. Идентификатор отличается в зависимости от типа пользователя:

  • администратор – 0;
  • обычный (локальный) пользователь – от 100;
  • системный пользователь – от 1 до 100.

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

Информацию о каждом пользователе сервера можно посмотреть в файле /etc/passwd. Пользователи в нём перечислены в следующем формате:

test-user:x:1000:1000::/home/test-user:/bin/bash

где параметры:

  • test-user – имя пользователя;
  • x – признак зашифрованного пароля (хранится в /etc/shadow);
  • 1000:1000 – идентификатор пользователя (UID) и идентификатор группы (GID), к которой он принадлежит;
  • :: – комментарий к пользователю и дополнительная информация (например, контакты, имя и прочее);
  • /home/test-user – адрес домашний папки пользователя;
  • /bin/bash – указывает, что пользователь имеет доступ к командной оболочке сервера.

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

users

Если известно имя пользователя и требуется узнать о нём больше информации, необязательно читать /etc/passwd. Всё то же самое можно посмотреть с помощью команды pinky -l:

pinky -l test-user

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

Узнать UID пользователя можно с помощью команды id:

id username

Вывод команды будет похожим на следующий:

uid=1001(username) gid=1001(username) groups=1001(username),27(sudo)

В выводе содержится информация о том, что учетная запись username существует, она находится в основной группе username и дополнительной группе sudo; идентификатор учетной записи – 1001.

Также можно получить строку о пользователе из файла /etc/passwd:

getent passwd username

Вывод команды будет похожим на следующий:

username:x:1001:1001::/home/username:/bin/sh

В данном выводе пользователь username имеет идентификатор пользователя и группы 1001, его домашняя директория – /home/username, командная оболочка – /bin/sh.

Для именования пользователей в ОС есть набор стандартных правил:

  • имя пользователя может содержать только английские буквы [a-z] в верхнем и нижнем регистре, цифры, символ "_", тире "-" и точку;
  • имя пользователя может оканчиваться символом "$";
  • имя пользователя не может начинаться с тире, содержать только цифры или состоять из "." или "..";
  • не рекомендуется использовать точку в начале имени пользователя;
  • имя пользователя может включать до 32 символов.

Списки пользователей

Посмотреть список пользователей можно в файле /etc/passwd:

cat /etc/passwd

Вывод команды будет похож на следующий:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

Как правило, большая часть данных пользователей является системными и их UID меньше "1000" и больше "60000".

Более функциональная команда для отображения содержимого файла passwd getent:

getent passwd

Можно найти пользователя по идентификатору с помощью команды:

getent passwd 1000

Можно получить список несистемных пользователей с помощью команды:

getent passwd {1000..60000}

Получить только список логинов несистемных учетных записей можно с помощью команды:

getent passwd {1000..60000} | awk -F: '{ print $1}'

Использование sudo и привилегии

Разделение привилегий является одной из основных мер безопасности в ОС. Обычные пользователи работают с ограниченными правами и могут изменять только собственную рабочую среду. Для выполнения административных действий используется учётная запись суперпользователя root.

Вход в Систему от имени root по умолчанию заблокирован. Для повышения полномочий до административных рекомендуется использовать команду sudo. Первый созданный в Системе пользователь-администратор автоматически получает право на использование этой команды.

Команда sudo (расшифровывается как superuser do) позволяет временно получить права суперпользователя для выполнения одной команды. Такой подход обеспечивает дополнительный уровень безопасности, так как пользователи не всегда работают под учётной записью суперпользователя root.

Пример базового использования:

sudo команда

После ввода команды с префиксом sudo Система запросит пароль пользователя. Если пользователь входит в группу, имеющую соответствующие права, команда будет выполнена с административными полномочиями.

Конфигурация sudo

Настройка прав доступа осуществляется через файл /etc/sudoers. Он определяет, какие пользователи или группы могут использовать sudo и какие команды доступны. Для редактирования применяется утилита visudo, которая проверяет синтаксис и предотвращает ошибки при сохранении.

Пример типового содержимого файла /etc/sudoers:

Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

root        ALL=(ALL:ALL) ALL
%admin      ALL=(ALL) ALL
%sudo       ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d

Основные элементы файла /etc/sudoers:

  • Defaults env_reset — сброс переменных окружения для повышения безопасности;
  • Defaults mail_badpass — уведомление о неудачных попытках ввода пароля;
  • Defaults secure_PATH — безопасный список путей для выполнения команд через sudo.

Правила доступа в файле /etc/sudoers:

  • root ALL=(ALL:ALL) ALL — пользователь root может выполнять любые команды от имени любых пользователей и групп.
  • %admin ALL=(ALL) ALL и %sudo ALL=(ALL:ALL) ALL — аналогичные права назначаются группам admin и sudo.

Строка #includedir /etc/sudoers.d указывает на каталог, содержащий дополнительные правила. Файлы в этом каталоге обрабатываются так же, как и основной файл /etc/sudoers. Это позволяет приложениям добавлять собственные правила и облегчает администрирование. Редактирование этих файлов также выполняется через visudo:

sudo visudo -f /etc/sudoers.d/имя_файла

Присвоение привилегий

Для предоставления пользователю прав администратора его необходимо добавить в группу wheel (по умолчанию группа администраторов в ОС) с помощью одной из следующих команд:

usermod -aG wheel username

или

gpasswd -a username wheel

Если в ОС добавление пользователя в группу не срабатывает сразу же, может потребоваться редактирование файла /etc/sudoers, чтобы убрать символ комментария перед именем группы:

sudo visudo
/etc/sudoers
...
%wheel ALL=(ALL) ALL
...

Создание правил в файле sudoers

Файл /etc/sudoers позволяет гибко настраивать права пользователей при работе с sudo. Помимо стандартных строк, допускается использование псевдонимов и специальных свойств, которые обеспечивают удобство управления и повышенную безопасность.

Группировка пользователей и команд

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

...
User_Alias      GROUPONE = abby, brent, carl
User_Alias      GROUPTWO = brent, doris, eric,
User_Alias      GROUPTHREE = doris, felicia, grant
...

где GROUPONE, GROUPTWO и GROUPTWO – имена групп.

Имена групп должны начинаться с заглавной буквы. Затем можно дать участникам группы GROUPTWO разрешение на обновление базы данных dnf, создав следующее правило:

...
GROUPTWO    ALL = /usr/bin/dnf update
...

Если не указать пользователя или группу для запуска, команда sudo по умолчанию использует пользователя root.

Свойства правил

 Для управления поведением sudo используются дополнительные свойства.

  • NOPASSWD — выполнение команды без запроса пароля:
GROUPONE ALL = NOPASSWD: /usr/bin/updatedb
  • PASSWD — выполнение команды с обязательным вводом пароля (значение по умолчанию):
GROUPTWO ALL = PASSWD: /bin/kill
  • NOEXEC — запрет выполнения вложенных команд внутри некоторых программ.

Это свойство полезно для предотвращения запуска других утилит через оболочку программы, например, less:

username ALL = NOEXEC: /usr/bin/less

В ходе практической работы с присвоением привилегий рекомендуется:

  • ограничивать права пользователей только необходимыми командами;
  • для систем с несколькими администраторами удобно использовать псевдонимы и вынесение правил в каталог /etc/sudoers.d;
  • все изменения следует выполнять только через visudo, чтобы исключить ошибки синтаксиса.

Журналирование и безопасность

Все действия, выполненные через sudo, записываются в системный журнал. Записи можно просмотреть в файлах /var/log/auth.log или /var/log/secure. Это позволяет отслеживать действия пользователей с административными правами.

Рекомендуется:

 не использовать sudo для команд, не требующих повышенных привилегий;  проверять корректность команд перед выполнением;  ограничивать круг пользователей, имеющих доступ к sudo;  назначать точечные правила для выполнения только необходимых команд.

Подробное описание доступно в справочном руководстве по команде:

man sudo

Управление учетными записями пользователей

Для управления учётными записями (УЗ) в Системе используются следующие утилиты:

  • whoami — вывод имени текущего пользователя;
  • who — просмотр активных пользователей;
  • w — просмотр пользователей и их процессов;
  • last — просмотр последних входов.

Основные операции по работе с пользователями включают создание и удаление учётных записей, изменение параметров, управление сроком действия пароля и блокировку.

Создание пользователя (useradd)

Для добавления новой учётной записи используется команда useradd.

Примеры использования команды useradd (где test-user – имя учетной записи пользователя):

  • создание пользователя и домашнего каталога:
useradd -m test-user
  • создание пользователя и добавление его в группу:
useradd -G printer -m test-user
  • создание пользователя с возможностью получения привилегий суперпользователя:
useradd -G wheel -m test-user
  • создание пользователя с определёнными UID и GID (группа с GID должна быть создана заранее):
useradd -u 900 -g 950 test-user
  • создание пользователя с указанием домашней директории:
useradd -d /home/newdmosk test-user
  • создание пользователя без возможности входа в Систему:
useradd -s /sbin/nologin test-user

После создания учётной записи пароль назначается командой:

passwd test-user

Изменение параметров пользователя (usermod)

Для изменения параметров учётной записи применяется команда usermod.

Примеры использования usermod (где test-user – имя учетной записи пользователя):

  • смена основной группы:
usermod -g newgroup test-user
  • добавление пользователя в дополнительную группу:
usermod -a -G group test-user
  • требование сменить пароль при следующем входе:
chage -d 0 test-user

Удаление пользователя (userdel)

Удаление учётной записи выполняется командой userdel (где test-user – имя учетной записи пользователя):

userdel test-user

При необходимости удаления также домашнего каталога используется параметр -r:

userdel -r test-user

Управление сроком действия учётной записи (chage)

Команда chage применяется для управления сроками действия пароля и учётной записи.

Примеры использования команды chage (где test-user – имя учетной записи пользователя):

  • автоматическая блокировка учётной записи с определённой даты:
chage -E 2025-05-01 test-user
  • просмотр параметров:
chage -l test-user
  • бессрочная учётная запись:
chage -E -1 test-user
  • настройка максимального срока действия пароля (например, 30 дней):
chage -M 30 test-user

Управление пользовательскими сессиями

Для контроля текущих сеансов используются:

  • просмотр списка активных пользователей с помощью команды:
who
  • завершение сессии пользователя (где test-user – имя учетной записи пользователя):
pkill -KILL -u test-user

Контроль неудачных попыток входа (faillog)

Команда faillog отображает информацию о неудачных попытках входа и позволяет управлять ограничениями.

Примеры:

  • просмотр записей о неудачных входах:
faillog
  • обнуление счётчика попыток (где test-user – имя учетной записи пользователя):
faillog -r -u test-user

Записи о попытках хранятся в /var/log/faillog. По умолчанию для учётной записи действует лимит в 10 попыток входа.

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

ОС предусматривает механизм контроля времени бездействия пользователя с последующим принудительным завершением графического сеанса. Функционал реализуется с помощью сценария /usr/bin/gui-kick, вызываемого по расписанию через механизм systemd (unit- и timer-файлы). О настройках timer-файлов подробнее см. раздел Системный менеджер systemd.

Сценарий /usr/bin/gui-kick использует утилиту xprintidle, определяющую длительность бездействия пользователя в графическом окружении в миллисекундах. На основании возвращаемого значения сценарий сравнивает время бездействия с двумя порогами:

  • порог предупреждения — при превышении формируется уведомление о скором завершении сеанса;
  • порог завершения сеанса — при достижении которого сценарий инициирует принудительное завершение графического сеанса.

Уведомление отображается через механизм notify-send в активном графическом сеансе пользователя.

Для периодического запуска сценария используется пара файлов:

  • unit-файл службы /etc/systemd/system/gui-kick.service;
  • таймер /etc/systemd/system/gui-kick.timer.

Пример типовой конфигурации файлов:

  • gui-kick.service:
[Unit]
Description=GUI idle session termination check

[Service]
Type=simple
ExecStart=/usr/bin/gui-kick
  • gui-kick.timer:
[Unit]
Description=Periodic GUI idle session check

[Timer]
OnCalendar=*-*-* *:*:00
AccuracySec=1s

[Install]
WantedBy=timers.target

Строчка OnCalendar=*-*-* *:*:00: означает, что таймер запускает сценарий каждую минуту, и где:

  • *-*-* — любая дата (год-месяц-день);
  • *:*: — любой час и любая минута;
  • 00 — запуск в нулевой секунде каждой минуты.

Для включения механизма выполняется активация timer-файлов командами:

systemctl enable gui-kick.timer
systemctl start gui-kick.timer

Статус работы timer-файла можно проверить командами:

systemctl status gui-kick.timer
systemctl list-timers

Интервал бездействия задаётся переменной TIMEOUT, определённой в сценарии /usr/bin/gui-kick и выраженной в секундах. Изменение значения переменной позволяет адаптировать механизм под пользовательские требования.

Сценарий предусматривает следующий порядок действий:

  • за 60 секунд до завершения сеанса пользователю отправляется предупреждение о необходимости проявить активность;
  • если в течение указанного интервала активность не обнаружена, сценарий завершает графический сеанс принудительно, без учета состояния приложений и открытых окон.

Восстановление забытого пароля пользователя

В случае утраты пароля к локальной учётной записи, включая пользователя root, восстановление доступа возможно с использованием Live-образа дистрибутива. Для восстановления пароля пользователя в ОС пользователю необходимо выполнить следующие шаги:

  1. Подготовить загрузочный носитель:
  • загрузить ISO-образ дистрибутива ОС (или совместимого Linux-дистрибутива);
  • записать образ на USB-накопитель или DVD;
  • загрузить Системы в режиме Live (без установки на диск).
  1. Для определения раздела с установленной Системой выполнить следующие действия:
  • открыть программу GParted (в Live-образах ОС РОСА "ХРОМ" она включена по умолчанию, подробнее о работе с программой см. раздел 3.7.4). При использовании другого дистрибутива установить GParted по необходимости;
  • определить раздел с установленной ОС – раздел с точкой монтирования, например, /dev/sda2 (рисунок 2).

Рисунок 2 - Интерфейс программы GParted

  1. Произвести монтирование установленной Системы и войти в chroot:
  • открыть терминал;
  • создать директорию для монтирования:
sudo mkdir /chroot
  • смонтировать корневой раздел установленной Системы:
sudo mount /dev/sdXY /chroot

При необходимости заменить sdXY на имя раздела с точкой монтирования, определённое ранее (например, sda2);

  • перейти в окружение установленной Системы с помощью chroot: sudo chroot /chroot
  1. Сбросить пароль:
  • для смены пароля пользователя root использовать команду: passwd
  • в запросах терминала необходимо ввести и подтвердить новый пароль.
  • для смены пароля другого пользователя использовать команду:
passwd <имя_пользователя>

Если имя пользователя неизвестно, его можно определить одной из следующих команд:

  • просмотр содержимого директории /home;
  • вывод всех пользователей:
cut -d: -f1 /etc/passwd
  1. Завершить работу:
  • завершить сеанс chroot, выйти из Live-режима и перезагрузить компьютер;
  • при следующей загрузке войти в Систему с новым паролем.

Группы пользователей

Информация о группах пользователей хранится в файле /etc/group.

Группы применяются для делегирования прав доступа на определённые файлы, папки, скрипты сразу нескольким пользователям.

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

Создание групп

Для создания групп используется команда groupadd:

groupadd new-group

Параметры команды приведены ниже (таблица 3).

Редактирование групп пользователей

Для редактирования групп используется команда groupmod. Список изменений задаётся с помощью параметров, перечисленных ниже (таблица 4).

Например, если нужно изменить имя группы test-group на имя named-group, команда будет выглядеть так:

groupmod -n named-group test-group

Удаление групп пользователей

Нельзя удалить группу, если она указана в качестве основной для какого-либо существующего пользователя. Предварительно необходимо удалить этого пользователя из группы.

Непосредственно удаление группы выполняется одной командой:

groupdel test-group

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

Управление группами

Базовым инструментом для управления группами является утилита gpasswd. Большинство параметров команды (кроме -A и -M) не сочетаются между собой, то есть в команде может быть только один параметр при разовом выполнении.

Общий вид команды:

gpasswd [что сделать]какой группе]

Параметры команды приведены ниже (таблица 5).

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

gpasswd -a new-user test-group

Также для добавления пользователей в новую группу используется описанная выше команда usermod. В следующем примере пользователь test-user добавляется в группу new-group:

usermod -a -G new-group test-user

Если нужно указать группу new-group в качестве основной группы пользователя test-user, то используется следующая команда:

usermod -g new-group test-user

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

newgrp new-group

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

Для определения, в каких группах состоит пользователь, необходимо воспользоваться командой groups:

user@rosa:~$ groups

user adm cdrom sudo dip plugdev lxd lpadmin sambaShare

Из этого примера видно, что пользователь user состоит в группах user и т. д. Если требуется посмотреть, в каких группах состоит другой пользователь, то нужно передать его имя в качестве аргумента:

user@rosa:~$ groups root

root : root