Module Name: src Committed By: elad Date: Thu May 7 18:01:57 UTC 2009
Modified Files: src/share/man/man9: kauth.9 src/sys/dev/bluetooth: bcsp.c btuart.c src/sys/net: if_sl.c if_strip.c ppp_tty.c src/sys/secmodel/bsd44: secmodel_bsd44_suser.c src/sys/sys: kauth.h Log Message: Introduce actions/requests to handle authorization for ppp(4), sl(4), strip(4), btuart(4) and bcsp(4) network interfaces and devices. Mailing list reference: http://mail-index.netbsd.org/tech-kern/2009/04/27/msg004955.html To generate a diff of this commit: cvs rdiff -u -r1.81 -r1.82 src/share/man/man9/kauth.9 cvs rdiff -u -r1.16 -r1.17 src/sys/dev/bluetooth/bcsp.c cvs rdiff -u -r1.21 -r1.22 src/sys/dev/bluetooth/btuart.c cvs rdiff -u -r1.114 -r1.115 src/sys/net/if_sl.c cvs rdiff -u -r1.92 -r1.93 src/sys/net/if_strip.c cvs rdiff -u -r1.54 -r1.55 src/sys/net/ppp_tty.c cvs rdiff -u -r1.64 -r1.65 src/sys/secmodel/bsd44/secmodel_bsd44_suser.c cvs rdiff -u -r1.56 -r1.57 src/sys/sys/kauth.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/share/man/man9/kauth.9 diff -u src/share/man/man9/kauth.9:1.81 src/share/man/man9/kauth.9:1.82 --- src/share/man/man9/kauth.9:1.81 Thu May 7 11:54:41 2009 +++ src/share/man/man9/kauth.9 Thu May 7 18:01:56 2009 @@ -1,4 +1,4 @@ -.\" $NetBSD: kauth.9,v 1.81 2009/05/07 11:54:41 wiz Exp $ +.\" $NetBSD: kauth.9,v 1.82 2009/05/07 18:01:56 elad Exp $ .\" .\" Copyright (c) 2005, 2006 Elad Efrat <e...@netbsd.org> .\" All rights reserved. @@ -25,7 +25,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd May 5, 2009 +.Dd May 7, 2009 .Dt KAUTH 9 .Os .Sh NAME @@ -601,6 +601,45 @@ there's no way to tell what structure .Ar arg3 is. +.It Dv KAUTH_NETWORK_INTERFACE_PPP +Checks operations performed on the +.Xr ppp 4 +network interface are allowed. +.Pp +.Ar req +can be one of the following: +.Bl -tag -width compact +.It Dv KAUTH_REQ_NETWORK_INTERFACE_PPP_ADD +Checks if adding and enabling a +.Xr ppp 4 +interface to the system is allowed. +.El +.It Dv KAUTH_NETWORK_INTERFACE_SLIP +Checks operations performed on the +.Xr sl 4 +network interface are allowed. +.Pp +.Ar req +can be one of the following: +.Bl -tag -width compact +.It Dv KAUTH_REQ_NETWORK_INTERFACE_SLIP_ADD +Checks if adding and enabling a +.Xr sl 4 +interface to the system is allowed. +.El +.It Dv KAUTH_NETWORK_INTERFACE_STRIP +Checks operations performed on the +.Xr strip 4 +network interface are allowed. +.Pp +.Ar req +can be one of the following: +.Bl -tag -width compact +.It Dv KAUTH_REQ_NETWORK_INTERFACE_STRIP_ADD +Check if adding and enabling a +.Xr strip 4 +interface to the system is allowed. +.El .It Dv KAUTH_NETWORK_FORWSRCRT Checks whether status of forwarding of source-routed packets can be modified or not. @@ -865,6 +904,36 @@ authorization wrapper, with the following actions: .Pp .Bl -tag -width compact +.It KAUTH_DEVICE_BLUETOOTH_BCSP +Check if operations on a +.Xr bcsp 4 +device are allowed. +.Pp +.Ar arg0 +is an +.Ft enum kauth_device_req +with one of the following values: +.Bl -tag -width compact +.It Dv KAUTH_REQ_DEVICE_BLUETOOTH_BCSP_ADD +Check if adding and enabling a +.Xr bcsp 4 +device is allowed. +.El +.It KAUTH_DEVICE_BLUETOOTH_BTUART +Check if operations on a +.Xr btuart 4 +device are allowed. +.Pp +.Ar arg0 +is an +.Ft enum kauth_device_req +with one of the following values: +.Bl -tag -width compact +.It Dv KAUTH_REQ_DEVICE_BLUETOOTH_BTUART_ADD +Check if adding and enabling a +.Xr btuart 4 +device is allowed. +.El .It KAUTH_DEVICE_BLUETOOTH_SETPRIV Check if privileged settings can be changed. .Pp Index: src/sys/dev/bluetooth/bcsp.c diff -u src/sys/dev/bluetooth/bcsp.c:1.16 src/sys/dev/bluetooth/bcsp.c:1.17 --- src/sys/dev/bluetooth/bcsp.c:1.16 Sun Apr 26 07:53:43 2009 +++ src/sys/dev/bluetooth/bcsp.c Thu May 7 18:01:57 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: bcsp.c,v 1.16 2009/04/26 07:53:43 elad Exp $ */ +/* $NetBSD: bcsp.c,v 1.17 2009/05/07 18:01:57 elad Exp $ */ /* * Copyright (c) 2007 KIYOHARA Takashi * All rights reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bcsp.c,v 1.16 2009/04/26 07:53:43 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bcsp.c,v 1.17 2009/05/07 18:01:57 elad Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -378,9 +378,10 @@ int error, unit, s; static char name[] = "bcsp"; - if ((error = kauth_authorize_generic(l->l_cred, - KAUTH_GENERIC_ISSUSER, NULL)) != 0) - return error; + error = kauth_authorize_device(l->l_cred, KAUTH_DEVICE_BLUETOOTH_BCSP, + KAUTH_ARG(KAUTH_REQ_DEVICE_BLUETOOTH_BCSP_ADD), NULL, NULL, NULL); + if (error) + return (error); s = spltty(); Index: src/sys/dev/bluetooth/btuart.c diff -u src/sys/dev/bluetooth/btuart.c:1.21 src/sys/dev/bluetooth/btuart.c:1.22 --- src/sys/dev/bluetooth/btuart.c:1.21 Sun Apr 26 07:53:43 2009 +++ src/sys/dev/bluetooth/btuart.c Thu May 7 18:01:57 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: btuart.c,v 1.21 2009/04/26 07:53:43 elad Exp $ */ +/* $NetBSD: btuart.c,v 1.22 2009/05/07 18:01:57 elad Exp $ */ /*- * Copyright (c) 2006, 2007 KIYOHARA Takashi @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: btuart.c,v 1.21 2009/04/26 07:53:43 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: btuart.c,v 1.22 2009/05/07 18:01:57 elad Exp $"); #include <sys/param.h> #include <sys/conf.h> @@ -226,9 +226,10 @@ struct lwp *l = curlwp; /* XXX */ int error, unit, s; - if ((error = kauth_authorize_generic(l->l_cred, - KAUTH_GENERIC_ISSUSER, NULL)) != 0) - return error; + error = kauth_authorize_device(l->l_cred, KAUTH_DEVICE_BLUETOOTH_BTUART, + KAUTH_ARG(KAUTH_REQ_DEVICE_BLUETOOTH_BTUART_ADD), NULL, NULL, NULL); + if (error) + return (error); s = spltty(); Index: src/sys/net/if_sl.c diff -u src/sys/net/if_sl.c:1.114 src/sys/net/if_sl.c:1.115 --- src/sys/net/if_sl.c:1.114 Wed Dec 17 20:51:36 2008 +++ src/sys/net/if_sl.c Thu May 7 18:01:57 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_sl.c,v 1.114 2008/12/17 20:51:36 cegger Exp $ */ +/* $NetBSD: if_sl.c,v 1.115 2009/05/07 18:01:57 elad Exp $ */ /* * Copyright (c) 1987, 1989, 1992, 1993 @@ -60,7 +60,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_sl.c,v 1.114 2008/12/17 20:51:36 cegger Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_sl.c,v 1.115 2009/05/07 18:01:57 elad Exp $"); #include "opt_inet.h" #include "bpfilter.h" @@ -303,8 +303,9 @@ struct sl_softc *sc; int error; - if ((error = kauth_authorize_generic(l->l_cred, KAUTH_GENERIC_ISSUSER, - NULL)) != 0) + error = kauth_authorize_network(l->l_cred, KAUTH_NETWORK_INTERFACE_SLIP, + KAUTH_REQ_NETWORK_INTERFACE_SLIP_ADD, NULL, NULL, NULL); + if (error) return error; if (tp->t_linesw == &slip_disc) Index: src/sys/net/if_strip.c diff -u src/sys/net/if_strip.c:1.92 src/sys/net/if_strip.c:1.93 --- src/sys/net/if_strip.c:1.92 Sat Apr 18 14:58:05 2009 +++ src/sys/net/if_strip.c Thu May 7 18:01:57 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_strip.c,v 1.92 2009/04/18 14:58:05 tsutsui Exp $ */ +/* $NetBSD: if_strip.c,v 1.93 2009/05/07 18:01:57 elad Exp $ */ /* from: NetBSD: if_sl.c,v 1.38 1996/02/13 22:00:23 christos Exp $ */ /* @@ -87,7 +87,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_strip.c,v 1.92 2009/04/18 14:58:05 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_strip.c,v 1.93 2009/05/07 18:01:57 elad Exp $"); #include "opt_inet.h" #include "bpfilter.h" @@ -475,8 +475,10 @@ struct strip_softc *sc; int error; - if ((error = kauth_authorize_generic(l->l_cred, - KAUTH_GENERIC_ISSUSER, NULL)) != 0) + error = kauth_authorize_network(l->l_cred, + KAUTH_NETWORK_INTERFACE_STRIP, + KAUTH_REQ_NETWORK_INTERFACE_STRIP_ADD, NULL, NULL, NULL); + if (error) return (error); if (tp->t_linesw == &strip_disc) Index: src/sys/net/ppp_tty.c diff -u src/sys/net/ppp_tty.c:1.54 src/sys/net/ppp_tty.c:1.55 --- src/sys/net/ppp_tty.c:1.54 Wed Apr 15 20:44:25 2009 +++ src/sys/net/ppp_tty.c Thu May 7 18:01:57 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: ppp_tty.c,v 1.54 2009/04/15 20:44:25 elad Exp $ */ +/* $NetBSD: ppp_tty.c,v 1.55 2009/05/07 18:01:57 elad Exp $ */ /* Id: ppp_tty.c,v 1.3 1996/07/01 01:04:11 paulus Exp */ /* @@ -93,7 +93,7 @@ /* from NetBSD: if_ppp.c,v 1.15.2.2 1994/07/28 05:17:58 cgd Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ppp_tty.c,v 1.54 2009/04/15 20:44:25 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ppp_tty.c,v 1.55 2009/05/07 18:01:57 elad Exp $"); #include "ppp.h" @@ -208,8 +208,9 @@ struct ppp_softc *sc; int error, s; - if ((error = kauth_authorize_generic(l->l_cred, KAUTH_GENERIC_ISSUSER, - NULL)) != 0) + error = kauth_authorize_network(l->l_cred, KAUTH_NETWORK_INTERFACE_PPP, + KAUTH_REQ_NETWORK_INTERFACE_PPP_ADD, NULL, NULL, NULL); + if (error) return (error); s = spltty(); Index: src/sys/secmodel/bsd44/secmodel_bsd44_suser.c diff -u src/sys/secmodel/bsd44/secmodel_bsd44_suser.c:1.64 src/sys/secmodel/bsd44/secmodel_bsd44_suser.c:1.65 --- src/sys/secmodel/bsd44/secmodel_bsd44_suser.c:1.64 Tue May 5 21:03:28 2009 +++ src/sys/secmodel/bsd44/secmodel_bsd44_suser.c Thu May 7 18:01:56 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: secmodel_bsd44_suser.c,v 1.64 2009/05/05 21:03:28 elad Exp $ */ +/* $NetBSD: secmodel_bsd44_suser.c,v 1.65 2009/05/07 18:01:56 elad Exp $ */ /*- * Copyright (c) 2006 Elad Efrat <e...@netbsd.org> * All rights reserved. @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44_suser.c,v 1.64 2009/05/05 21:03:28 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: secmodel_bsd44_suser.c,v 1.65 2009/05/07 18:01:56 elad Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -849,6 +849,42 @@ } break; + case KAUTH_NETWORK_INTERFACE_PPP: + switch (req) { + case KAUTH_REQ_NETWORK_INTERFACE_PPP_ADD: + if (isroot) + result = KAUTH_RESULT_ALLOW; + break; + default: + break; + } + + break; + + case KAUTH_NETWORK_INTERFACE_SLIP: + switch (req) { + case KAUTH_REQ_NETWORK_INTERFACE_SLIP_ADD: + if (isroot) + result = KAUTH_RESULT_ALLOW; + break; + default: + break; + } + + break; + + case KAUTH_NETWORK_INTERFACE_STRIP: + switch (req) { + case KAUTH_REQ_NETWORK_INTERFACE_STRIP_ADD: + if (isroot) + result = KAUTH_RESULT_ALLOW; + break; + default: + break; + } + + break; + case KAUTH_NETWORK_NFS: switch (req) { case KAUTH_REQ_NETWORK_NFS_EXPORT: @@ -1015,6 +1051,25 @@ result = KAUTH_RESULT_ALLOW; break; + case KAUTH_DEVICE_BLUETOOTH_BCSP: + case KAUTH_DEVICE_BLUETOOTH_BTUART: { + enum kauth_device_req req; + + req = (enum kauth_device_req)arg0; + switch (req) { + case KAUTH_REQ_DEVICE_BLUETOOTH_BCSP_ADD: + case KAUTH_REQ_DEVICE_BLUETOOTH_BTUART_ADD: + if (isroot) + result = KAUTH_RESULT_ALLOW; + break; + + default: + break; + } + + break; + } + case KAUTH_DEVICE_RAWIO_SPEC: case KAUTH_DEVICE_RAWIO_PASSTHRU: /* Index: src/sys/sys/kauth.h diff -u src/sys/sys/kauth.h:1.56 src/sys/sys/kauth.h:1.57 --- src/sys/sys/kauth.h:1.56 Tue May 5 21:03:28 2009 +++ src/sys/sys/kauth.h Thu May 7 18:01:56 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: kauth.h,v 1.56 2009/05/05 21:03:28 elad Exp $ */ +/* $NetBSD: kauth.h,v 1.57 2009/05/07 18:01:56 elad Exp $ */ /*- * Copyright (c) 2005, 2006 Elad Efrat <e...@netbsd.org> @@ -177,7 +177,10 @@ KAUTH_NETWORK_FORWSRCRT, KAUTH_NETWORK_NFS, KAUTH_NETWORK_ROUTE, - KAUTH_NETWORK_SOCKET + KAUTH_NETWORK_SOCKET, + KAUTH_NETWORK_INTERFACE_PPP, + KAUTH_NETWORK_INTERFACE_SLIP, + KAUTH_NETWORK_INTERFACE_STRIP, }; /* @@ -210,7 +213,10 @@ KAUTH_REQ_NETWORK_SOCKET_RAWSOCK, KAUTH_REQ_NETWORK_SOCKET_CANSEE, KAUTH_REQ_NETWORK_SOCKET_DROP, - KAUTH_REQ_NETWORK_SOCKET_SETPRIV + KAUTH_REQ_NETWORK_SOCKET_SETPRIV, + KAUTH_REQ_NETWORK_INTERFACE_PPP_ADD, + KAUTH_REQ_NETWORK_INTERFACE_SLIP_ADD, + KAUTH_REQ_NETWORK_INTERFACE_STRIP_ADD, }; /* @@ -242,6 +248,8 @@ KAUTH_DEVICE_RND_ADDDATA, KAUTH_DEVICE_RND_GETPRIV, KAUTH_DEVICE_RND_SETPRIV, + KAUTH_DEVICE_BLUETOOTH_BCSP, + KAUTH_DEVICE_BLUETOOTH_BTUART, }; /* @@ -251,6 +259,8 @@ KAUTH_REQ_DEVICE_RAWIO_SPEC_READ=1, KAUTH_REQ_DEVICE_RAWIO_SPEC_WRITE, KAUTH_REQ_DEVICE_RAWIO_SPEC_RW, + KAUTH_REQ_DEVICE_BLUETOOTH_BCSP_ADD, + KAUTH_REQ_DEVICE_BLUETOOTH_BTUART_ADD, }; /*