.TH SNMPVACM 1 "05 Sep 2006" VVERSIONINFO "Net-SNMP"
.SH NAME
snmpvacm - creates and maintains SNMPv3 View-based Access Control entries on a network entity
.SH SYNOPSIS
.B snmpvacm
[COMMON OPTIONS] AGENT
.B createSec2Group
MODEL SECURITYNAME  GROUPNAME
.br
.B snmpvacm
[COMMON OPTIONS] AGENT
.B deleteSec2Group
MODEL SECURITYNAME
.br
.B snmpvacm
[COMMON OPTIONS] AGENT
.B createView
[\-Ce] NAME SUBTREE MASK
.br
.B snmpvacm
[COMMON OPTIONS] AGENT
.B deleteView
NAME SUBTREE
.br
.B snmpvacm
[COMMON OPTIONS]  AGENT
.B createAccess
GROUPNAME [CONTEXTPREFIX] MODEL LEVEL CONTEXTMATCH READVIEW WRITEVIEW NOTIFYVIEW
.br
.B snmpvacm
[COMMON OPTIONS]  AGENT
.B deleteAccess
GROUPNAME [CONTEXTPREFIX] MODEL LEVEL
.br
.B snmpvacm
[COMMON OPTIONS]  AGENT
.B createAuth
GROUPNAME [CONTEXTPREFIX] MODEL LEVEL AUTHTYPE CONTEXTMATCH VIEW 
.br
.B snmpvacm
[COMMON OPTIONS]  AGENT
.B deleteAuth
GROUPNAME [CONTEXTPREFIX] MODEL LEVEL AUTHTYPE

.SH DESCRIPTION
.B snmpvacm
is an SNMP application that can be used to do simple maintenance on the
View-based Control Module (VACM) tables of an SNMP agent.
The SNMPv3 VACM specifications (see RFC2575) define assorted tables
to specify groups of users, MIB views, and authorised access settings.
These
.BR snmpvacm
commands effectively create or delete rows in the appropriate one of
these tables, and match the equivalent configure directives
which are documented in the
.I snmpd.conf(5)
man page.
.PP
A fuller explanation of how these operate can be found in the project FAQ.
.SH SUB-COMMANDS

.SS createSec2Group \fRMODEL SECURITYNAME GROUPNAME\fP
.PP
Create an entry in the SNMPv3 security name to group table.  This table
allows a single access control entry to be applied to a number of users
(or 'principals'),
and is indexed by the security model and security name values.
.PP
MODEL
.IP
An integer representing the security model, taking one of the following
values:
.br
1 - reserved for SNMPv1
.br
2 - reserved for SNMPv2c
.br
3 - User-based Security Model (USM)

.PP
SECURITYNAME
.IP
A string representing the security name for a principal (represented in
a security-model-independent format).  For USM-based requests, the security
name is the same as the username.

.PP
GROUPNAME
.IP
A string identifying the group that this entry (i.e. security name/model
pair) should belong to.  This group name will then be referenced in the
access table (see
.B createAccess
below).
.PP
.SS deleteSec2Group \fRMODEL SECURITYNAME\fP
.PP
Delete an entry from the SNMPv3 security name to group table, thus removing
access control settings for the given principal.  The entry to be removed is
indexed by the MODEL and SECURITYNAME values, which should match those used
in the corresponding
.B createSec2Group
command (or equivalent).

.SS createView \fR[\-Ce] NAME SUBTREE MASK\fP
.PP
Create an entry in the SNMPv3 MIB view table.
A MIB view consists of a family of view subtrees which may be individually
included in or (occasionally) excluded from the view.  Each view subtree is
defined by a combination of an OID subtree together with a bit string mask.
The view table is indexed by the view name and subtree OID values.
.PP
[\-Ce]
.IP
An optional flag to indicate that this view subtree should be excluded
from the named view.
If not specified, the default is to include the subtree in the view.
When constructing a view from a mixture of included and excluded subtrees,
the excluded subtrees should be defined first - particularly if the named
view is already referenced in one or more access entries.
.PP
NAME
.IP
A string identifying a particular MIB view, of which this OID subtree/mask
forms part (possibly the only part).
.PP
SUBTREE
.IP
The OID defining the root of the subtree to add to (or exclude from) the
named view.
.PP
MASK
.IP
A bit mask indicating which sub-identifiers of the associated subtree OID
should be regarded as significant.

.SS deleteView \fRNAME SUBTREE\fP
Delete an entry from the SNMPv3 view table, thus removing the subtree from
the given MIB view.
Removing the final (or only) subtree will result in the deletion of the view.
The entry to be removed is indexed by the NAME and SUBTREE values, which
should match those used in the corresponding
.B createView
command (or equivalent).
.PP
When removing subtrees from a mixed view (i.e. containing both included and
excluded subtrees), the included subtrees should be removed first.

