public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
* [PATCH v1 00/16] add support to build isar unprivileged
@ 2026-02-26 16:28 'Felix Moessbauer' via isar-users
  2026-02-26 16:28 ` [PATCH v1 01/15] refactor bootstrap: store rootfs tar with user permissions 'Felix Moessbauer' via isar-users
                   ` (17 more replies)
  0 siblings, 18 replies; 19+ messages in thread
From: 'Felix Moessbauer' via isar-users @ 2026-02-26 16:28 UTC (permalink / raw)
  To: isar-users; +Cc: jan.kiszka, quirin.gylstorff, Felix Moessbauer

[ follow up of RFC v2 "add support to build isar unprivileged" ]

Dear isar-users,

currently isar requires password-less sudo and an environment
where mounting file systems is possible. This has proven problematic
for security reasons, both when running in a privileged container or
locally.

To solve this, we implement fully rootless builds that rely on the
unshare syscall which allows us to avoid sudo and instead operate in
temporary kernel namespaces as a user that is just privileged within
that namespace. This comes with some challenges regarding the handling
of mounts (they are cleared when leaving the namespace), as well as
cross namespace deployments (the outer user might not be able to access
the inner data). For that, we rework the handling of mounts and artifact
passing to make it compatible with both chroot modes (schroot and
unshare).

Note, that this series can be tested on a custom kas-container build
provided in [1]. Hints how to migrate downstream layers are provided
in the API changelog.

Changes since RFC 2:

- rebased onto next
- fix usage of root_cleandirs
- simplify file permission handling by mapping caller user to
  root inside the namespace. By that, in most cases no changes
  to the imager are needed anymore.
- implement support for devshell under rootless
- switch to getpass.getuser() to query user (needed for dynamically
  created / remapped kas builder user)
- rework mapping to be more similar to mapping used by mmdebstrap
- sbuild: only copy-out of dpkg.log on schroot (unclear if needed
  on unshare. To be clarified)
- imager-sbom: ensure sbom is extracted before entering the chroot

Changes since RFC 1:

- switch build_type to isar-rootless in isar.yaml (Note: switch back
  if testing locally in a unprepared kas container)
- complete overhaul of the mounting in unshared namespaces
  - fixes the systemd presetting
  - fixes hangs when pulling from snapshot mirrors
- rename the run_privileged_here to run_privileged_heredoc to clarify its intention
- add support for
  - dpkg-source with do_fetch_common_source
  - vm images
  - container images
  - discoverable disk images
- add helper script to clean build dir in unprivileged mode
- reduce clutter we leave after finishing a build
- fix issues when running in a privileged environment without sub user ids
- bugfixes

Still missing is the support for the devshell. Further, the rootless build dir
must not reside in a git worktree (a normal git dir is fine). This is probably a
bug in combination with kas-container.

[1] https://groups.google.com/g/kas-devel/c/NWQFCU2aUHg

Best regards,
Felix Moessbauer
Siemens AG

Felix Moessbauer (15):
  refactor bootstrap: store rootfs tar with user permissions
  deb-dl-dir: export without root privileges
  download debs without locking
  introduce wrappers for privileged execution
  bootstrap: move cleanup trap to function
  rootfs: rework sstate caching of rootfs artifact
  rootfs_generate_initramfs: rework deployment to avoid chowning
  use bitbake function to generate mounting scripts
  apt-fetcher: prepare for chroot specific fetching
  add support for fully rootless builds
  add helper script to clean artifacts in build dir
  apt-fetcher: implement support for unshare backend
  dpkg-source: implement multiarch support for unshare backend
  use copy of sbom-chroot for sbom creation
  add support for devshell on unshare backend

 Kconfig                                       |   2 +-
 RECIPE-API-CHANGELOG.md                       |  42 ++++
 doc/user_manual.md                            |   2 +
 kas/isar.yaml                                 |   2 +-
 meta/classes-global/base.bbclass              | 122 ++++++++++-
 meta/classes-recipe/deb-dl-dir.bbclass        |  20 +-
 meta/classes-recipe/dpkg-base.bbclass         |  94 ++++++--
 meta/classes-recipe/dpkg-source.bbclass       |  40 +++-
 meta/classes-recipe/dpkg.bbclass              |  17 +-
 .../image-account-extension.bbclass           |   4 +-
 .../image-locales-extension.bbclass           |  13 +-
 .../image-postproc-extension.bbclass          |  30 +--
 .../image-tools-extension.bbclass             |  87 +++++++-
 meta/classes-recipe/image.bbclass             |  21 +-
 .../imagetypes_container.bbclass              |  28 +--
 meta/classes-recipe/imagetypes_wic.bbclass    |  10 +-
 meta/classes-recipe/rootfs.bbclass            | 202 +++++++++---------
 meta/classes-recipe/sbuild.bbclass            |  34 ++-
 meta/classes-recipe/sdk.bbclass               |  22 +-
 meta/classes/sbom.bbclass                     |  28 ++-
 meta/conf/bitbake.conf                        |   7 +-
 meta/lib/aptsrc_fetcher.py                    |  87 +++++++-
 .../isar-mmdebstrap/isar-mmdebstrap.inc       |  46 ++--
 .../sbom-chroot/sbom-chroot.bb                |  11 +-
 .../sbuild-chroot/sbuild-chroot.inc           |  24 ++-
 scripts/isar-clean-builddir                   |  73 +++++++
 .../unittests/test_image_account_extension.py |   9 +-
 27 files changed, 840 insertions(+), 237 deletions(-)
 create mode 100755 scripts/isar-clean-builddir

-- 
2.51.0

-- 
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260226162843.1642329-1-felix.moessbauer%40siemens.com.

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

end of thread, other threads:[~2026-02-26 16:30 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-26 16:28 [PATCH v1 00/16] add support to build isar unprivileged 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 01/15] refactor bootstrap: store rootfs tar with user permissions 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 02/15] deb-dl-dir: export without root privileges 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 03/15] download debs without locking 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 04/15] introduce wrappers for privileged execution 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 05/15] bootstrap: move cleanup trap to function 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 06/15] rootfs: rework sstate caching of rootfs artifact 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 07/15] rootfs_generate_initramfs: rework deployment to avoid chowning 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 08/15] use bitbake function to generate mounting scripts 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 09/15] apt-fetcher: prepare for chroot specific fetching 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 10/15] add support for fully rootless builds 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 11/15] add helper script to clean artifacts in build dir 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 12/15] apt-fetcher: implement support for unshare backend 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 13/15] dpkg-source: implement multiarch " 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 14/16] rootfs: remove temporary sstate deploy directory after task execution 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 14/15] use copy of sbom-chroot for sbom creation 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 15/15] add support for devshell on unshare backend 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 15/16] use copy of sbom-chroot for sbom creation 'Felix Moessbauer' via isar-users
2026-02-26 16:28 ` [PATCH v1 16/16] add support for devshell on unshare backend 'Felix Moessbauer' via isar-users

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox