Skip to content

unshare --map-auto --map-current-user --setuid 0 --setgid 0 fails #4249

@akihikodaki

Description

@akihikodaki

mkosi commit the issue has been seen with

main

Used host distribution

Fedora 43

Used target distribution

Fedora Rawhide

Linux kernel version used

6.18.10+

CPU architectures issue was seen on

aarch64

Unexpected behaviour you saw

The man page says:

If this behavior causes applications running in your image to misbehave, you
can consider running **mkosi** as root which avoids this problem. Alternatively,
if running **mkosi** as root is not desired, you can use
`unshare --map-auto --map-current-user --setuid 0 --setgid 0` to become root in
a user namespace with more than one user assuming the UID/GID mappings in
`/etc/subuid` and `/etc/subgid` are configured correctly. Note that running mkosi
as root or with `unshare` means that all output files produced by **mkosi** will not
be owned by your current user anymore.

However, the following command fails:

unshare --map-auto --map-current-user --setuid 0 --setgid 0 pipx run --spec git+https://github.com/systemd/mkosi.git mkosi --debug

Used mkosi config

# SPDX-License-Identifier: LGPL-2.1-or-later
[Include]
Include=mkosi-vm

[Build]
CacheDirectory=mkosi.cache
History=yes

[Output]
# These images are (among other things) used for running mkosi which means we need some disk space available so
# default to directory output where disk space isn't a problem.
Format=directory
OutputDirectory=mkosi.output

[Build]
ToolsTree=yes
Incremental=yes
BuildSources=.

[Content]
Autologin=yes
SELinuxRelabel=no
ShimBootloader=unsigned

Packages=
        binutils
        gdb
        wireless-regdb

InitrdProfiles=lvm

RemoveFiles=
        # The grub install plugin doesn't play nice with booting from virtiofs.
        /usr/lib/kernel/install.d/20-grub.install
        # The dracut install plugin doesn't honor KERNEL_INSTALL_INITRD_GENERATOR.
        /usr/lib/kernel/install.d/50-dracut.install

# Make sure that SELinux doesn't run in enforcing mode even if it's pulled in as a dependency.
KernelCommandLine=
        enforcing=0
        systemd.log_ratelimit_kmsg=0
        systemd.crash_shell
        printk.devkmsg=on
        systemd.early_core_pattern=/core

KernelInitrdModules=default

[Runtime]
RAM=4G

mkosi output

mkosi is already on your PATH and installed at /usr/bin/mkosi. Downloading and running anyway.
‣ Loading configuration file /home/me/mkosi/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-vm/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/networkd.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/uefi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-vm/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/networkd.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-vm/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/uefi.conf
‣ Loading configuration file /home/me/mkosi/mkosi.conf.d/azure-centos-fedora/mkosi.conf
‣ Loading configuration file /home/me/mkosi/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/arm64.conf
‣ Loading configuration file /home/me/mkosi/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/uefi.conf
‣ Loading configuration file /home/me/mkosi/mkosi.conf.d/bootable.conf
‣ Loading configuration file /home/me/mkosi/mkosi.conf.d/fedora/mkosi.conf
‣ Loading configuration file /home/me/mkosi/mkosi.conf.d/fedora/mkosi.conf.d/arm64.conf
‣ Loading configuration file /home/me/mkosi/mkosi.tools.conf/mkosi.conf
‣ Loading configuration file /home/me/mkosi/mkosi.tools.conf/mkosi.conf.d/azure-centos-fedora.conf
‣ Loading configuration file /home/me/mkosi/mkosi.tools.conf/mkosi.conf.d/fedora.conf
‣ Loading configuration file /home/me/mkosi/mkosi.tools.conf/mkosi.conf.d/ncdu.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.conf.d/azure-centos-fedora/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/efi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.conf.d/azure-fedora/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.conf.d/fedora/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.profiles/misc/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.profiles/misc/mkosi.conf.d/azure-centos-fedora.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.profiles/package-manager/mkosi.conf.d/fedora.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.profiles/runtime/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.profiles/runtime/mkosi.conf.d/azure-centos-fedora/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.profiles/runtime/mkosi.conf.d/azure-centos-fedora/mkosi.conf.d/edk2-ovmf.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-tools/mkosi.profiles/runtime/mkosi.conf.d/fedora.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-initrd/mkosi.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-initrd/mkosi.conf.d/arm.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-initrd/mkosi.conf.d/azure-centos-fedora.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-initrd/mkosi.conf.d/fedora.conf
‣ Loading configuration file /tmp/tmpbirwo7nk/resources/mkosi-initrd/mkosi.profiles/lvm/mkosi.conf
‣ Could not provision user namespace via systemd-nsresourced ([Errno 2] No such file or directory), falling back to unprivileged user namespace via unshare(CLONE_NEWUSER) and writing /proc/self/uid_map directly
‣ /home/me/mkosi/mkosi.tools does not exist, not reusing cached images
‣ /home/me/mkosi/mkosi.tools does not exist, not reusing cached images
‣ + tput cnorm
‣ + tput smam
Traceback (most recent call last):
  File "/usr/lib64/python3.14/pathlib/__init__.py", line 1011, in mkdir
    os.mkdir(self, mode)
    ~~~~~~~~^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/var/cache/mkosi/fedora~rawhide~arm64'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/me/.cache/pipx/ec9e71cbb07084a/lib64/python3.14/site-packages/mkosi/run.py", line 104, in uncaught_exception_handler
    yield
  File "/usr/lib64/python3.14/contextlib.py", line 85, in inner
    return func(*args, **kwds)
  File "/home/me/.cache/pipx/ec9e71cbb07084a/lib64/python3.14/site-packages/mkosi/__main__.py", line 44, in main
    run_verb(args, tools, images, resources=resources)
    ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/me/.cache/pipx/ec9e71cbb07084a/lib64/python3.14/site-packages/mkosi/__init__.py", line 5038, in run_verb
    ensure_directories_exist(tools)
    ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
  File "/home/me/.cache/pipx/ec9e71cbb07084a/lib64/python3.14/site-packages/mkosi/__init__.py", line 4787, in ensure_directories_exist
    p.mkdir(parents=True, exist_ok=True)
    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/pathlib/__init__.py", line 1015, in mkdir
    self.parent.mkdir(parents=True, exist_ok=True)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/pathlib/__init__.py", line 1011, in mkdir
    os.mkdir(self, mode)
    ~~~~~~~~^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/var/cache/mkosi'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions