On Wed, Sep 6, 2023 at 7:47 AM jklaiho(a)iki.fi <jklaiho(a)iki.fi> wrote:
Hi,
(Apologies, my last e-mail I think I accidentally sent to Erik, not the
list; missing bits quoted below)
OK, I did not realize that the Remap* commands used --userns behind the
scenes, I thought they used --uidmap and --gidmap.
That brings me back to my original need, which I'll reiterate:
"When using a regular host user to run a rootless container, map the
container user as the host user."
That's really basic, right? Surely works without PodmanArgs already.
That sounds like `UserNS=keep-id`:
~ $ id -u && podman run --rm --userns=keep-id busybox id -u
1000
1000
My only addition to that is: "If the container user is root (or
sudoed to
root), allow it to drop privileges so it can install apt packages."
Still sounds really basic, and where I work, it's really common. If
there's problems, we exec into a deployed container and install some
troubleshooting tools with apt that the minimalistic image doesn't contain
by default. Based on previous discussions, the apt privilege drop needs one
extra subordinate UID/GID to be available.
Yes, you can still do a `podman exec --user=0 $CONTAINER apt-get install
...`.
While I'm currently using the Remap* options to achieve these,
I'm not
married to them – they're just the first thing that I got to work.
I've used PodmanArgs before, but in each case only as a stopgap measure
while waiting for an option to appear in Quadlet.
So, hopefully my final question in this thread: is this "map user and
allow dropping privileges" scenario doable with the Quadlet UserNS option,
or do I need to open an issue?
I think `UserNS=keep-id` is what you are looking for. If something is
missing that forces you to use `PodmanArgs`, feel free to open an issue and
we can add it.
Kind regards,
Valentin
Begin forwarded message:
From: Erik Sjölund <erik.sjolund(a)gmail.com>
Date: Tuesday, Sep 05, 2023 at 10:37 AM
To: Me <jklaiho(a)iki.fi>
Subject: [Podman] Re: What to use instead of RemapUsers/RemapUid/RemapGid
in Quadlet now?
Hi,
Yeah, I'm fairly sure that would work, but am I to understand from your
reply
that it is not possible to achieve with the UserNS quadlet option the
things that the Remap* quadlet options did?
Correct. It's not possible.
If we just look at the use of --uidmap there is an enormous amount of
possibilities of how to map those.
Each container UID can be mapped to an arbitrary "intermediate UID"
but the mappings must be unique. By that I mean that different
container UIDs must not be mapped to the same intermediate UID. Also
different intermediate UIDs must not be mapped to the same container
UID. The number of possible ways of providing --uidmap corresponds to
a factorial in mathematics.
See how n! grows with n:
https://en.wikipedia.org/wiki/Factorial
The argument --userns=keep-id does not carry so much information. For
instance
--userns=keep-id:uid=$uid,gid=$gid
can only be provided one time and has two numbers.
Another option to consider is
--userns=auto
but that option is quite different from --uidmap.
It provides different functionality.
The situation is a bit similar to static IP addresses vs dynamic IP
addresses in DHCP.
I see there is some discussion in
https://github.com/containers/podman/issues/17984
and
https://github.com/containers/podman/pull/17961
Erik
On Mon, Sep 4, 2023 at 9:46 PM jklaiho(a)iki.fi <jklaiho(a)iki.fi> wrote:
Hi Erik,
Yeah, I'm fairly sure that would work, but am I to understand from your
reply that it is not possible to achieve with the UserNS quadlet option the
things that the Remap* quadlet options did?
If so, why on earth did the Remap* options go away if a) they're still
fully supported 'podman run' command-line options, and b) they serve a
legit use case that UserNS doesn't fill?
- JK
On Monday, Sep 04, 2023 at 10:36 PM, Erik Sjölund <erik.sjolund(a)gmail.com>
wrote:
I think the directive "PodmanArgs" can be used to set podman arguments
that don't have any
container option counterpart.
See man page:
https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html
Maybe something like this could work?
PodmanArgs=--uidmap 0:0:1 --uidmap 100:1:1 --gidmap 0:0:1 --gidmap
65534:1:1
(untested)
Erik
_______________________________________________
Podman mailing list -- podman(a)lists.podman.io
To unsubscribe send an email to podman-leave(a)lists.podman.io