sysctl: expose all net/core sysctls inside netns
authorMahesh Bandewar <maheshb@google.com>
Thu, 5 Jan 2023 02:28:42 +0000 (18:28 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Jan 2023 12:41:52 +0000 (12:41 +0000)
All were not visible to the non-priv users inside netns. However,
with 4ecb90090c84 ("sysctl: allow override of /proc/sys/net with
CAP_NET_ADMIN"), these vars are protected from getting modified.
A proc with capable(CAP_NET_ADMIN) can change the values so
not having them visible inside netns is just causing nuisance to
process that check certain values (e.g. net.core.somaxconn) and
see different behavior in root-netns vs. other-netns

Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/sysctl_net_core.c

index 5b1ce65..e7b9816 100644 (file)
@@ -643,11 +643,6 @@ static __net_init int sysctl_core_net_init(struct net *net)
 
                for (tmp = tbl; tmp->procname; tmp++)
                        tmp->data += (char *)net - (char *)&init_net;
-
-               /* Don't export any sysctls to unprivileged users */
-               if (net->user_ns != &init_user_ns) {
-                       tbl[0].procname = NULL;
-               }
        }
 
        net->core.sysctl_hdr = register_net_sysctl(net, "net/core", tbl);