I do not have the list handy for all the priviledge level 0-15 specification, perhaps someone could provide that link.
I do know however that using proviledge level 5 will only give the user the ability to issue
You can use for that priv level 5
line vty 0 4
line vty 5 15
you can implement this using Cisco's IOS role-based CLI either with AAA or parser view command.
The only two levels defined by default are:
Level 0: User exec mode
Level 15: Privileged Exec (enable) mode
Levels 1-14 are UNDEFINED, by default. You have to manually define commands for each of these levels.
Please note you will have issues with commands like show running-config, because the commands shown in the config might be blocked by priviledged level.
If you had an ACS server, you could give that user level 15 access then RESTRICT the commands they are able to use to the subset you require.
Here are some helpful links:
Making show running-config a separate level 15 command was just STUPID Cisco. WTF were you thinking? You already created all these priviledge levels so why not just let us assign what we want at the privledge we set? Dumb Asses. So how do I give our PCI auditors READ ONLY access to see the running config?
Do your PCI auditors need to see the running config? Or would the start-up config be sufficient? If so you can just do:
Here is a sample config for a parser view that would include all 'show' commands:
aaa authentication login default local
aaa authentication enable default enable
aaa authorization exec default local
username HELPDESK view READ_ONLY secret 5 $1$/dM0$UdkfJLS9nJtUVNrf.o9dr1
parser view HELPDESK
secret 5 $1$Ih.f$BXcbZmeoB3sBUBdyD6oN0.
commands exec include show startup-config
commands exec include all show
line vty 0 4
transport input all
login authentication default
This is what we use on similar IOS and Catalyst devices to allow rancid to pull config:
username readonly privilege 4 secret BLAH
privilege exec level 4 dir all-filesystems
privilege exec level 4 dir
privilege exec level 4 more
privilege exec level 4 write terminal
privilege exec level 4 write
privilege exec level 4 show inventory raw
privilege exec level 4 show inventory
privilege exec level 4 show vlan
privilege exec level 4 show vtp status
privilege exec level 4 show vtp
privilege exec level 4 show idprom
privilege exec level 4 show env all
privilege exec level 4 show env
privilege exec level 4 show boot
privilege exec level 4 show version
privilege exec level 4 show debugging
privilege exec level 4 show controllers
privilege exec level 4 show running-config
privilege exec level 4 show
You need to specify the entire command the user can run. For instance you can't just allow "show" to enable all show commands, has to be the entire command. Seems stupid.
This works for us with Radius too, we return the priv level from Radius.
Unfortunately this approach has stopped working on some of our IOS-XE devices since we upgraded to IOS 16.6 Everest, and I haven't been able to find a way around it. Same for NXOS can't find a way to do it.
It seems odd to me that there isn't a read-only user option. I understand the config is delicate, but there are numerous cases where you might want to allow someone on to view the config and show things, but not modify configuration.