以下配置均在openSUSE 11.2上通过测试:
一. 添加SNMPv3帐号;
1. 首先添加一个拥有读写权限的帐号到/etc/snmp/snmpd.conf, 加入一行 rwuser anhonyjiang, 表示是一个拥有读写权限的帐号。
2. 修改/var/lib/net-snmp/snmpd.conf文件, 加入一行createUser anthonyjiang SHA aaaaaaaa AES bbbbbbbb。 该文件中的说明
#
# net-snmp (or ucd-snmp) persistent data file.
#
############################################################################
# STOP STOP STOP STOP STOP STOP STOP STOP STOP
#
# **** DO NOT EDIT THIS FILE ****
#
# STOP STOP STOP STOP STOP STOP STOP STOP STOP
############################################################################
#
# DO NOT STORE CONFIGURATION ENTRIES HERE.
# Please save normal configuration tokens for snmpd in SNMPCONFPATH/snmpd.conf.
# Only "createUser" tokens should be placed here by snmpd administrators.
# (Did I mention: do not edit this file?)
注释中说明了只有createUser语句应该放置在这个地方。 另外, 认证和加密方式默认均需要在8个字符以上, 所以选择了aa...和bb....
3. service snmpd start;启动SNMP服务
4. snmpget -v3 -l authPriv -u anthonyjiang -a SHA -A aaaaaaaa -x AES -X bbbbbbbb localhost sysLocation.0
SNMPv2-MIB::sysLocation.0 = STRING: Chengdu
通过snmpget获取的信息。
如果不想每次都输入这么多信息, 可以在$HOME/.snmp/snmp.conf目录文件中配置默认的帐号、认证方式和加密方式等等, 如下:
pensuse-laptop:~/.snmp # cat $HOME/.snmp/snmp.conf
defVersion 3
defSecurityName anthonyjiang
defSecurityLevel authPriv
defAuthType SHA
defAuthPassphrase aaaaaaaa
defPrivType AES
defPrivPassphrase bbbbbbbb
这样,就可以只输入snmpget localhost sysDescr.0 来获取结果。
二 访问控制
1. 添加只有读权限的帐号
2. 基于视图的访问控制
三 其他操作
1. 远程重新载入配置snmpd.conf和远程重启
如果在本机, 可以通过service snmpd reload或者kill -HUP $(cat cat /var/run/snmpd.pid)重新载入配置。 如果不在本机, 可以通过snmpset命令进行,前提是执行该命令的用户对agent拥有写权限, 如下:
snmpset localhost UCD-SNMP-MIB::versionUpdateConfig.0 = 1
UCD-SNMP-MIB::versionUpdateConfig.0 = INTEGER: 1
snmpset localhost UCD-SNMP-MIB::versionRestartAgent.0 = 1
UCD-SNMP-MIB::versionRestartAgent.0 = INTEGER: 1