I’m setting up a minimal chroot and want to avoid having sudo or su in it but still run my processes as non-root. This is a bit of a trick as running chroot requiers root. I could write a program that does this that would look something like:
uid = LookupUser(args[username]) // no /etc/passwd in jail
chroot(args[newroot])
cd("/")
setuids(uid)
execve(args[exe:])
Is that my best bet or is there a standard tool that does that for me?
I rolled my own here:
If you invoke
chrootfrom root, thechrootoption--userspec=USER:GROUPwill run the command under the non-root UID/GID.By the way, the option ‘–userspec’ is first introduced in coreutils-7.5 according to a git repository
git://git.sv.gnu.org/coreutils.