Re: Documentation patch for namespaced file capabilities

From: Eric W. Biederman
Date: Mon Nov 20 2017 - 11:03:57 EST

"Michael Kerrisk (man-pages)" <mtk.manpages@xxxxxxxxx> writes:

> Hi Serge,
> At the moment man-pages lacks documentation of the namespaced file
> capability feature that you added with commit
> 8db6c34f1dbc8e06aa016a9b829b06902c3e1340. Would you be able to send a
> patch describing the feature?
> Presumably, the patch would be for the capabilities(7) page (or
> perhaps for the user_namespaces(7) page, if that seems more
> appropriate), As well as documenting the semantics, it would be good
> to include an example or two of the notation that is used for the
> xattr names.
> Presumably also there will be some changes in userspace tools
> (setcap/getcap?). Do you know anything about what's happening there?

Just a quick summary.

- The capability name does not change.

- From inside a user namespace the capability works as for ``root'' as
existing tools expect. (AKA the capability is mapped into the current
user namespace).

- From outside a user namespace the version of the capability is
incremented, and a uid of the root user in a user namespace is added
at the end in the new version of the capability.

So for the capabilities(7) manpage I would add to the File capablities

Since Kernel v4.14 the kernel supports setting file capabilities inside
a user namespace. In which case an additional uid is stored indicating
the root user of the user namespace the file capabilitity is active in.

When a file is executed and it has a file capability limited to a user
namespace, the kernel takes the uid from the capability and if that uid
matches the uid of the root user of the user namespace or the root user
of an ancestor namespace the capability is applied. Otherwise the
capability is ignored.