Вход в систему
Вход в систему — то место загрузки, где машина заканчивает поднимать службы и начинает спрашивать человека: кто ты и пускать ли тебя. У этого места две формы: текстовая (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 открывает сессию, и уже она делает остальное:
- создаётся запись в журнале сессий (
pam_systemd), её видно черезloginctl; - выставляются лимиты процессов (
pam_limits.so) и маска прав на файлы; - подключается домашний каталог пользователя, если он есть;
- применяются переменные окружения (
pam_env.so, файл/etc/default/locale); - запускается оболочка из
/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 и не проверялся на этой машине.
Комментарии
Пока комментариев нет.