Bug 45743

Summary: /etc/os-release не в едином стиле между продуктами и часто не соответствует действительности
Product: Sisyphus Reporter: Anton Farygin <rider>
Component: alt-os-releaseAssignee: Mikhail Efremov <sem>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: antohami, arseny, danil, dshein, ldv, mike, nbr, rider, sem, shaba, sin, zerg
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Anton Farygin 2023-04-04 10:36:42 MSK
Для работы инстурментария, сканирующего систему на уязвимости, нужно точно знать репозиторий (версию, имя), с которого данная система получает обновления.

У меня сейчас и уже очень давно sisyphus, но в /etc/os-release до сих пор сказано:

$ cat /etc/os-release
NAME="ALT"
VERSION="10.1"
ID=altlinux
VERSION_ID=10.1
PRETTY_NAME="ALT Workstation K 10.1 (Sorbaronia Mitschurinii)"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:kworkstation:10.1"
BUILD_ID="ALT 9.2 "
HOME_URL="https://www.basealt.ru/"
BUG_REPORT_URL="https://bugs.altlinux.org/"
DOCUMENTATION_URL="https://docs.altlinux.org/"
SUPPORT_URL="https://support.basealt.ru/

Хотя видно, что когда-то давным давно был установлен ALT 9.2
Comment 1 Anton Farygin 2023-04-04 10:38:52 MSK
Аналогичный вопрос для всех веток - где-то должна быть информация о бранче.
Comment 2 Anton Farygin 2023-04-04 10:44:25 MSK
Т.е. - вообще алгоритм работы нужен такой:
я поставил дистрибутив и обновляюсь из stable - у меня в /etc/os-release указан дистрибутив, источник обновления - имя stable бранча. В идеале ещё добавлять дату последней установки обновлений (или дату репозитория, из которого устанавливались обновления).

При переходе с ветки на ветки информация о том, что у меня установлен stable дистрибутив должна стать неактуальной. 

Кстати, в примерах: https://www.freedesktop.org/software/systemd/man/os-release.html

можно заводить свои поля, хотя на мой взгляд достаточно и существующих.
Comment 3 Danil Shein 2023-04-06 10:22:08 MSK
В файле os-release усть строка "CPE_NAME".

Для K Workstation эта строка судя по всемупрописана в пакете branding-xalt-kworkstation-release-*.

А где прописаны эти CPE для остальных продуктов?
Comment 4 Антон Мидюков 2023-04-06 16:41:42 MSK
У меня Сизиф, но брендинг стартеркита:

$ cat /etc/os-release 
NAME="starter kit"
VERSION="p10 (Hypericum)"
ID=altlinux
VERSION_ID=p10
PRETTY_NAME="ALT Starterkit (Hypericum)"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:starterkit:p10"
HOME_URL="http://en.altlinux.org/starterkits"
BUG_REPORT_URL="https://bugs.altlinux.org/"
BUILD_ID="starter kit p10 (Hypericum)"

Мы можем при сборке брендинга выставлять значение репозитория примерно так:
https://git.altlinux.org/gears/b/branding-alt-spserver.git?p=branding-alt-spserver.git;a=commitdiff;h=38c86798b07e325f26c2b0518278715be0998487;hp=3b61efbf752309f38fa2e5cd19ca3c28fb29c28e

в любых частях брендинга.
Но на e2k не работает
rpm --eval %_priority_distbranch

https://bugzilla.altlinux.org/44626
Comment 5 Anton Farygin 2023-04-07 09:13:35 MSK
да, мне тоже нравится идея в os-release добавлять произвольное поле ALT_BRANCH_ID и в него записывать %_priority_distbranch
Только предлагаю это делать через branding пакеты, которые при сборке для бранча будут к себе записывать куда-то в бинарный пакет %_priority_distbranch

Тогда при обновлении с p10 до sisyphus этот самый бинарный пакет обновится и перепишет ALT_BRANCH_ID

Но нужно будет пересобирать эти пакеты после бранчевания.
Comment 6 Danil Shein 2023-04-07 10:12:42 MSK
Необходимо привести записи CPE_NAME в файле к одному виду и определиться с версионированием

Сейчас в стартеркитах докер-контейнерах написано:
CPE_NAME="cpe:/o:alt:starterkit:p10"

В СП8:
CPE_NAME="cpe:/o:alt:spserver:8.4"
CPE_NAME="cpe:/o:alt:spworkstation:8.4"

