sessreg
Подробнее
- Создатель
- Keith Packard, MIT X Consortium
- Тип
- Утилита utmp/wtmp
- Лицензия
- MIT
- Исходный код
- gitlab.freedesktop.org
Небольшая программа, записывающая вход в X в utmp и wtmp, чтобы who и last его видели, — потому что xdm, в отличие от getty и login, этого не делает.
Unix следит за вошедшими через utmp, который пишет login, а историю хранит wtmp, читаемый last. Сеанс X через XDM обходит login целиком, и без помощи его просто не видно. Дыру закрыл Кейт Паккард, написав sessreg в MIT X Consortium: Xstartup xdm запускает sessreg -a -l $DISPLAY $USER в начале сеанса, а Xreset — sessreg -d в конце, и в колонке терминала вместо tty появляется :0. Колонка зовётся «line» по наследству от последовательных линий, а возраст выдают оригинальные флаги -x Xservers и -s: они определяли слот в файле utmp, когда тот индексировался по терминалам. Сегодня используется POSIX pututxline, а флаги принимаются и игнорируются.
GDM, LightDM и SDDM пишут utmp сами, так что sessreg на практике — инструмент xdm и самодельных схем с startx. Он стал менее нужен, когда systemd-logind завёл собственный учёт сеансов, а 32-битная метка времени формата utmp упрётся в стену в 2038 году, поэтому glibc и systemd начали его выводить. Это займёт время: who — первое, что многие набирают на чужой машине, а ответ с :0 на месте tty — как раз тот учёт, ради которого sessreg и придуман.