podman-rootless(7)
π¦ podman-rootless(7) π¦
Miscellaneous Information Manual
Hiii bestie π welcome to the rootless Podman tea. This is podman-rootless(7), and weβre about to get into the known issues and irregularities with running Podman as a non-root user.
π Shortcomings of Rootless Podman π
Okay so hereβs the categorized list of known issues and irregularities with running Podman as a non-root user. Many of these are kernel-level restrictions that exist for security reasons, and theyβre not reasonably solvable by Podman. No cap.
- Podman can not create containers that bind to ports
< 1024.- The kernel does not allow processes without
CAP_NET_BIND_SERVICEto bind to low ports. - You can modify the
net.ipv4.ip_unprivileged_port_startsysctl to change the lowest port. For examplesysctl net.ipv4.ip_unprivileged_port_start=443allows rootless Podman containers to bind to ports>= 443. - A proxy server, kernel firewall rule, or redirection tool such as
redirmay be used to redirect traffic from a privileged port to an unprivileged one (where a podman pod is bound) in a server scenario - where a user has access to the root account (or setuid on the binary would be an acceptable risk), but wants to run the containers as an unprivileged user for enhanced security and for a limited number of pre-known ports.
- The kernel does not allow processes without
- As of Podman
5.0,pastais the default networking tool. Sincepastacopies the IP address of the main interface, connections to that IP from containers do not work. This means that unless you have more than one interface, inter-container connections cannot be made without explicitly passing a pasta network configuration, either incontainers.confor at runtime.- If you previously had port forwards (ex. via
-p 80:80) that other containers could access, you can use the solution (setting pasta options with10.0.2.xIPs) posted here.
- If you previously had port forwards (ex. via
- Rootless bridge networks use
rootlessportfor port forwarding by default, which is a userspace proxy that does not preserve client source IPs. Settingrootless_port_forwarder="pasta"in the[network]section ofcontainers.confswitches to pasta's kernel-level forwarding (viapesto), preserving the original client IP. This option is experimental and its behavior is subject to change. It requires a version ofpasst(>= passt-0^20260507.g1afd4ed) that ships thepestobinary. - If
/etc/subuidand/etc/subgidare not set up for a user, thenpodmancommands can easily fail.- Some identity providers (e.g.
FreeIPA) have integrated subuid/subgid support, but many have not. - We are working to get support for
NSSWITCHon the/etc/subuidand/etc/subgidfiles.
- Some identity providers (e.g.
- No support for setting resource limits on systems using cgroups v1.
- Some systemd unit configuration options do not work in the rootless container.
- Use of certain options will cause service startup failures (e.g.
PrivateNetwork). The systemd services requiringPrivateNetworkcan be made to work by passing--cap-add SYS_ADMIN, but the security implications should be carefully evaluated. In most cases, it's better to create anoverride.confdrop-in that setsPrivateNetwork=no. This also applies to containers run by root.
- Use of certain options will cause service startup failures (e.g.
- Container images cannot easily be shared with other users.
- Difficult to use additional stores for sharing content.
- Does not work on NFS or parallel filesystem homedirs (e.g.
GPFS).- NFS and parallel filesystems enforce file creation on different UIDs on the server side and does not understand User Namespace.
- When a container root process like
YUMattempts to create a file owned by a different UID, NFS Server/GPFS denies the creation.
- Requires a writable home directory that is not mounted with
noexecornodev.- User can set up storage to point to other directories they can write to.
- Support for using native
overlayfsas an unprivileged user is only available for Podman version>= 3.1on a Linux kernel version>= 5.12, otherwise the slowerfuse-overlayfswill be used. - Only supported storage drivers are
overlay(optionally usingfuse-overlayfs) andVFS. - A few commands do not work or have reduced functionality.
- Directories created by
podman mountandpodman unmountare only visible in the rootless user namespace, which can be accessed withpodman unshare. podman container checkpointandpodman container restore(CRIUrequires root).
- Directories created by
- Issues with higher UIDs can cause builds to fail.
- A standard rootless configuration only gives containers access to
65536UIDs and GIDs - images with higher UIDs and GIDs cannot be used. - If a build is attempting to use a UID that is not mapped into the user namespace mapping for a container, then builds will not be able to put the UID in an image.
- A standard rootless configuration only gives containers access to
- Making device nodes within a container fails, even when using privileged containers.
- The kernel does not allow non root user processes (processes without
CAP_MKNOD) to create device nodes. If a container needs to create device nodes, it must be run as root.
- The kernel does not allow non root user processes (processes without
mwah π β footer check: the source/version tag is podman-rootless(7), and thereβs no date printed on this page. Byeee π«Ά
π¦ where this page comes from
- arch rolling: podman 6.1.4-1 Β· Apache-2.0
- centos-stream 10: podman 7:6.1.0-2.el10 Β· Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0
- nixpkgs unstable: podman 6.1.4
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms