svn commit: r353798 - in head: . sys/net
Kyle Evans
kevans at FreeBSD.org
Mon Oct 21 14:38:12 UTC 2019
Author: kevans
Date: Mon Oct 21 14:38:11 2019
New Revision: 353798
URL: https://svnweb.freebsd.org/changeset/base/353798
Log:
tuntap(4): restrict scope of net.link.tap.user_open slightly
net.link.tap.user_open has historically allowed non-root users to do devfs
cloning and open /dev/tap* nodes based on permissions. Loosen this up to
make it only allow users to do devfs cloning -- we no longer check it in
tunopen.
This allows tap devices to be created that can actually be opened by a user,
rather than swiftly restricting them to root because the magic sysctl has
not been set.
The sysctl has not yet been completely deprecated, because more thought is
needed for how to handle the devfs cloning case. There is not an easy
suitable replacement for the sysctl there, and more care needs to be placed
in determining whether that's OK or not.
PR: 200185
Modified:
head/UPDATING
head/sys/net/if_tuntap.c
Modified: head/UPDATING
==============================================================================
--- head/UPDATING Mon Oct 21 14:34:40 2019 (r353797)
+++ head/UPDATING Mon Oct 21 14:38:11 2019 (r353798)
@@ -26,6 +26,15 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
disable the most expensive debugging functionality run
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
+20191021:
+ The net.link.tap.user_open sysctl no longer prevents user opening of
+ already created /dev/tapNN devices. Access is still controlled by
+ node permissions, just like tun devices. The net.link.tap.user_open
+ sysctl is now used only to allow users to perform devfs cloning of
+ tap devices, and the subsequent open may not succeed if the user is not
+ in the appropriate group. This sysctl may be deprecated/removed
+ completely in the future.
+
20191009:
mips, powerpc, and sparc64 are no longer built as part of
universe / tinderbox unless MAKE_OBSOLETE_GCC is defined. If
Modified: head/sys/net/if_tuntap.c
==============================================================================
--- head/sys/net/if_tuntap.c Mon Oct 21 14:34:40 2019 (r353797)
+++ head/sys/net/if_tuntap.c Mon Oct 21 14:38:11 2019 (r353798)
@@ -181,7 +181,7 @@ static const char vmnetname[] = "vmnet";
static MALLOC_DEFINE(M_TUN, tunname, "Tunnel Interface");
static int tundebug = 0;
static int tundclone = 1;
-static int tap_allow_uopen = 0; /* allow user open() */
+static int tap_allow_uopen = 0; /* allow user devfs cloning */
static int tapuponopen = 0; /* IFF_UP on open() */
static int tapdclone = 1; /* enable devfs cloning */
@@ -202,7 +202,7 @@ SYSCTL_INT(_net_link_tun, OID_AUTO, devfs_cloning, CTL
static SYSCTL_NODE(_net_link, OID_AUTO, tap, CTLFLAG_RW, 0,
"Ethernet tunnel software network interface");
SYSCTL_INT(_net_link_tap, OID_AUTO, user_open, CTLFLAG_RW, &tap_allow_uopen, 0,
- "Allow user to open /dev/tap (based on node permissions)");
+ "Enable legacy devfs interface creation for all users");
SYSCTL_INT(_net_link_tap, OID_AUTO, up_on_open, CTLFLAG_RW, &tapuponopen, 0,
"Bring interface up when /dev/tap is opened");
SYSCTL_INT(_net_link_tap, OID_AUTO, devfs_cloning, CTLFLAG_RWTUN, &tapdclone, 0,
@@ -1047,17 +1047,6 @@ tunopen(struct cdev *dev, int flag, int mode, struct t
if (error != 0) {
CURVNET_RESTORE();
return (error); /* Shouldn't happen */
- }
-
- if ((tunflags & TUN_L2) != 0) {
- /* Restrict? */
- if (tap_allow_uopen == 0) {
- error = priv_check(td, PRIV_NET_TAP);
- if (error != 0) {
- CURVNET_RESTORE();
- return (error);
- }
- }
}
tp = dev->si_drv1;
More information about the svn-src-all
mailing list