• Michael Weiß's avatar
    l2tp: Allow management of tunnels and session in user namespace · 2abe0523
    Michael Weiß authored
    Creation and management of L2TPv3 tunnels and session through netlink
    requires CAP_NET_ADMIN. However, a process with CAP_NET_ADMIN in a
    non-initial user namespace gets an EPERM due to the use of the
    genetlink GENL_ADMIN_PERM flag. Thus, management of L2TP VPNs inside
    an unprivileged container won't work.
    
    We replaced the GENL_ADMIN_PERM by the GENL_UNS_ADMIN_PERM flag
    similar to other network modules which also had this problem, e.g.,
    openvswitch (commit 4a92602a "openvswitch: allow management from
    inside user namespaces") and nl80211 (commit 5617c6cd "nl80211:
    Allow privileged operations from user namespaces").
    
    I tested this in the container runtime trustm3 (trustm3.github.io)
    and was able to create l2tp tunnels and sessions in unpriviliged
    (user namespaced) containers using a private network namespace.
    For other runtimes such as docker or lxc this should work, too.
    Signed-off-by: default avatarMichael Weiß <michael.weiss@aisec.fraunhofer.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2abe0523
l2tp_netlink.c 26 KB