Subject: Re: Use CAP_NET_ADMIN and alias netdev-nlmon instead

From: Daniel Borkmann <[email-masked]>
Date: Sat, 09 Aug 2014 21:32:18 +0200

On 08/08/2014 11:22 PM, Marcel Holtmann wrote:
> Hi,
>
> so I am running this command sequence:
>
> 	ip link add name nlmon type nlmon
> 	ip link set dev nlmon up
>
> With that I get this message in dmesg:
>
> Loading kernel module for a network device with CAP_SYS_MODULE (deprecated).
 > Use CAP_NET_ADMIN and alias netdev-nlmon instead.
>
> The kernel section producing this is dev_load() from net/core/dev_ioctl.c:
>
>          no_module = !dev;
>          if (no_module && capable(CAP_NET_ADMIN))
>                  no_module = request_module("netdev-%s", name);
>          if (no_module && capable(CAP_SYS_MODULE)) {
>                  if (!request_module("%s", name))
>                          pr_warn("Loading kernel module for a network device with CAP_SYS_MODULE (deprecated).  Use CAP_NET_ADMIN and alias netdev-%s instead.\n",
>                                  name);
>          }
>
> Since I am explicitly giving the name from userspace, I have no idea why the
 > kernel bugs me in providing netdev-nlmon alias. It makes no sense to me. What
 > is the reasoning behind this?

Could it just be that your process doesn't have CAP_NET_ADMIN set
but CAP_SYS_MODULE instead thus triggering this pr_warn()?

  grep Cap /proc/$$/status ?

Hm, I don't think this is nlmon related, above works fine on my side.