Hi, (TL;DR version: Please audit the attached setuid program) I've recently been doing some work in software compilation, and it'd be really handy if I could call chroot(2) as a non-root user. The reason to chroot is to help avoid "host contamination" - I can set up a build root and then chroot in. The reason to do it as non-root is, well, requiring root to build software sucks for multiple obvious reasons. (Now you can do LD_PRELOAD hacks to talk to a daemon like https://github.com/wrpseudo/pseudo does, but really - too gross and too slow). The historical reason one can't call chroot(2) as non-root is because of setuid binaries (hard link a setuid binary into chroot of your choice with trojaned libc.so). But it turns out a while back this commit: commit 3898b1b4ebff8dcfbcf1807e0661585e06c9a91c Author: Andrew G. Morgan Date: Mon Apr 28 02:13:40 2008 -0700 capabilities: implement per-process securebits Added *exactly* what we need. We just call: prctl (PR_SET_SECUREBITS, SECBIT_NOROOT | SECBIT_NOROOT_LOCKED); A setuid program to call both this and chroot(2) is *almost* good enough for my use case - but it's a little hard to run most build software without say /dev/null, /dev/urandom and /proc. The other key thing Linux recently gained is CLONE_NEWNS - with this (and also SECBIT_NOROOT), we can allow users to make bind mounts to their heart's content, which frankly is just cool. Bind mounts are a really neat VFS feature. While I was making a setuid program, I also exposed the other useful clone flags like CLONE_NEWNET and CLONE_NEWIPC. So...I'd like to eventually get something like this into util-linux...possibly as a hardlink to mount (which is already setuid). Auditing appreciated! Am I missing anything? Has anyone else noticed the nice pairing of SECBIT_NOROOT and chroot(2) and used it for a tool?