ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] NobodySubjectPolicy implementation
@ 2023-12-19 18:13 arseny
  2024-01-08  9:29 ` Arseny Maslennikov
  0 siblings, 1 reply; 4+ messages in thread
From: arseny @ 2023-12-19 18:13 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 2628 bytes --]

On Wed, Nov 15, 2023 at 04:00:56PM +0300, Arseny Maslennikov wrote:
> Hi!
> <...> 
> === Предложение ===
> 
> Вношу следующее предложение:
> - Сменить пользователю и группе nobody численный идентификатор с 99 на
>   65534. Для обозначения 99-го оставить другое имя, например, _nobody99;
> - Передать /var/nobody этому самому _nobody99;

Оказалось проще удалить этот каталог совсем; он не должен быть никому
нужен.

То, что получилось, можно наблюдать в задании:
https://git.altlinux.org/tasks/330460/

Есть пока и препятствия, о которых ниже.

> Для пакетов в Sisyphus:
> <...>
> - Рекомендовать мейнтейнерам не допускать, чтобы собираемые ими
>   системные службы исполняли код под nobody;
> - Рекомендовать администраторам не запускать процессы под юзером и группой
>   nobody.
За этим должен был следить brp-модуль при сборке пакета, который бы
запрещал класть в пакет systemd-юниты, указывающие nobody в User=,
Group=, SupplementaryGroups=. Но rpm-build перестаёт проходить проверки
из rpminstall-tests со следующей чудесной диагностикой[1]:

    rpm --dbpath '/tmp/sh.Hh8cuteY/sh.DakRlnyW' --justdb -i RPMS/dummy/noarch/dummy-1-alt1.noarch.rpm
    error: Couldn't create temporary file for posttrans filetriggers: Success

При этом создать под dbpath файлы для базы у него получается. Снаружи
fakeroot-окружения все эти временные каталоги имеют uid и gid rooter,
конечно.
[1] https://git.altlinux.org/tasks/336802/logs/events.1.1.log

> === Footprint ===
> <...>
>   checkinstall-helper-sh-safely	imz @everybody

Если в используемом выше /usr/sbin/sh-safely из этого пакета,
сбрасывающем привилегии до nobody, изменить это имя на _nobody99, то
симптом всё ещё воспроизводится, а если убрать "--chuid nobody:nobody",
то перестаёт.

Нужно разбираться.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [devel] NobodySubjectPolicy implementation
  2023-12-19 18:13 [devel] NobodySubjectPolicy implementation arseny
@ 2024-01-08  9:29 ` Arseny Maslennikov
  2024-01-08  9:52   ` [devel] [#330460] TESTED (try 16) Arseny Maslennikov
  0 siblings, 1 reply; 4+ messages in thread
From: Arseny Maslennikov @ 2024-01-08  9:29 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1514 bytes --]

On Tue, Dec 19, 2023 at 09:13:07PM +0300, arseny@altlinux.org wrote:
> Но rpm-build перестаёт проходить проверки
> из rpminstall-tests со следующей чудесной диагностикой[1]:
> 
>     rpm --dbpath '/tmp/sh.Hh8cuteY/sh.DakRlnyW' --justdb -i RPMS/dummy/noarch/dummy-1-alt1.noarch.rpm
>     error: Couldn't create temporary file for posttrans filetriggers: Success

У пользователя, под которым запускалась команда выше, envvar HOME была
назначена в /root (логично для pre-скрипта в checkinstall-пакете). Поэтому:
- подхватывались определения, которые содержит файл $HOME/.rpmmacros в хешере:

    %_topdir	%homedir/RPM
    %_tmppath	%homedir/tmp

- "%homedir/tmp" раскрывалась в то, чего нет: в "/dev/null/tmp", потому
  что RPM, раскрывая этот макрос, берёт значение из nss password
  database, не проверяя, что там за объект, и всегда игнорируя своё
  значение $HOME.

Решение — исправить rpminstall-tests так, чтобы в окружении, где
работает тест, $HOME точно был каталогом, доступным на запись, и не
подхватывались чужие .rpmmacros-файлы (уже в Sisyphus).

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [devel] [#330460] TESTED (try 16) ...
  2024-01-08  9:29 ` Arseny Maslennikov
@ 2024-01-08  9:52   ` Arseny Maslennikov
  2024-02-29  8:42     ` [devel] I: nobody-owned files in packages Arseny Maslennikov
  0 siblings, 1 reply; 4+ messages in thread
From: Arseny Maslennikov @ 2024-01-08  9:52 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 3062 bytes --]

Соответственно, прошу посмотреть и одобрить*:
https://packages.altlinux.org/tasks/330460

#740 setup 2.2.19-alt1 -> 2.2.20-alt1
 Tue Nov 07 2023 Arseny Maslennikov <arseny@altlinux> 2.2.20-alt1
 - Install the default overflowuid defined by Linux (incl. our kernels) as the
   nobody user and group. The user and group 99 are installed as _nobody99.
#1000 filesystem 2.3.18-alt1 -> 2.3.19-alt1
 Thu Nov 16 2023 Arseny Maslennikov <arseny@altlinux> 2.3.19-alt1
 - Removed /var/nobody altogether.
#1140 basesystem 1:sisyphus-alt23 -> 1:sisyphus-alt25
 Sun Dec 10 2023 Arseny Maslennikov <arseny@altlinux> 1:sisyphus-alt25
 - Split interactivesystem away from basesystem.
 Sat Dec 09 2023 Arseny Maslennikov <arseny@altlinux> 1:sisyphus-alt24
 - Added a facility to upgrade default passwd entries, hopefully temporary.
#1600 sisyphus_check 0.8.68-alt2 -> 0.8.69-alt1
 Tue Nov 14 2023 Arseny Maslennikov <arseny@altlinux> 0.8.69-alt1
 - Disallowed file objects whose owner or group is nobody.
#2100 rpm-build 4.0.4.194-alt1 -> 4.0.4.195-alt1
 Fri Dec 08 2023 Arseny Maslennikov <arseny@altlinux> 4.0.4.195-alt1
 - Introduced brp-verify-unit to check sanity of systemd units included
   in built packages.

Править basesystem пришлось, чтобы куда-то воткнуть код по обновлению
уже установленных /etc/{passwd,group}. Будь у нас портативная реализация
программы sysusers, которую можно было бы включить в basesystem, этим бы
занималась она; но это дело будущего.

Вытаскивать оттуда interactivesystem пришлось, потому что тот пакет
не проходил install check, при этом не входя в зависимости других
пакетов; из него пришлось выбросить syslogd-daemon (тот всегда тащил
systemd).
Более того, этот пакет, судя по публичным источникам, главным образом
используется в составе образов; сопровождать его имеет смысл вместе с
mkimage-profiles, а значит, у него и у basesystem должны быть совсем
разные ACL, потому что консистентностью базовых пакетов репозитория и
составом образов занимаются совсем разные люди.

____
* Но сначала, конечно же, питон! :)
  А может, мы ему и не помешаем: наша сборочница в некоторых случаях
  вешает задание в сост. POSTPONED, если там что-то приобретает
  зависимость на то, что пропадает в задании 333513, но собрать 330460 в
  tested мне позволили.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [devel] I: nobody-owned files in packages
  2024-01-08  9:52   ` [devel] [#330460] TESTED (try 16) Arseny Maslennikov
@ 2024-02-29  8:42     ` Arseny Maslennikov
  0 siblings, 0 replies; 4+ messages in thread
From: Arseny Maslennikov @ 2024-02-29  8:42 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1391 bytes --]

On Mon, Jan 08, 2024 at 12:52:45PM +0300, Arseny Maslennikov wrote:
> https://packages.altlinux.org/tasks/330460

В ближайшее время задание уйдёт в сизиф.

> #740 setup 2.2.19-alt1 -> 2.2.20-alt1
>  Tue Nov 07 2023 Arseny Maslennikov <arseny@altlinux> 2.2.20-alt1
>  - Install the default overflowuid defined by Linux (incl. our kernels) as the
>    nobody user and group. The user and group 99 are installed as _nobody99.
> #1000 filesystem 2.3.18-alt1 -> 2.3.19-alt1
>  Thu Nov 16 2023 Arseny Maslennikov <arseny@altlinux> 2.3.19-alt1
>  - Removed /var/nobody altogether.
> #1140 basesystem 1:sisyphus-alt23 -> 1:sisyphus-alt25
>  Sun Dec 10 2023 Arseny Maslennikov <arseny@altlinux> 1:sisyphus-alt25
>  - Split interactivesystem away from basesystem.
>  Sat Dec 09 2023 Arseny Maslennikov <arseny@altlinux> 1:sisyphus-alt24
>  - Added a facility to upgrade default passwd entries, hopefully temporary.

Обращаю особое внимание на следующее правило:

> #1600 sisyphus_check 0.8.68-alt2 -> 0.8.69-alt1
>  Tue Nov 14 2023 Arseny Maslennikov <arseny@altlinux> 0.8.69-alt1
>  - Disallowed file objects whose owner or group is nobody.

sisyphus-check будет зарубать пакеты, где что-либо упаковано как:
  %attr(*, nobody, *)
или
  %attr(*, *, nobody)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-02-29  8:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-19 18:13 [devel] NobodySubjectPolicy implementation arseny
2024-01-08  9:29 ` Arseny Maslennikov
2024-01-08  9:52   ` [devel] [#330460] TESTED (try 16) Arseny Maslennikov
2024-02-29  8:42     ` [devel] I: nobody-owned files in packages Arseny Maslennikov

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git