В Workstation K так:
CPE_NAME="cpe:/o:alt:kworkstation:10.1"

В Simply:
CPE_NAME="cpe:/o:alt:slinux:9.1"
CPE_NAME="cpe:/o:alt:slinux:10.1"


Предлагаю:
- Для стартеркитов (и осованных на них докер-образах) поменять поле версии р10 на 10. Насколько мне исвестно этот момент уже обсуждался с Антоном Мидюковым.
- Для обычных продуктов убрать минорную версию из СРЕ (10.1, 10.2,... -> 10)
- Для СП8 оставить как есть, т.к. 8.3 и 8.4 это разные продукты.

Корректность и единообразие СРЕ на самом деле важно для обеспечения однозначной идентификации целевой ОС при обработке информации об уязвимостях.
Comment 7 Антон Мидюков 2023-04-07 11:32:03 MSK
(Ответ для Danil Shein на комментарий #6)
> Необходимо привести записи CPE_NAME в файле к одному виду и определиться с
> версионированием
> 
> Сейчас в стартеркитах докер-контейнерах написано:
> CPE_NAME="cpe:/o:alt:starterkit:p10"
> 
> В СП8:
> CPE_NAME="cpe:/o:alt:spserver:8.4"
> CPE_NAME="cpe:/o:alt:spworkstation:8.4"
> 
> В Workstation K так:
> CPE_NAME="cpe:/o:alt:kworkstation:10.1"
> 
> В Simply:
> CPE_NAME="cpe:/o:alt:slinux:9.1"
> CPE_NAME="cpe:/o:alt:slinux:10.1"
> 
> 
> Предлагаю:
> - Для стартеркитов (и осованных на них докер-образах) поменять поле версии
> р10 на 10. Насколько мне исвестно этот момент уже обсуждался с Антоном
> Мидюковым.

Да. Но давайте уточним. Сейчас версия p10 у пакета, так что
VERSION=p10
VERSION_ID=p10
Будет ли достаточно поменять p10 -> 10 только в cpe? Или лучше поменять и VERSION с VERSION_ID.

> - Для обычных продуктов убрать минорную версию из СРЕ (10.1, 10.2,... -> 10)
> - Для СП8 оставить как есть, т.к. 8.3 и 8.4 это разные продукты.

А для СП, который будет на репозитории c10f1, а потом с10f2?
Сейчас там так:

ALT SP Workstation:

NAME="ALT SP Workstation"
VERSION="10"
ID=altlinux
VERSION_ID=10
PRETTY_NAME="ALT SP Workstation 11100-01"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:spworkstation:10"
HOME_URL="https://basealt.ru/"

и

ALT SP Server:

NAME="ALT SP Server"
VERSION="10"
ID=altlinux
VERSION_ID=10
PRETTY_NAME="ALT SP Server 11100-01"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:spserver:10"
HOME_URL="https://basealt.ru/"
Comment 8 Sergey V Turchin 2023-04-07 11:35:36 MSK
(Ответ для Anton Farygin на комментарий #5)
> Но нужно будет пересобирать эти пакеты после бранчевания.
Перед выходом первых продуктов на новом бранче, они так или иначе пересоберутся.
Comment 9 Sergey V Turchin 2023-04-07 11:50:39 MSK
> %_priority_distbranch
Облом. Он есть в rpm, но отсутствует в rpm-build.
Comment 10 Антон Мидюков 2023-04-07 12:00:00 MSK
(Ответ для Sergey V Turchin на комментарий #9)
> > %_priority_distbranch
> Облом. Он есть в rpm, но отсутствует в rpm-build.

%define BRANCH $(rpm --eval %_priority_distbranch)
Comment 11 Sergey V Turchin 2023-04-07 12:08:37 MSK
(Ответ для Антон Мидюков на комментарий #10)
> %define BRANCH $(rpm --eval %_priority_distbranch)
Пейздесь кофе. Ну, придётся. ;-)
Comment 12 Anton Farygin 2023-04-07 13:38:55 MSK
@ldv - нам очень нужен бранч в rpm-build. Без извращений.
Comment 13 Dmitry V. Levin 2023-04-07 14:36:17 MSK
(In reply to Anton Farygin from comment #12)
> @ldv - нам очень нужен бранч в rpm-build. Без извращений.

$ hsh-run -- rpm --showrc |grep branch
-14: _priority_distbranch	sisyphus
$ hsh-run -- rpmbuild --showrc |grep branch
-14: _priority_distbranch	sisyphus
Comment 14 Sergey V Turchin 2023-04-07 14:41:38 MSK
(Ответ для Dmitry V. Levin на комментарий #13)
> $ hsh-run -- rpmbuild --showrc |grep branch
> -14: _priority_distbranch	sisyphus
Так, но
ошибка: Macro %_priority_distbranch not found
на этой же системе.
Или без hsh-run это не работает?
Comment 15 Anton Farygin 2023-04-07 14:48:13 MSK
(Ответ для Dmitry V. Levin на комментарий #13)
> (In reply to Anton Farygin from comment #12)
> > @ldv - нам очень нужен бранч в rpm-build. Без извращений.
> 
> $ hsh-run -- rpm --showrc |grep branch
> -14: _priority_distbranch	sisyphus
> $ hsh-run -- rpmbuild --showrc |grep branch
> -14: _priority_distbranch	sisyphus


Как так ?
$ rpmbuild --showrc|grep  priority_distbranch|wc -l
0
$ rpm --showrc|grep  priority_distbranch
-14: _priority_distbranch       sisyphus
В hasher тоже не работает:
[builder@localhost .in]$ rpmbuild --showrc|grep  priority_distbranch|wc -l
0
$ hsh-run --  rpmbuild --showrc|grep  branch|wc -l
0
$ hsh-run --  rpm --showrc|grep  branch|wc -l
1
Comment 16 Dmitry V. Levin 2023-04-07 15:20:17 MSK
$ hsh-run -- rpmquery -f /usr/lib/rpm/macros.d/altlinux-release
altlinux-release-sisyphus-20201124-alt1.noarch

Пакет altlinux-release-$branch устанавливается в сборочную среду как при обычной сборке, так и при тестовой пересборке.
Comment 17 Sergey V Turchin 2023-04-07 15:38:11 MSK
(Ответ для Dmitry V. Levin на комментарий #16)
> $ hsh-run -- rpmquery -f /usr/lib/rpm/macros.d/altlinux-release
> altlinux-release-sisyphus-20201124-alt1.noarch
LOL
Comment 18 Sergey V Turchin 2023-04-07 15:44:51 MSK
(Ответ для Dmitry V. Levin на комментарий #13)
> > @ldv - нам очень нужен бранч в rpm-build. Без извращений.
> $ hsh-run -- rpm --showrc |grep branch
> -14: _priority_distbranch	sisyphus
> $ hsh-run -- rpmbuild --showrc |grep branch
> -14: _priority_distbranch	sisyphus
Без изврата это не работает.
https://git.altlinux.org/tasks/312542/gears/200/git?p=git;a=commitdiff;h=8e3fa1e966bf1d0f03d1eb4a6f971dc398ceda08
Comment 19 Антон Мидюков 2023-04-07 20:22:42 MSK
(Ответ для Sergey V Turchin на комментарий #18)
> (Ответ для Dmitry V. Levin на комментарий #13)
> > > @ldv - нам очень нужен бранч в rpm-build. Без извращений.
> > $ hsh-run -- rpm --showrc |grep branch
> > -14: _priority_distbranch	sisyphus
> > $ hsh-run -- rpmbuild --showrc |grep branch
> > -14: _priority_distbranch	sisyphus
> Без изврата это не работает.
> https://git.altlinux.org/tasks/312542/gears/200/git?p=git;a=commitdiff;
> h=8e3fa1e966bf1d0f03d1eb4a6f971dc398ceda08

А в сборочнице то работает, так как там приоритет у altlinux-release-$branch при инициализации hasher.
На самом деле это же здорово! Если пакет собрали не на сборочнице, то %_priority_distbranch будет текстом. Дополнительная защита от подделки (защита от честных людей и самого себя). В случае брендингов это же очень хорошо.
Comment 20 Sergey V Turchin 2023-04-10 12:09:18 MSK
(Ответ для Антон Мидюков на комментарий #19)
> > Без изврата это не работает.
> > https://git.altlinux.org/tasks/312542/gears/200/git?p=git;a=commitdiff;
> > h=8e3fa1e966bf1d0f03d1eb4a6f971dc398ceda08
> А в сборочнице то работает
Ну, ладно. Я себе костыль сделал.
Comment 21 Mikhail Efremov 2023-04-10 13:29:24 MSK
(In reply to Антон Мидюков from comment #19)
> А в сборочнице то работает, так как там приоритет у altlinux-release-$branch
> при инициализации hasher.

В локальном хэшере при установки приоритета для altlinux-release-sisyphus в Сизифе у меня тоже работает. А вот для p10 все равно нет, т.к. в altlinux-release-p10 не задается %_priority_distbranch.
Comment 22 Антон Мидюков 2023-04-10 13:53:07 MSK
(Ответ для Mikhail Efremov на комментарий #21)
> (In reply to Антон Мидюков from comment #19)
> > А в сборочнице то работает, так как там приоритет у altlinux-release-$branch
> > при инициализации hasher.
> 
> В локальном хэшере при установки приоритета для altlinux-release-sisyphus в
> Сизифе у меня тоже работает. А вот для p10 все равно нет, т.к. в
> altlinux-release-p10 не задается %_priority_distbranch.

Действительно. Нужно исправить altlinux-release-p10.
Comment 23 Антон Мидюков 2023-04-10 21:04:00 MSK
(Ответ для Антон Мидюков на комментарий #22)
> (Ответ для Mikhail Efremov на комментарий #21)
> > (In reply to Антон Мидюков from comment #19)
> > > А в сборочнице то работает, так как там приоритет у altlinux-release-$branch
> > > при инициализации hasher.
> > 
> > В локальном хэшере при установки приоритета для altlinux-release-sisyphus в
> > Сизифе у меня тоже работает. А вот для p10 все равно нет, т.к. в
> > altlinux-release-p10 не задается %_priority_distbranch.
> 
> Действительно. Нужно исправить altlinux-release-p10.

[#318341] p10 EPERM (try 3) altlinux-release-p10.git=20210721-alt2
Comment 24 Антон Мидюков 2023-04-26 06:39:59 MSK
(Ответ для Антон Мидюков на комментарий #23)
> (Ответ для Антон Мидюков на комментарий #22)
> > (Ответ для Mikhail Efremov на комментарий #21)
> > > (In reply to Антон Мидюков from comment #19)
> > > > А в сборочнице то работает, так как там приоритет у altlinux-release-$branch
> > > > при инициализации hasher.
> > > 
> > > В локальном хэшере при установки приоритета для altlinux-release-sisyphus в
> > > Сизифе у меня тоже работает. А вот для p10 все равно нет, т.к. в
> > > altlinux-release-p10 не задается %_priority_distbranch.
> > 
> > Действительно. Нужно исправить altlinux-release-p10.
> 
> [#318341] p10 EPERM (try 3) altlinux-release-p10.git=20210721-alt2

Пришло в p10. Можно использовать.
Comment 25 Mikhail Efremov 2023-05-03 15:42:58 MSK
(In reply to Danil Shein from comment #6)
> - Для обычных продуктов убрать минорную версию из СРЕ (10.1, 10.2,... -> 10)

Почему? Из спецификации CPE это совсем не следует. Напротив, в примерах именно полная версия, а не ее часть.
Comment 26 Mikhail Efremov 2023-05-03 15:55:14 MSK
(In reply to Anton Farygin from comment #5)
> да, мне тоже нравится идея в os-release добавлять произвольное поле
> ALT_BRANCH_ID и в него записывать %_priority_distbranch
> Только предлагаю это делать через branding пакеты, которые при сборке для
> бранча будут к себе записывать куда-то в бинарный пакет %_priority_distbranch

Мне не сложно добавить ALT_BRANCH_ID, но хотелось бы понимать, действительно ли это кому-то надо и где и для чего это используется. Также следует учитывать, что это поле будет отражать только тот факт, что в системе скорее всего стоит branding, собранный для указанного бранча и больше ничего. Какие пакеты и откуда еще там установлены, что написано в apt source.list и т.п. - все это так же неизвестно.
Comment 27 Антон Мидюков 2023-05-15 13:32:35 MSK
Задание с исправленным /etc/os-release в брендинге стартеркитов ушло в p10:

[#320276] p10 DONE (try 2) branding-alt-starterkit.git=10-alt3
Comment 28 Антон Мидюков 2024-06-19 17:45:12 MSK
На данный момент ALT_BRANCH_ID внедрён в os-release следующих брендингов:
branding-xalt-kworkstation
branding-alt-spserver
branding-alt-spworkstation
branding-alt-starterkit
branding-alt-sisyphus
branding-alt-mobile-sisyphus