For review (v2): user_namespaces(7) man page

richard -rw- weinberger richard.weinberger at
Thu Apr 25 07:48:00 UTC 2013

On Wed, Mar 27, 2013 at 10:26 PM, Michael Kerrisk (man-pages)
<mtk.manpages at> wrote:
>        Inside the user namespace, the shell has user and group  ID  0,
>        and a full set of permitted and effective capabilities:
>            bash$ cat /proc/$$/status | egrep '^[UG]id'
>            Uid: 0    0    0    0
>            Gid: 0    0    0    0
>            bash$ cat /proc/$$/status | egrep '^Cap(Prm|Inh|Eff)'
>            CapInh:   0000000000000000
>            CapPrm:   0000001fffffffff
>            CapEff:   0000001fffffffff

I've tried your demo program, but inside the new ns I'm automatically nobody.
As Eric said, setuid(0)/setgid(0) are missing.

Eric, maybe you can help me. How can I drop capabilities within a user
In childFunc() I did add prctl(PR_CAPBSET_DROP, CAP_NET_ADMIN) but it always
returns ENOPERM.
What that? I thought I get a completely fresh set of cap which I can modify.
I don't want that uid 0 inside the container has all caps.

And why does /proc/*/loginuid always contain 4294967295 in a new user namespace?
Writing to it also fails. (Noticed that because does not work).

Final question, is it by design that uid 0 within a namespace in not
allowed to write to


P.s: I've used 3.9-rc8 for my tests...

More information about the Containers mailing list