Bug 53483 - При авторизации в tty обычным пользователем переменная окружения USER=root
Summary: При авторизации в tty обычным пользователем переменная окружения USER=root
Status: RESOLVED FIXED
Alias: None
Product: Branch p11
Classification: Unclassified
Component: systemd (show other bugs)
Version: unspecified
Hardware: all Linux
: P5 critical
Assignee: Alexey Shabalin
QA Contact: qa-p11@altlinux.org
URL:
Keywords:
Depends on:
Blocks: 46625
  Show dependency tree
 
Reported: 2025-03-17 09:00 MSK by Антон Мидюков
Modified: 2025-04-01 18:56 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Антон Мидюков 2025-03-17 09:00:25 MSK
При авторизации в tty обычным пользователем переменная окружения USER=root.
systemd environment показывает правильно при этом:

$ systemctl --user --show-environment |grep USER=
USER=antohami

А env показывает:

$ env |grep USER
USER=root

В /etc/profile есть такой код:

[ -n "$USER" ] || USER="/usr/bin/id -un"

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

USER="/usr/bin/id -un"

то USER=antohami

Где-то переменная устанавливается, но непонятно где. Я ничего не нашёл.
Проблема началась 24 мая 2024 года после обновления systemd 254.10-alt2 -> 255.6-alt1. Поэтому пока на systemd.
Comment 1 Антон Мидюков 2025-03-17 11:43:30 MSK
Я внёс такое исправление в /usr/lib/systemd/system/getty@.service:

 [Service]
 # the VT is cleared by TTYVTDisallocate
 # The '-o' option value tells agetty to replace 'login' arguments with an
 # option to preserve environment (-p), followed by '--' for safety, and then
 # the entered username.
-ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear - $TERM
+ExecStart=-/sbin/agetty -o '-- \\u' --noclear - $TERM

Т.е. убрал -p, и помогло.
Comment 2 Sergey V Turchin 2025-03-17 13:32:24 MSK
(Ответ для Антон Мидюков на комментарий #0)

[...]
> В /etc/profile есть такой код:
> [ -n "$USER" ] || USER="/usr/bin/id -un"
> Если закомментировать строку, то ничего меняется.
Значит, там уже заполнена неправильно.

[...]
Comment 3 Антон Мидюков 2025-03-17 13:34:21 MSK
Можно также добавить в getty@.service:

UnsetEnvironment=USER
Comment 4 Arseny Maslennikov 2025-03-17 13:39:16 MSK
(In reply to Антон Мидюков from comment #3)
> Можно также добавить в getty@.service:
> 
> UnsetEnvironment=USER

Но это костыль.

Казалось бы, программа login(1), порождённая из-под getty, не должна переносить в сеанс значение USER из своего env block, потому что там PAM-стек задействуется.
Comment 5 Антон Мидюков 2025-03-17 14:07:25 MSK
(In reply to Антон Мидюков from comment #1)
> Я внёс такое исправление в /usr/lib/systemd/system/getty@.service:
> 
>  [Service]
>  # the VT is cleared by TTYVTDisallocate
>  # The '-o' option value tells agetty to replace 'login' arguments with an
>  # option to preserve environment (-p), followed by '--' for safety, and then
>  # the entered username.
> -ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear - $TERM
> +ExecStart=-/sbin/agetty -o '-- \\u' --noclear - $TERM
> 
> Т.е. убрал -p, и помогло.

Информация от arseny@, что в Debian убрали:

commit 3d2157e7072b3e9691c469b992848fb249f8b605
Author: Ronan Pigott <ronan@rjp.ie>
Date:   Wed Aug 14 11:42:03 2024 -0700

    units: drop "-p" flag from agetty's login options

Так что предлагаю тоже это сделать.
Исправить в getty@.service и serial-getty@.service

Проблема актуальна для p11. Нужно исправить до выпуска дистрибутивов на p11.
Comment 6 Антон Мидюков 2025-03-17 14:46:57 MSK
Оказывается, уже есть апстримный патч (спасибо Арсению за ссылку), удаляющий опцию -p у agetty:
https://github.com/systemd/systemd/commit/3d2157e7072b3e9691c469b992848fb249f8b605
Comment 7 Sergey V Turchin 2025-03-18 13:23:15 MSK
Ещё бы мантейнер пакета нашёлся...
Comment 8 Sergey V Turchin 2025-03-19 12:11:52 MSK
Похоже, что при багах все подобные пакеты баги репортеру флаг в руки. ;-)
Comment 9 Arseny Maslennikov 2025-03-19 13:35:39 MSK
Пока что вокруг текущей баги остаётся один вопрос: стоит ли лишь сбекпортить патч, где убирают -p, или лучше просто обновиться до systemd-stable 257.x. Ответ на него, думаю, зависит от планируемого жизненного цикла systemd не только в сизифе, но и в p11. Скорее всего, у shaba@ были какие-то соображения на этот счёт.
Comment 10 Alexey Shabalin 2025-03-19 18:44:47 MSK
Я пока бэкпортирую. Обновлением на новую ветку займусь позже.
Comment 11 Repository Robot 2025-03-20 19:24:38 MSK
systemd-1:255.18-alt1 -> sisyphus:

 Wed Mar 19 2025 Alexey Shabalin <shaba@altlinux> 1:255.18-alt1
 - 255.18
 - drop "-p" flag from agetty's login options (ALT#53483)
Comment 12 Антон Мидюков 2025-03-21 05:37:15 MSK
(In reply to Repository Robot from comment #11)
> systemd-1:255.18-alt1 -> sisyphus:
> 
>  Wed Mar 19 2025 Alexey Shabalin <shaba@altlinux> 1:255.18-alt1
>  - 255.18
>  - drop "-p" flag from agetty's login options (ALT#53483)

Спасибо. Теперь ждём исправление в p11.
Comment 13 Sergey V Turchin 2025-03-21 09:41:42 MSK
> Спасибо. Теперь ждём исправление в p11.
Я отправил https://packages.altlinux.org/ru/tasks/378740/
Comment 14 Sergey V Turchin 2025-03-21 09:42:33 MSK
(Ответ для Sergey V Turchin на комментарий #13)
> Я отправил https://packages.altlinux.org/ru/tasks/378740/
Ой, это другое. :-)
Comment 15 Антон Мидюков 2025-03-24 14:42:13 MSK
Ждём исправление в p11. Очень не хочется, чтобы дистрибутивы были из коробки с этим багом.
Comment 16 Repository Robot 2025-04-01 18:56:17 MSK
systemd-1:255.18-alt1 -> p11:

 Wed Mar 19 2025 Alexey Shabalin <shaba@altlinux> 1:255.18-alt1
 - 255.18
 - drop "-p" flag from agetty's login options (ALT#53483)
 Sun Jan 05 2025 Alexey Shabalin <shaba@altlinux> 1:255.16-alt1
 - 255.16
 Thu Oct 10 2024 Alexey Shabalin <shaba@altlinux> 1:255.13-alt1
 - 255.13
 Tue Sep 24 2024 Alexey Shabalin <shaba@altlinux> 1:255.12-alt1
 - 255.12