.SS createAccess \fRGROUPNAME [CONTEXTPREFIX] MODEL LEVEL CONTEXTMATCH READVIEW WRITEVIEW NOTIFYVIEW\fP
Create an entry in the SNMPv3 access table, thus allowing a certain level
of access to particular MIB views for the principals in the specified group
(given suitable security model and levels in the request).
The access table is indexed by the group name, context prefix, security model
and security level values.
.PP
GROUPNAME
.IP
The name of the group that this access entry applies to
(as set up by a
.B createSec2Group
command, or equivalent)
.PP
CONTEXTPREFIX
.IP
A string representing a context name (or collection of context names)
which this access entry applies to.
The interpretation of this string depends on the value of the
CONTEXTMATCH field (see below).
.IP
If omitted, this will default to the null context "".
.PP
MODEL
.IP
An integer representing the security model, taking one of the following
values:
.br
1 - reserved for SNMPv1
.br
2 - reserved for SNMPv2c
.br
3 - User-based Security Model (USM)
.PP
LEVEL
.IP
An integer representing the minimal security level, taking one of the following
values:
.br
1 - noAuthNoPriv
.br
2 - authNoPriv
.br
3 - authPriv
.IP
This access entry will be applied to requests of this level or higher
(where authPriv is higher than authNoPriv which is in turn higher than
noAuthNoPriv).
.PP
CONTEXTMATCH
.IP
Indicates how to interpret the CONTEXTPREFIX value.
If this field has the value '1' (representing 'exact') then the context
name of a request must match the CONTEXTPREFIX value exactly for this
access entry to be applicable to that request.
.IP
If this field has the value '2' (representing 'prefix') then the initial
substring of the context name of a request must match the CONTEXTPREFIX
value for this access entry to be applicable to that request.
This provides a simple form of wildcarding.
.PP
READVIEW
.IP
The name of the MIB view
(as set up by
.B createView
or equivalent)
defining the MIB objects for which this request may request the current values.
.IP
If there is no view with this name, then read access is not granted.
.PP
WRITEVIEW
.IP
The name of the MIB view
(as set up by
.B createView
or equivalent)
defining the MIB objects for which this request may potentially SET new values.
.IP
If there is no view with this name, then read access is not granted.
.PP
NOTIFYVIEW
.IP
The name of the MIB view
(as set up by
.B createView
or equivalent)
defining the MIB objects which may be included in notification request.
.IP
Note that this aspect of access control is not currently supported.

.SS deleteAccess \fRGROUPNAME [CONTEXTPREFIX] MODEL LEVEL\fP
Delete an entry from the SNMPv3 access table, thus removing the specified
access control settings.
The entry to be removed is indexed by the group name, context prefix,
security model and security level values,
which should match those used in the corresponding
.B createAccess
command (or equivalent).

.SS createAuth \fRGROUPNAME [CONTEXTPREFIX] MODEL LEVEL AUTHTYPE CONTEXTMATCH VIEW\fP
Create an entry in the Net-SNMP extension to the standard access table,
thus allowing a certain type of access to the MIB view for the principals
in the specified group.
The interpretation of GROUPNAME, CONTEXTPREFIX, MODEL, LEVEL and CONTEXTMATCH
are the same as for the
.B createAccess
directive.
The extension access table is indexed by the group name, context prefix,
security model, security level and authtype values.
.PP
AUTHTYPE
.IP
The style of access that this entry should be applied to.
See
.I "snmpd.conf(5)"
and
.I "snmptrapd.conf(5)"
for details of valid tokens.
.PP
VIEW
.IP
The name of the MIB view
(as set up by
.B createView
or equivalent)
defining the MIB objects for which this style of access is authorized.

.SS deleteAuth \fRGROUPNAME [CONTEXTPREFIX] MODEL LEVEL AUTHTYPE\fP
Delete an entry from the extension access table, thus removing the specified
access control settings.
The entry to be removed is indexed by the group name, context prefix,
security model, security level and authtype values,
which should match those used in the corresponding
.B createAuth
command (or equivalent).

.PP
Note that
.B snmpget
REQUIRES  an argument specifying the agent to query
as described in the .I snmpcmd(1) manual page.

.SH EXAMPLES
.PP
Given a pre-existing user
.I dave
(which could be set up using the
.I snmpusm(1)
command),
we could configure full read-write access to the whole OID tree
using the commands:

.IP
snmpvacm localhost createSec2Group 3 dave RWGroup
.IP
snmpvacm localhost createView   all .1 80
.IP
snmpvacm localhost createAccess  RWGroup 3 1 1 all all none
.PP
This creates a new security group named "RWGroup" containing the SNMPv3 user "dave",
a new view "all" containing the full OID tree based on
.I .iso(1)
, and then allows those users in the group "RWGroup" (i.e. "dave")
both read- and write-access to the view "all" (i.e. the full OID tree)
when using authenticated SNMPv3 requests.

.PP
As a second example,
we could set up read-only access to a portion
of the OID tree using the commands:

.IP
snmpvacm localhost createSec2Group 3 wes ROGroup
.IP
snmpvacm localhost createView   sysView  system fe
.IP
snmpvacm localhost createAccess  ROGroup 3 0 1 sysView none none
.PP
This creates a new security group named "ROGroup" containing the (pre-existing)
user "wes", a new view "sysView" containing just the OID tree based on
.I .iso(1).org(3).dod(6).inet(1).mgmt(2).mib\-2(1).system(1)
, and then allows those users in the group "ROGroup" (i.e. "wes")
read-access, but not write-access to the view "sysView" (i.e. the system group).

.SH "EXIT STATUS"

.PP
The following exit values are returned:
.PP
0 - Successful completion
.PP
1 - A usage syntax error (which displays a suitable usage message)
or a request timeout.
.PP
2 - An error occurred while executing the command
(which also displays a suitable error message).

.SH "LIMITATIONS"

This utility does not support the configuration of new community strings,
so is only of use for setting up new access control for SNMPv3 requests.
It can be used to amend the access settings for existing community strings,
but not to set up new ones.

.PP
The use of numeric
parameters for
.B secLevel
and
.B contextMatch
parameters is less than intuitive.
These commands do not provide the full flexibility of the
equivalent config file directives.

.PP
There is (currently) no equivalent to the one-shot
configure directives
.I rouser
and
.I rwuser.

.SH "SEE ALSO"
snmpcmd(1), snmpusm(1),
snmpd.conf(5), snmp.conf(5), RFC 2575, Net-SNMP project FAQ
