<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Namespaces on *scratch*</title>
    <link>https://www.scrivano.org/tags/namespaces/</link>
    <description>Recent content in Namespaces on *scratch*</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 06 Jun 2026 10:03:54 +0000</lastBuildDate>
    <atom:link href="https://www.scrivano.org/tags/namespaces/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Rootless containers @ devconf.cz</title>
      <link>https://www.scrivano.org/2019/02/24/rootless-containers-devconf-cz/</link>
      <pubDate>Sun, 24 Feb 2019 22:26:15 +0000</pubDate>
      <guid>https://www.scrivano.org/2019/02/24/rootless-containers-devconf-cz/</guid>
      <description>&lt;p&gt;The video of the rootless containers talk from Devconf.cz 2019 is finally available on YouTube. The talk covers how user namespaces, fuse-overlayfs, and slirp4netns come together to allow running containers entirely as an unprivileged user, without any setuid helpers beyond newuidmap and newgidmap, and discusses the remaining challenges around cgroup resource management and overlay storage performance that still need to be addressed for rootless containers to reach full feature parity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SUID binaries from a user namespace</title>
      <link>https://www.scrivano.org/2019/01/10/suid-binaries-from-a-user-namespace/</link>
      <pubDate>Thu, 10 Jan 2019 21:49:30 +0000</pubDate>
      <guid>https://www.scrivano.org/2019/01/10/suid-binaries-from-a-user-namespace/</guid>
      <description>&lt;p&gt;Additional IDs that are allocated to a user through /etc/subuid and /etc/subgid must be considered as permanently allocated and never reused for any other user. The reason is that a setuid binary created inside a user namespace can retain access to any UID that was mapped in that namespace, even after the namespace is destroyed. If the same UID range is later assigned to a different user, that new user would inherit access to files owned by the old user&amp;rsquo;s containers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Network namespaces for unprivileged users</title>
      <link>https://www.scrivano.org/2018/08/05/network-namespaces-for-unprivileged-users/</link>
      <pubDate>Sun, 05 Aug 2018 13:54:44 +0000</pubDate>
      <guid>https://www.scrivano.org/2018/08/05/network-namespaces-for-unprivileged-users/</guid>
      <description>&lt;p&gt;A couple of weekends ago I’ve played with libslirp and put together &lt;a href=&#34;https://github.com/giuseppe/slirp-forwarder&#34;&gt;slirp-forwarder&lt;/a&gt;. The challenge with network namespaces for unprivileged users is that creating TAP or TUN devices requires privileges in the host network namespace. SliRP sidesteps this by emulating a full TCP/IP stack entirely in user space, so the helper process can forward traffic to the outside world using only normal socket operations, without needing any elevated capability.&lt;/p&gt;&#xA;&lt;p&gt;SliRP emulates in userspace a TCP/IP stack. It can be used to circumvent the limitation of creating TAP/TUN devices in the host namespace for an unprivileged user. The program could run in the host namespace, receive messages from the network namespace where a TAP device is configured, and forward them to the outside world using unprivileged operations such as opening another connection to the destination host. Privileged operations are still not possible outside of the emulated network, as the helper program doesn’t gain any additional privilege that running as an unprivileged user.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Become-root in a user namespace</title>
      <link>https://www.scrivano.org/2018/07/19/become-root-in-an-user-namespace/</link>
      <pubDate>Thu, 19 Jul 2018 08:28:06 +0000</pubDate>
      <guid>https://www.scrivano.org/2018/07/19/become-root-in-an-user-namespace/</guid>
      <description>&lt;p&gt;I’ve cleaned up some C files I was using locally for hacking with user namespaces and uploaded them to a new repository on github: &lt;a href=&#34;https://github.com/giuseppe/become-root&#34;&gt;https://github.com/giuseppe/become-root&lt;/a&gt;. The tool creates a new user namespace and maps the caller to UID 0 inside it, while also mapping additional UIDs and GIDs from the ranges allocated in &lt;em&gt;/etc/subuid&lt;/em&gt; and &lt;em&gt;/etc/subgid&lt;/em&gt;. This is the foundation needed for rootless containers, which require a full UID/GID mapping — not just the single-UID mapping that &lt;em&gt;unshare -r&lt;/em&gt; provides — to correctly represent file ownership inside container images.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Current status (and problems) of running Buildah as non root</title>
      <link>https://www.scrivano.org/2018/02/25/current-status-problems-running-buildah-non-root/</link>
      <pubDate>Sun, 25 Feb 2018 13:59:14 +0000</pubDate>
      <guid>https://www.scrivano.org/2018/02/25/current-status-problems-running-buildah-non-root/</guid>
      <description>&lt;p&gt;Having Buildah running in a user namespace opens the possibility of building container images as a non-root user. I’ve done some work to get &lt;a href=&#34;https://github.com/projectatomic/buildah&#34;&gt;Buildah&lt;/a&gt; running inside a user container, where it can still create and modify container images without any elevated privileges on the host. This is useful for CI environments and shared systems where granting root or setuid access is not acceptable.&lt;/p&gt;&#xA;&lt;p&gt;There are still some open issues to get it fully working. The biggest open one is that &lt;em&gt;overlayfs&lt;/em&gt; cannot be currently used as non root user. There is some work going on, but this will require changes in the kernel and the way extended attributes work for overlay. The alternative is far from ideal and it is to use the &lt;em&gt;vfs&lt;/em&gt; storage driver, but it is a good starting point to get things moving and see how far we get. (Another possibility that doesn’t require changes in the kernel would be an OSTree storage for Buildah, but that is a different story).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use bubblewrap as an unprivileged user to run systemd images</title>
      <link>https://www.scrivano.org/2016/10/22/use-bubblewrap-unprivileged-user-run-systemd-images/</link>
      <pubDate>Sat, 22 Oct 2016 13:21:25 +0000</pubDate>
      <guid>https://www.scrivano.org/2016/10/22/use-bubblewrap-unprivileged-user-run-systemd-images/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/projectatomic/bubblewrap/&#34;&gt;bubblewrap&lt;/a&gt; is a sandboxing tool that allows unprivileged users to run containers. I was recently working on a way to allow unprivileged users to take advantage of bubblewrap to run regular system images that use systemd. To do so, it was necessary to modify bubblewrap to retain a controlled set of Linux capabilities inside the sandbox. Without those capabilities, systemd cannot perform the privilege-separation steps it needs at startup, even when running as UID 0 inside a user namespace.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
