* [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
@ 2024-02-10 11:37 Arseny Maslennikov
2024-02-10 14:06 ` Anton Farygin
2024-02-18 13:35 ` Vitaly Lipatov
0 siblings, 2 replies; 16+ messages in thread
From: Arseny Maslennikov @ 2024-02-10 11:37 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 3178 bytes --]
Hi!
В опубликованный сегодня Sisyphus вошёл новый rpm-build:
> rpm-build - Scripts and executable programs used to build packages
> * Thu Jan 11 2024 Arseny Maslennikov <arseny@altlinux> 4.0.4.195-alt1
> - debuginfo: Changed compression format (--lzma2=dict=2MiB ->
> --check=crc32 --lzma2=dict=1MiB) of xz-compressed modules for compatibility
> with kmod >= 31 (thx asheplyakov@).
> - Introduced brp-verify-unit to check sanity of systemd units included
> in built packages.
Новый brp-модуль проверяет юниты systemd на вшивость. Пока он содержит
две проверки:
* <...>
* файл с systemd-юнитом, предусматривающим порождение процесса, не
должен запускать что-либо под nobody.
В результате сегодняшней тестовой пересборки обнаружилось[1] 5 пакетов,
содержащих systemd-юниты, предписывающие запускать что-либо под nobody.
[1] https://lore.altlinux.org/sisyphus-cybertalk/Zcb1ezIHJkgVff21@beehive.mskdc.altlinux.org/T/#u
Пакеты, перечисленные ниже, нужно исправить, убрав из директив User= и
Group= упоминания uid и gid 65534 и имени nobody.
Лучше всего завести им отдельного пользователя (и, в случае
mariadb-server-galera, группу). systemd поддерживает директиву
DynamicUser=, но я не видел её применения на практике в классических
дистрибутивах, кроме, может быть, юнитов к программам из состава проекта
systemd.
Под каждой цитатой из лога пересборки указан acl на пакет.
bozohttpd-20220517-alt1
044-verify-unit.brp: bad permissions on "/lib/systemd/system/bozohttpd@.service":
-rwxr-xr-x
044-verify-unit.brp: ERROR: "/lib/systemd/system/bozohttpd@.service" assumes overflowugid
credentials
bozohttpd george @everybody
gnunet-0.11.5-alt2
Verifying systemd units in /usr/src/tmp/gnunet-buildroot
044-verify-unit.brp: ERROR: "/lib/systemd/system/gnunetd.service" assumes overflowugid
credentials
gnunet lav viy @everybody
lizardfs-3.13.0-alt0.rc4.1
Verifying systemd units in /usr/src/tmp/lizardfs-buildroot
044-verify-unit.brp: ERROR: "/lib/systemd/system/lizardfs-cgiserv.service" assumes
overflowugid credentials
lizardfs andy @everybody
mariadb-10.11.6-alt1
Verifying systemd units in /usr/src/tmp/mariadb-buildroot
044-verify-unit.brp: ERROR: "/lib/systemd/system/mariadbcheck@.service" assumes
overflowugid credentials
mariadb shaba @everybody
xfsprogs-6.3.0-alt1
Verifying systemd units in /usr/src/tmp/xfsprogs-buildroot
044-verify-unit.brp: ERROR: "/lib/systemd/system/xfs_scrub@.service" assumes overflowugid
credentials
xfsprogs rider mike @qa
См. также: https://altlinux.org/NobodySubjectPolicy
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-10 11:37 [devel] I: brp-verify-unit: "... assumes overflowugid credentials" Arseny Maslennikov
@ 2024-02-10 14:06 ` Anton Farygin
2024-02-10 15:23 ` Arseny Maslennikov
2024-02-18 13:35 ` Vitaly Lipatov
1 sibling, 1 reply; 16+ messages in thread
From: Anton Farygin @ 2024-02-10 14:06 UTC (permalink / raw)
To: devel
On 10.02.2024 14:37, Arseny Maslennikov wrote:
> xfsprogs-6.3.0-alt1
> Verifying systemd units in /usr/src/tmp/xfsprogs-buildroot
> 044-verify-unit.brp: ERROR:"/lib/systemd/system/xfs_scrub@.service" assumes overflowugid
> credentials
> xfsprogs rider mike @qa
Что-то я не пойму, какое решение предлагается в данном случае и чем так
плох nobody для той операции, которую выполняет данный unit ?
nobody выбран апстримом.
Запуск данного юнита под nobody - общепринятая практика во всех
дистрибутивах Linux, исключения мне не известны.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-10 14:06 ` Anton Farygin
@ 2024-02-10 15:23 ` Arseny Maslennikov
2024-02-11 22:12 ` Dmitry V. Levin
2024-02-12 5:44 ` Anton Farygin
0 siblings, 2 replies; 16+ messages in thread
From: Arseny Maslennikov @ 2024-02-10 15:23 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 3082 bytes --]
On Sat, Feb 10, 2024 at 05:06:13PM +0300, Anton Farygin wrote:
> On 10.02.2024 14:37, Arseny Maslennikov wrote:
> > xfsprogs-6.3.0-alt1
> > Verifying systemd units in /usr/src/tmp/xfsprogs-buildroot
> > 044-verify-unit.brp: ERROR:"/lib/systemd/system/xfs_scrub@.service" assumes overflowugid
> > credentials
> > xfsprogs rider mike @qa
>
> чем так плох nobody для той операции, которую выполняет данный unit ?
nobody у нас скоро превратится в overflowuid, под которым ничего не
должно работать.
Более того, никто не будет гарантировать на каждой инсталляции, что под
этим nobody или _nobody99 работает только xfs_scrub.
> nobody выбран апстримом.
Это тот ныне нечастый случай, где тем хуже для апстрима.
Более того, судя по коммиту 824b5807fb1e1a0e156b183a591f23b096c8868f, в
котором юнит появился и после которого фундаментально менялся только
один раз (PrivateTmp= выключили), апстрим об этом особо не думал, ибо
никто ему об этом соображении не рассказал.
> Запуск данного юнита под nobody - общепринятая практика во всех
> дистрибутивах Linux, исключения мне не известны.
Как я понимаю, Альт его сообщество любит в первую очередь за
непопулярные технические решения. А здесь как раз повод принять такое
решение, в котором есть смысл! :D
> Что-то я не пойму, какое решение предлагается в данном случае
Лучше всего завести для него отдельного пользователя (или, может, для
всех xfsprogs).
Если это по какой-то причине невозможно, есть другие варианты:
* использовать _nobody99, которого мы добавим в задании 330460;
(systemd позволяет даже число в качестве User= указать :))
* если учесть, что много что в юните закрыли, какого-нибудь daemon из
головы /etc/passwd;
* повторюсь: лучше всего для таких случаев (программа без хранилища)
подходит DynamicUser=yes, но на практике я его не видел, и в этом
случае автоматически зафиксируется PrivateTmp=yes, т. е. поскрабать
таким юнитом ФС, примонтированную под /tmp, не получится.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-10 15:23 ` Arseny Maslennikov
@ 2024-02-11 22:12 ` Dmitry V. Levin
2024-02-12 5:58 ` Anton Farygin
2024-02-12 5:44 ` Anton Farygin
1 sibling, 1 reply; 16+ messages in thread
From: Dmitry V. Levin @ 2024-02-11 22:12 UTC (permalink / raw)
To: devel
On Sat, Feb 10, 2024 at 06:23:02PM +0300, Arseny Maslennikov wrote:
> On Sat, Feb 10, 2024 at 05:06:13PM +0300, Anton Farygin wrote:
> > On 10.02.2024 14:37, Arseny Maslennikov wrote:
> > > xfsprogs-6.3.0-alt1
> > > Verifying systemd units in /usr/src/tmp/xfsprogs-buildroot
> > > 044-verify-unit.brp: ERROR:"/lib/systemd/system/xfs_scrub@.service" assumes overflowugid
> > > credentials
> > > xfsprogs rider mike @qa
> >
> > чем так плох nobody для той операции, которую выполняет данный unit ?
>
> nobody у нас скоро превратится в overflowuid, под которым ничего не
> должно работать.
[...]
> > Запуск данного юнита под nobody - общепринятая практика во всех
> > дистрибутивах Linux, исключения мне не известны.
>
> Как я понимаю, Альт его сообщество любит в первую очередь за
> непопулярные технические решения. А здесь как раз повод принять такое
> решение, в котором есть смысл! :D
Кто-нибудь может мне рассказать, почему ядро до сих пор ещё разрешает
setuid(overflowuid)? Это же по сути отменяет саму идею, заложенную
в overflowuid.
--
ldv
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-10 15:23 ` Arseny Maslennikov
2024-02-11 22:12 ` Dmitry V. Levin
@ 2024-02-12 5:44 ` Anton Farygin
2024-02-12 7:45 ` [devel] I: brp-verify-unit: "... assumes overflowugid Alexey V. Vissarionov
2024-02-12 14:23 ` [devel] I: brp-verify-unit: "... assumes overflowugid credentials" Arseny Maslennikov
1 sibling, 2 replies; 16+ messages in thread
From: Anton Farygin @ 2024-02-12 5:44 UTC (permalink / raw)
To: devel
On 10.02.2024 18:23, Arseny Maslennikov wrote:
> On Sat, Feb 10, 2024 at 05:06:13PM +0300, Anton Farygin wrote:
>> On 10.02.2024 14:37, Arseny Maslennikov wrote:
>>> xfsprogs-6.3.0-alt1
>>> Verifying systemd units in /usr/src/tmp/xfsprogs-buildroot
>>> 044-verify-unit.brp: ERROR:"/lib/systemd/system/xfs_scrub@.service" assumes overflowugid
>>> credentials
>>> xfsprogs rider mike @qa
>> чем так плох nobody для той операции, которую выполняет данный unit ?
> nobody у нас скоро превратится в overflowuid, под которым ничего не
> должно работать.
Почему-то при этом в других дистрибутивах работает. Или overflow uid
сделаем только мы ?
>
> Более того, никто не будет гарантировать на каждой инсталляции, что под
> этим nobody или _nobody99 работает только xfs_scrub.
>
>> nobody выбран апстримом.
> Это тот ныне нечастый случай, где тем хуже для апстрима.
>
> Более того, судя по коммиту 824b5807fb1e1a0e156b183a591f23b096c8868f, в
> котором юнит появился и после которого фундаментально менялся только
> один раз (PrivateTmp= выключили), апстрим об этом особо не думал, ибо
> никто ему об этом соображении не рассказал.
А можете донести эту мысль до апстрима ?
>
>> Запуск данного юнита под nobody - общепринятая практика во всех
>> дистрибутивах Linux, исключения мне не известны.
> Как я понимаю, Альт его сообщество любит в первую очередь за
> непопулярные технические решения. А здесь как раз повод принять такое
> решение, в котором есть смысл! :D
Мне непонятно какое именно техническое решение повод принять.
>
>> Что-то я не пойму, какое решение предлагается в данном случае
> Лучше всего завести для него отдельного пользователя (или, может, для
> всех xfsprogs).
Возможно, но мне хотелось бы что бы заведение системного пользователя
было осмысленно.
Возможно нам нужен пользователь не для xfs_scrub, а в целом для операций
над FS ?
>
> Если это по какой-то причине невозможно, есть другие варианты:
> * использовать _nobody99, которого мы добавим в задании 330460;
> (systemd позволяет даже число в качестве User= указать :))
Это же костыль. Зачем он нужен ?
> * если учесть, что много что в юните закрыли, какого-нибудь daemon из
> головы /etc/passwd;
Неизвестно, кто захочет и как использовать данный UID. Да и демон - это
не то, чем можно назвать xfs_scrub
> * повторюсь: лучше всего для таких случаев (программа без хранилища)
> подходит DynamicUser=yes, но на практике я его не видел, и в этом
> случае автоматически зафиксируется PrivateTmp=yes, т. е. поскрабать
> таким юнитом ФС, примонтированную под /tmp, не получится.
Верно, тоже не решение.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-11 22:12 ` Dmitry V. Levin
@ 2024-02-12 5:58 ` Anton Farygin
2024-02-12 10:34 ` Dmitry V. Levin
0 siblings, 1 reply; 16+ messages in thread
From: Anton Farygin @ 2024-02-12 5:58 UTC (permalink / raw)
To: devel
On 12.02.2024 01:12, Dmitry V. Levin wrote:
> Кто-нибудь может мне рассказать, почему ядро до сих пор ещё разрешает
> setuid(overflowuid)? Это же по сути отменяет саму идею, заложенную
> в overflowuid.
>
>
Сейчас при входе в систему доменным пользователем UID получается 32-х
битный.
overflow оно только на старых системах, где UID/GID 16-бит.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid
2024-02-12 5:44 ` Anton Farygin
@ 2024-02-12 7:45 ` Alexey V. Vissarionov
2024-02-12 7:52 ` Anton Farygin
2024-02-12 14:23 ` [devel] I: brp-verify-unit: "... assumes overflowugid credentials" Arseny Maslennikov
1 sibling, 1 reply; 16+ messages in thread
From: Alexey V. Vissarionov @ 2024-02-12 7:45 UTC (permalink / raw)
To: ALT Linux Team development discussions
Good ${greeting_time}!
On 2024-02-12 08:44:19 +0300, Anton Farygin wrote:
>>> Что-то я не пойму, какое решение предлагается в данном случае
>> Лучше всего завести для него отдельного пользователя (или,
>> может, для всех xfsprogs).
> Возможно, но мне хотелось бы что бы заведение системного
> пользователя было осмысленно.
> Возможно нам нужен пользователь не для xfs_scrub, а в целом
> для операций над FS ?
Да. Вот такой:
disk:5:5:Block device manager:/var/empty:/bin/false
--
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid
2024-02-12 7:45 ` [devel] I: brp-verify-unit: "... assumes overflowugid Alexey V. Vissarionov
@ 2024-02-12 7:52 ` Anton Farygin
2024-02-12 8:04 ` Alexey V. Vissarionov
0 siblings, 1 reply; 16+ messages in thread
From: Anton Farygin @ 2024-02-12 7:52 UTC (permalink / raw)
To: devel
On 12.02.2024 10:45, Alexey V. Vissarionov wrote:
> Good ${greeting_time}!
>
> On 2024-02-12 08:44:19 +0300, Anton Farygin wrote:
>
> >>> Что-то я не пойму, какое решение предлагается в данном случае
> >> Лучше всего завести для него отдельного пользователя (или,
> >> может, для всех xfsprogs).
> > Возможно, но мне хотелось бы что бы заведение системного
> > пользователя было осмысленно.
> > Возможно нам нужен пользователь не для xfs_scrub, а в целом
> > для операций над FS ?
>
> Да. Вот такой:
>
> disk:5:5:Block device manager:/var/empty:/bin/false
>
>
disk имеет rw привелегии на устройства, это перебор.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid
2024-02-12 7:52 ` Anton Farygin
@ 2024-02-12 8:04 ` Alexey V. Vissarionov
0 siblings, 0 replies; 16+ messages in thread
From: Alexey V. Vissarionov @ 2024-02-12 8:04 UTC (permalink / raw)
To: ALT Linux Team development discussions
Good ${greeting_time}!
On 2024-02-12 10:52:36 +0300, Anton Farygin wrote:
>>>> Лучше всего завести для него отдельного пользователя (или,
>>>> может, для всех xfsprogs).
>>> Возможно, но мне хотелось бы что бы заведение системного
>>> пользователя было осмысленно.
>>> Возможно нам нужен пользователь не для xfs_scrub, а в целом
>>> для операций над FS ?
>> Да. Вот такой:
>> disk:5:5:Block device manager:/var/empty:/bin/false
> disk имеет rw привелегии
Все же "привИлегии". Или, еще лучше, по-русски: "права".
> на устройства, это перебор.
Эт хде? В системах с udev? Значит, там и надо исправлять.
В системах без этого руткита ядро с CONFIG_DEVTMPFS_MOUNT создает
блочные устройства 0600:
% ll /dev/sd*
brw------- 1 root root 8, 0 сен 6 08:33 /dev/sda
brw------- 1 root root 8, 1 сен 6 08:33 /dev/sda1
brw------- 1 root root 8, 2 сен 6 08:33 /dev/sda2
brw------- 1 root root 8, 16 сен 6 08:33 /dev/sdb
brw------- 1 root root 8, 17 сен 6 08:33 /dev/sdb1
brw------- 1 root root 8, 18 сен 6 08:33 /dev/sdb2
brw------- 1 root root 8, 32 сен 6 08:33 /dev/sdc
brw------- 1 root root 8, 33 сен 6 08:33 /dev/sdc1
brw------- 1 root root 8, 34 сен 6 08:33 /dev/sdc2
brw------- 1 root root 8, 48 сен 6 08:33 /dev/sdd
brw------- 1 root root 8, 49 сен 6 08:33 /dev/sdd1
brw------- 1 root root 8, 50 сен 6 08:33 /dev/sdd2
brw------- 1 root root 8, 64 сен 6 08:33 /dev/sde
brw------- 1 root root 8, 65 сен 6 08:33 /dev/sde1
brw------- 1 root root 8, 66 сен 6 08:33 /dev/sde2
brw------- 1 root root 8, 80 сен 6 08:33 /dev/sdf
brw------- 1 root root 8, 81 сен 6 08:33 /dev/sdf1
brw------- 1 root root 8, 82 сен 6 08:33 /dev/sdf2
brw------- 1 root root 8, 96 сен 6 08:33 /dev/sdg
brw------- 1 root root 8, 97 сен 6 08:33 /dev/sdg1
brw------- 1 root root 8, 98 сен 6 08:33 /dev/sdg2
Как всегда, разработчики ядра оказались умнее разработчиков
усерспейсных костылей.
--
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-12 5:58 ` Anton Farygin
@ 2024-02-12 10:34 ` Dmitry V. Levin
2024-02-12 10:50 ` Anton Farygin
0 siblings, 1 reply; 16+ messages in thread
From: Dmitry V. Levin @ 2024-02-12 10:34 UTC (permalink / raw)
To: devel
On Mon, Feb 12, 2024 at 08:58:30AM +0300, Anton Farygin wrote:
> On 12.02.2024 01:12, Dmitry V. Levin wrote:
> > Кто-нибудь может мне рассказать, почему ядро до сих пор ещё разрешает
> > setuid(overflowuid)? Это же по сути отменяет саму идею, заложенную
> > в overflowuid.
> >
> Сейчас при входе в систему доменным пользователем UID получается 32-х
> битный.
>
> overflow оно только на старых системах, где UID/GID 16-бит.
Всё обстоит несколько иначе. Не готов читать лекцию, желающие могут
обратиться к первоисточнику самостоятельно:
linux$ git grep overflowuid
Documentation/admin-guide/sysctl/fs.rst:overflowgid & overflowuid
Documentation/admin-guide/sysctl/kernel.rst:overflowgid & overflowuid
Documentation/filesystems/idmappings.rst:third idmapping. The kernel will report unmapped ids as the overflowuid
drivers/gpu/drm/drm_ioctl.c: client->uid = overflowuid;
fs/sysctls.c: .procname = "overflowuid",
fs/sysctls.c: .data = &fs_overflowuid,
fs/udf/super.c: uopt.uid = make_kuid(current_user_ns(), overflowuid);
include/linux/highuid.h:extern int overflowuid;
include/linux/highuid.h:#define high2lowuid(uid) ((uid) & ~0xFFFF ? (old_uid_t)overflowuid : (old_uid_t)(uid))
include/linux/highuid.h:extern int fs_overflowuid;
include/linux/highuid.h:#define fs_high2lowuid(uid) ((uid) & ~0xFFFF ? (uid16_t)fs_overflowuid : (uid16_t)(uid))
include/linux/uidgid.h: uid = overflowuid;
include/uapi/linux/bpf.h: * time-wait or a request socket instead), **overflowuid** value
include/uapi/linux/bpf.h: * is returned (note that **overflowuid** might also be the actual
kernel/sys.c:int overflowuid = DEFAULT_OVERFLOWUID;
kernel/sys.c:EXPORT_SYMBOL(overflowuid);
kernel/sys.c:int fs_overflowuid = DEFAULT_FS_OVERFLOWUID;
kernel/sys.c:EXPORT_SYMBOL(fs_overflowuid);
kernel/sysctl.c: .procname = "overflowuid",
kernel/sysctl.c: .data = &overflowuid,
kernel/user_namespace.c: * If @kuid has no mapping in @targ overflowuid is returned.
kernel/user_namespace.c: uid = overflowuid;
net/core/filter.c: return overflowuid;
--
ldv
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-12 10:34 ` Dmitry V. Levin
@ 2024-02-12 10:50 ` Anton Farygin
2024-02-12 13:16 ` Arseny Maslennikov
0 siblings, 1 reply; 16+ messages in thread
From: Anton Farygin @ 2024-02-12 10:50 UTC (permalink / raw)
To: devel
On 12.02.2024 13:34, Dmitry V. Levin wrote:
> Всё обстоит несколько иначе.
Ну да, но смысл от этого особо не меняется.
sysctl этот, судя по документации, для каких-то старых файловых систем
нужен:
https://docs.kernel.org/admin-guide/sysctl/fs.html#overflowgid-overflowuid
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-12 10:50 ` Anton Farygin
@ 2024-02-12 13:16 ` Arseny Maslennikov
0 siblings, 0 replies; 16+ messages in thread
From: Arseny Maslennikov @ 2024-02-12 13:16 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 2058 bytes --]
On Mon, Feb 12, 2024 at 01:50:27PM +0300, Anton Farygin wrote:
> On 12.02.2024 13:34, Dmitry V. Levin wrote:
> > Всё обстоит несколько иначе.
>
> Ну да, но смысл от этого особо не меняется.
>
> sysctl этот, судя по документации, для каких-то старых файловых систем
> нужен:
>
> https://docs.kernel.org/admin-guide/sysctl/fs.html#overflowgid-overflowuid
NFS с его логикой ремаппинга рута трудно назвать старой файловой
системой. :)
Более того, письмо Димы с цитатой git grep по ядру меня сподвигло узнать
вот об этом:
user_namespaces(7):
Unmapped user and group IDs
There are various places where an unmapped user ID (group ID) may be exposed to user
space. For example, the first process in a new user namespace may call getuid(2) be‐
fore a user ID mapping has been defined for the namespace. In most such cases, an
unmapped user ID is converted to the overflow user ID (group ID); the default value
for the overflow user ID (group ID) is 65534. See the descriptions of /proc/sys/ker‐
nel/overflowuid and /proc/sys/kernel/overflowgid in proc(5).
The cases where unmapped IDs are mapped in this fashion include system calls that re‐
turn user IDs (getuid(2), getgid(2), and similar), credentials passed over a UNIX do‐
main socket, credentials returned by stat(2), waitid(2), and the System V IPC "ctl"
IPC_STAT operations, credentials exposed by /proc/pid/status and the files in
/proc/sysvipc/*, credentials returned via the si_uid field in the siginfo_t received
with a signal (see sigaction(2)), credentials written to the process accounting file
(see acct(5)), and credentials returned with POSIX message queue notifications (see
mq_notify(3)).
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-12 5:44 ` Anton Farygin
2024-02-12 7:45 ` [devel] I: brp-verify-unit: "... assumes overflowugid Alexey V. Vissarionov
@ 2024-02-12 14:23 ` Arseny Maslennikov
2024-02-12 14:33 ` Arseny Maslennikov
1 sibling, 1 reply; 16+ messages in thread
From: Arseny Maslennikov @ 2024-02-12 14:23 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 4356 bytes --]
On Mon, Feb 12, 2024 at 08:44:19AM +0300, Anton Farygin wrote:
> On 10.02.2024 18:23, Arseny Maslennikov wrote:
> > On Sat, Feb 10, 2024 at 05:06:13PM +0300, Anton Farygin wrote:
> > > On 10.02.2024 14:37, Arseny Maslennikov wrote:
> > > > xfsprogs-6.3.0-alt1
> > > > Verifying systemd units in /usr/src/tmp/xfsprogs-buildroot
> > > > 044-verify-unit.brp: ERROR:"/lib/systemd/system/xfs_scrub@.service" assumes overflowugid
> > > > credentials
> > > > xfsprogs rider mike @qa
> > > чем так плох nobody для той операции, которую выполняет данный unit ?
> > nobody у нас скоро превратится в overflowuid, под которым ничего не
> > должно работать.
> Почему-то при этом в других дистрибутивах работает.
Это либо от халатности, либо по инициативе начинающих, наивных или
по-доброму ленивых админов "сам-себе-мейнтейнеров". Так-то и файл, на
который сказали chmod 777, точно так же доступен на чтение, как и файл с
режимом 644 или 600. "Ведь и так работает!"
> Или overflow uid сделаем
> только мы ?
Дебиан уже сделал:
# grep D /etc/os-release
PRETTY_NAME="Debian GNU/Linux trixie/sid"
NAME="Debian GNU/Linux"
VERSION_CODENAME=trixie
ID=debian
# getent passwd nobody
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
# echo $(</proc/sys/fs/overflowuid):$(</proc/sys/fs/overflowgid)
65534:65534
Кто пользуется другими, может глянуть на других.
> > > Что-то я не пойму, какое решение предлагается в данном случае
> > Лучше всего завести для него отдельного пользователя (или, может, для
> > всех xfsprogs).
>
> Возможно, но мне хотелось бы что бы заведение системного пользователя было
> осмысленно.
Смысл — в проведении границы между привилегиями этого сервиса и других,
а также границы с overflowuid.
> Возможно нам нужен пользователь не для xfs_scrub, а в целом для операций над
> FS ?
Это уж точно гораздо лучше nobody. Но по-прежнему непонятно, чем этот
случай заслуживает исключения.
А точно ли таких скрабберов, нынче сбрасывающих uid до чего попало, но
сохраняющих за собой обширный набор капов (AmbientCapabilities=), больше
одного?
> > Если это по какой-то причине невозможно, есть другие варианты:
> > * если учесть, что много что в юните закрыли, какого-нибудь daemon из
> > головы /etc/passwd;
> Неизвестно, кто захочет и как использовать данный UID.
Мне тоже, но я подозреваю, что вообще никто, кроме, вероятно, дебиановского
варианта at(1), за которым помню такой артефакт. Я и пишу: "если завести
отдельного по какой-то причине невозможно". Предложения взять daemon,
disk, или резервировать новый uid для ухода за ФС — это всё уже попытки
изобрести компромисс.
> Да и демон - это не то, чем можно назвать xfs_scrub
Верно, но запускают эту программу именно в такой роли. Системдоиды
говорят "oneshot-сервис"; он безголовый, т. е. без {WAYLAND_,}DISPLAY= и
без контрольного терминала, и запускается сам по событию.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-12 14:23 ` [devel] I: brp-verify-unit: "... assumes overflowugid credentials" Arseny Maslennikov
@ 2024-02-12 14:33 ` Arseny Maslennikov
2024-02-12 14:48 ` Anton Farygin
0 siblings, 1 reply; 16+ messages in thread
From: Arseny Maslennikov @ 2024-02-12 14:33 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 3444 bytes --]
On Mon, Feb 12, 2024 at 05:23:53PM +0300, Arseny Maslennikov wrote:
> On Mon, Feb 12, 2024 at 08:44:19AM +0300, Anton Farygin wrote:
> > Возможно, но мне хотелось бы что бы заведение системного пользователя было
> > осмысленно.
(в сторону) Чувствую, что надо это куда-то записать.
Замечаю, к сожалению, что в некоторых умах сложился нездоровый взгляд
на т. н. заведение системных пользователей:
* кажется, будто это сложное, мучительное дело (руками — да);
* кажется, будто ему нужно выделить и сопровождать какие-то ресурсы,
вроде домашнего каталога, шелла, квот, gecos; будто от него будут
порождаться какие-то сеансы с участием pam и logind; будто всё это —
хрупкий стейт, захламляющий не только систему, но и голову
администратора;
* этот стейт потом сложно удалить — а вдруг в ФС остались данные с этими
uid и gid?
А на самом деле вопрос сводится к тому, чтобы называть вещи подходящими
именами. Здесь речи о _заведении пользователей_ нет, потому что нету
никаких пользователей и большинство соотв. типов ресурсов им не
требуется. Если эту процедуру назвать "резервирование UID и GID", сразу
весь ментальный морок спадает. "...С целью разделения привилегий". Этим
системным "пользователям" и имя-то не нужно, их имя выступает лишь
симлинком на выделенный по месту на машине численный ID, вносит
дополнительный удобный уровень косвенности. Понятия "сеанс",
"пароль/токен аутентификации", "домашний каталог", "начальный шелл" для
них, понятное дело, тем более не имеют смысла.
Институт sysusers вообще упрощает это дело чуть ли не до максимума: в
пакет со службой достаточно упаковать файл-конфиг. Но пока что нам не
судьба.
Останется лишь соображение о возможности потери стейта от удаления
записей о резервировании, но и эту проблему можно побороть, исключив
доступ сервису на запись во все места, кроме белого списка, и сделать
это решение общедистрибутивным. (Если бы в /etc/passwd можно было
записать строчку навроде "deleted uid N", это была бы половина решения)
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-12 14:33 ` Arseny Maslennikov
@ 2024-02-12 14:48 ` Anton Farygin
0 siblings, 0 replies; 16+ messages in thread
From: Anton Farygin @ 2024-02-12 14:48 UTC (permalink / raw)
To: devel
On 12.02.2024 17:33, Arseny Maslennikov wrote:
> Институт sysusers вообще упрощает это дело чуть ли не до максимума: в
> пакет со службой достаточно упаковать файл-конфиг. Но пока что нам не
> судьба.
Вы просто не так часто переносите файлы, принадлежащие вот таким образом
заведённому системному пользователю с одной машины на другую.
Нужно резервирование UID, а не заведение системного пользователя. Это
немного больше и важнее.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [devel] I: brp-verify-unit: "... assumes overflowugid credentials"
2024-02-10 11:37 [devel] I: brp-verify-unit: "... assumes overflowugid credentials" Arseny Maslennikov
2024-02-10 14:06 ` Anton Farygin
@ 2024-02-18 13:35 ` Vitaly Lipatov
1 sibling, 0 replies; 16+ messages in thread
From: Vitaly Lipatov @ 2024-02-18 13:35 UTC (permalink / raw)
To: ALT Linux Team development discussions; +Cc: Arseny Maslennikov
Arseny Maslennikov писал(а) 10.2.24 14:37:
> Hi!
>
> В опубликованный сегодня Sisyphus вошёл новый rpm-build:
>> rpm-build - Scripts and executable programs used to build packages
>> * Thu Jan 11 2024 Arseny Maslennikov <arseny@altlinux> 4.0.4.195-alt1
>> - debuginfo: Changed compression format (--lzma2=dict=2MiB ->
>> --check=crc32 --lzma2=dict=1MiB) of xz-compressed modules for
>> compatibility
>> with kmod >= 31 (thx asheplyakov@).
>> - Introduced brp-verify-unit to check sanity of systemd units included
>> in built packages.
..
На всякий случай, не забыли ли
# grep nobody /lib/sysusers.d/basic.conf
# The nobody user/group for NFS file systems
g nobody 65534 - -
u nobody 65534:65534 "Kernel Overflow User" -
--
С уважением,
Виталий Липатов,
ALT Linux Team
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-02-18 13:35 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-10 11:37 [devel] I: brp-verify-unit: "... assumes overflowugid credentials" Arseny Maslennikov
2024-02-10 14:06 ` Anton Farygin
2024-02-10 15:23 ` Arseny Maslennikov
2024-02-11 22:12 ` Dmitry V. Levin
2024-02-12 5:58 ` Anton Farygin
2024-02-12 10:34 ` Dmitry V. Levin
2024-02-12 10:50 ` Anton Farygin
2024-02-12 13:16 ` Arseny Maslennikov
2024-02-12 5:44 ` Anton Farygin
2024-02-12 7:45 ` [devel] I: brp-verify-unit: "... assumes overflowugid Alexey V. Vissarionov
2024-02-12 7:52 ` Anton Farygin
2024-02-12 8:04 ` Alexey V. Vissarionov
2024-02-12 14:23 ` [devel] I: brp-verify-unit: "... assumes overflowugid credentials" Arseny Maslennikov
2024-02-12 14:33 ` Arseny Maslennikov
2024-02-12 14:48 ` Anton Farygin
2024-02-18 13:35 ` Vitaly Lipatov
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