Вход в систему

Вход в систему — то место загрузки, где машина заканчивает поднимать службы и начинает спрашивать человека: кто ты и пускать ли тебя. У этого места две формы: текстовая (login в терминале) и графическая (форма входа в GNOME — GDM). Обе делают одно и то же и обе устроены одинаково: спрашивают имя и пароль и отдают проверку PAM.

Статья — мостик между разделом «Загрузка» и «Безопасностью». Дальше — два подробных разбора: терминальный вход и графический вход в GNOME.

Где это место в загрузке

systemd доводит систему до цели: multi-user.target — система без графики, graphical.target — с ней.

$ systemctl get-default
graphical.target

От цели зависит, кто включается первым:

Цель Кто спрашивает пароль
multi-user.target getty@tty1 → agetty → login
graphical.target gdm.service (он же display-manager.service)
rescue.target sulogin — вход для починки, когда обычный вход сломан
$ systemctl list-units --type=service --state=running | grep -E 'getty|gdm'

display-manager.service — не отдельная служба, а псевдоним: на Ubuntu он указывает на gdm.service. Поэтому в системе бывает видна и «служба входа», и её псевдоним — это одна и та же вещь.

Два вида входа — один механизм

Внешне это разные вещи, внутри — одинаковые:

Терминал Графический вход
Программа входа login gnome-shell в режиме приветствия (greeter)
Кто запускает agetty на tty1…tty6 gdm.service
Файл настроек входа /etc/login.defs /etc/gdm3/custom.conf
Служба PAM /etc/pam.d/login /etc/pam.d/gdm-password
Приглашение до входа /etc/issue окно приветствия
Текст после входа /etc/motd —

Ключевое здесь — последний столбец: и терминал, и GNOME передают проверку пароля одной и той же подсистеме — PAM. Поэтому «не пускает в систему» в терминале и в GNOME лечится одинаково, а модули и правила описаны один раз в блоке PAM.

Найдите свою службу PAM глазами, а не догадками — вот цепочка терминального входа (файл /etc/pam.d/login на Ubuntu):

auth  optional   pam_faildelay.so  delay=3000000
auth  requisite  pam_nologin.so
...
@include common-auth

Из неё сразу видно три вещи: пауза после неудачного пароля (3 секунды), запрет входа при существующем /etc/nologin, и общая проверка пароля из common-auth. Подробнее — в разборе терминального входа.

Что происходит после успешной проверки

Вход — это не только «пароль подошёл». PAM открывает сессию, и уже она делает остальное:

  1. создаётся запись в журнале сессий (pam_systemd), её видно через loginctl;
  2. выставляются лимиты процессов (pam_limits.so) и маска прав на файлы;
  3. подключается домашний каталог пользователя, если он есть;
  4. применяются переменные окружения (pam_env.so, файл /etc/default/locale);
  5. запускается оболочка из /etc/passwd (или графическая сессия), читаются /etc/profile и пользовательские файлы настроек.

Проверить, что сессия есть и где она идёт:

$ loginctl list-sessions
$ loginctl show-session $(loginctl list-sessions --no-legend | awk '{print $1}' | head -1) -p Type -p Remote -p State

Если войти не удаётся

Порядок поиска — от того, что видно, к тому, что скрыто:

# 1. Кто сейчас в системе и откуда
$ who
$ w

# 2. Не заблокирован ли вход попытками (pam_faillock)
$ faillock --user user

# 3. Что говорит служба входа: терминал или GDM
$ journalctl -u getty@tty1 -n 30 --no-pager
$ journalctl -u gdm -n 30 --no-pager

# 4. Журнал аутентификации целиком
$ journalctl -n 50 --no-pager | grep -i -E 'login|pam|gdm'

Что важно помнить при разборе: вход могут запретить четыре разных слоя, и путать их — обычное дело. Запрет в домене (нет учётки или машина не в домене), отказ PAM (правило, pam_nologin, faillock), отсутствие домашнего каталога или оболочки, и наконец графическая сессия, которая падает уже после успешного входа. Первые три видны в журнале аутентификации, четвёртая — в журнале графической сессии.

Экстренный вход

Если сломались и графический вход, и обычный, есть вход, который не спрашивает ни PAM, ни домашний каталог:

  • в загрузчике выбрать пункт с recovery mode — там поднимается rescue.target и пароль спрашивает sulogin;
  • при работающей системе переключиться на другой виртуальный терминал: Ctrl+Alt+F3 (графика занимает F1/F2).

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

Источники

  • man 1 login, man 8 agetty, man 5 issue, man 5 motd, man 5 login.defs, man 8 nologin — пакеты util-linux и login (Ubuntu 26.04).
  • man 8 pam_nologin, man 8 pam_faildelay, man 8 pam_motd, man 8 pam_env, man 8 pam_systemd — модули PAM, пакет libpam-modules.
  • man 1 loginctl, man 8 systemd-logind — сессии и рабочие места.
  • Содержимое /etc/pam.d/login и /etc/gdm3/custom.conf — приведено с рабочей системы (Ubuntu 26.04, GNOME).

Что ещё не проверено

  • Цепочки PAM и файлы настроек показаны с Ubuntu 26.04 с GNOME. В Debian, Mint и на других рабочих столах имена служб PAM и файл настроек входа будут другими (у LightDM — свой), сами модули те же.
  • Экстренный вход через recovery mode описан по документации systemd и не проверялся на этой машине.
Оценка статьи 0

Комментарии

Пока комментариев нет.