On Thu, Aug 29, 2019 at 05:32:27PM +0200, Daniel Borkmann wrote: > On 8/29/19 7:12 AM, Alexei Starovoitov wrote: > > Implement permissions as stated in uapi/linux/capability.h > > > > Note that CAP_SYS_ADMIN is replaced with CAP_BPF. > > All existing applications that use BPF do not drop all caps > > and keep only CAP_SYS_ADMIN before doing bpf() syscall. > > Hence it's highly unlikely that existing code will break. > > If there will be reports of breakage then CAP_SYS_ADMIN > > would be allowed as well with "it's usage is deprecated" message > > similar to commit ee24aebffb75 ("cap_syslog: accept CAP_SYS_ADMIN for now") > > > > Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx> > [...] > > diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c > > index 22066a62c8c9..f459315625ac 100644 > > --- a/kernel/bpf/hashtab.c > > +++ b/kernel/bpf/hashtab.c > > @@ -244,9 +244,9 @@ static int htab_map_alloc_check(union bpf_attr *attr) > > BUILD_BUG_ON(offsetof(struct htab_elem, fnode.next) != > > offsetof(struct htab_elem, hash_node.pprev)); > > - if (lru && !capable(CAP_SYS_ADMIN)) > > + if (lru && !capable(CAP_BPF)) > > /* LRU implementation is much complicated than other > > - * maps. Hence, limit to CAP_SYS_ADMIN for now. > > + * maps. Hence, limit to CAP_BPF. > > */ > > return -EPERM; > I don't think this works, this is pretty much going to break use cases where > orchestration daemons are deployed as containers that are explicitly granted > specified cap set and right now this is CAP_SYS_ADMIN and not CAP_BPF for bpf(). > The former needs to be a superset of the latter in order for this to work and > not break compatibility between kernel upgrades. > > - https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container > - https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities These are the links that showing that k8 can delegates caps. Are you saying that you know of folks who specifically delegate cap_sys_admin and cap_net_admin _only_ to a container to run bpf in there?