Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

用户访问权限

您(系统管理员)授予用户对命令、配置层次结构级别和语句的访问权或权限。用户只能执行这些命令,并且只能查看和配置他们具有访问权限的语句。您还可以使用扩展正则表达式来指定允许或拒绝用户使用哪些作模式命令、配置语句和层次结构。这种做法可防止未经授权的用户执行敏感命令或配置语句,从而对网络造成损害。

访问权限级别概述

每个顶级 CLI 命令和 配置语句 都有一个关联的访问权限级别。用户只能执行这些命令,并且只能配置和查看他们具有访问权限的语句。一个或多个权限标志定义每个登录类的访问权限。

对于每个登录类,您还可以显式允许或拒绝使用作模式和配置模式命令及语句层次结构,否则这些命令和语句层次结构将由语句中指定的 permissions 权限级别允许或拒绝。

登录类权限标志

您可以使用权限标志授予用户访问作模式命令以及配置层次结构级别和语句的权限。您可以在 [edit system login class] 层次结构级别为用户的登录类配置权限标志。当您指定某个权限标志时,用户将获得对命令以及与该标志对应的配置层次结构级别和语句的访问权限。要授予对所有命令和配置语句的访问权限,请使用 all 权限标志。

注意:

列出的每个命令都表示该命令以及以该命令为前缀的所有子命令。列出的每个 配置语句 都表示该标志授予访问权限的配置层次结构的顶部。

permissions 语句指定 表 1 中列出的一个或多个权限标志。权限标志不是累积的。对于每个类,必须列出所需的所有权限标志,包括 view 显示信息和 configure 进入配置模式。有两种形式的权限控制用户对配置各个部分的访问:

  • “纯”表单 — 为该权限类型提供只读功能。一个例子是 interface

  • -control form - 为该权限类型提供读写功能。一个例子是 interface-control

对于授予对配置层次结构级别和语句的访问权限的权限标志,纯格式标志将授予对该配置的只读权限。例如, interface 权限标志授予对 [edit interfaces] 层次结构级别的只读访问权限。 -control 标志的形式授予对该配置的读写访问权限。例如,该 interface-control 标志授予对 [edit interfaces] 层次结构级别的读写访问权限。

表 1 列出了可以通过在[edit system login class class-name]层次结构级别包含permissions语句来配置的登录名类权限标志。

权限标志授予一组特定的访问权限。每个权限标志都与作模式或配置模式命令、配置层次结构级别以及该标志授予访问权限的语句一起列出。

表 1:登录类权限标志

权限标志

描述

access

可以在作模式或配置模式下查看接入配置。

access-control

可以在 [edit access] 层次结构级别查看和配置访问信息。

admin

可以在作模式或配置模式下查看用户帐户信息。

admin-control

可以查看用户帐户信息并在层次结构级别进行 [edit system] 配置。

all

可以访问所有作模式命令和配置模式命令。可以修改所有配置层次结构级别的配置。

clear

可以清除(删除)设备从网络中学习并存储在各种网络数据库中的信息(使用 clear 命令)。

configure

可以进入配置模式(使用 configure 命令)和提交配置(使用 commit 命令)。

control

可以执行所有控制级别作 — 使用 -control 权限标志配置的所有作。

field

可以查看字段调试命令。保留用于调试支持。

firewall

可以在作模式或配置模式下查看 防火墙过滤器 配置。

firewall-control

可以在 [edit firewall] 层级查看和配置防火墙过滤器信息。

floppy

可以读取和写入可移动介质。

flow-tap

可以在作模式或配置模式下查看流监测配置。

flow-tap-control

可以在 [edit services flow-tap] 层次结构级别查看和配置流监测信息。

flow-tap-operation

可以向路由器或交换机发出流监测请求。例如,动态任务控制协议 (DTCP) 客户端必须有权 flow-tap-operation 以管理用户身份向 Junos OS 演化 版验证自身身份。

注意:

权限标志中不包含all-controlflow-tap-operation选项。

idp-profiler-operation

可以查看探查器数据。

interface

可以在作模式和配置模式下查看接口配置。

interface-control

可以查看机箱、 服务等级 (CoS)、组、转发选项和接口配置信息。可以在以下层级修改配置:

  • [edit chassis]

  • [edit class-of-service]

  • [edit groups]

  • [edit forwarding-options]

  • [edit interfaces]

maintenance

可以执行系统维护,包括在设备上启动本地 shell 并成为 shell 中的超级用户(使用 su root 命令)以及停止和重新启动设备(使用 request system 命令)。

network

可以使用、pingsshtelnettraceroute和命令访问网络。

pgcp-session-mirroring

可以查看 pgcp 会话镜像配置。

pgcp-session-mirroring-control

可以修改 pgcp 会话镜像配置。

reset

可以使用命令 restart 重新启动软件进程。

rollback

可以使用 rollback 命令返回到之前提交的配置。

routing

可以在配置模式和作模式下查看常规路由、路由协议和路由策略配置信息。

routing-control

可以在 [edit routing-options] 层次结构级别查看和配置常规路由,在层次结构级别查看路由协议 [edit protocols] ,在层次结构级别查看和配置路由策略信息 [edit policy-options]

secret

可以在配置中查看密码和其他身份验证密钥。

secret-control

可以查看和修改配置中的密码和其他身份验证密钥。

security

可以在作模式和配置模式下查看安全配置信息。

security-control

可以在 [edit security] 层次结构级别查看和配置安全信息。

shell

可以使用 start shell 命令在路由器或交换机上启动本地 shell,也可以使用 start shell user root 命令成为 shell 中的 root 用户。

snmp

可以在作模式或配置模式下查看简单网络管理协议 (SNMP) 配置信息。

snmp-control

可以在 [edit snmp] 层级查看和修改 SNMP 配置信息。

storage

可以在层次结构级别查看光纤通道存储配置信息 [edit fc-fabrics]

storage-control

可以在 [edit fc-fabrics] 层次结构级别修改光纤通道存储配置信息。

system

可以在作模式或配置模式下查看系统级信息。

system-control

可以在 [edit system] 层次结构级别查看和修改系统级配置信息。

trace

可以查看追踪文件设置并配置追踪文件属性。

trace-control

可以修改跟踪文件设置并配置跟踪文件属性。

unified-edge

可以查看层次结构中的 [edit unified-edge] 统一边缘配置。

unified-edge

可以在层次结构中 [edit unified-edge] 修改与统一边缘相关的配置。

view

可以使用各种命令显示当前系统范围的路由表以及特定于协议的值和统计信息。无法查看机密配置。

view-configuration

可以查看所有配置,除了机密、系统脚本和事件选项。

注意:

只有具有权限的用户 maintenance 才能查看提交脚本、作脚本或事件脚本配置。

允许和拒绝登录类的单个命令和语句层次结构

默认情况下,所有顶级 CLI 命令和配置层次结构级别都具有关联的访问权限级别。用户只能执行这些命令,并且只能查看和配置他们具有访问权限的语句。对于每个登录类,可以显式允许和拒绝使用作模式和配置模式命令及语句层次结构,否则这些命令和层次结构将由语句中指定的 permissions 权限级别允许或拒绝。

权限标志授予用户对作模式和配置模式命令以及配置层次结构级别和语句的访问权限。通过在 [edit system login class] 层次结构级别上对用户的登录类指定特定权限标志,即可授予用户对相应命令和配置层次结构级别和语句的访问权限。要授予对所有命令和配置语句的访问权限,请使用 all 权限标志。

可以通过allow-commands配置登录类的 、 deny-commandsallow-configurationdeny-configuration 语句来显式允许或拒绝使用命令和语句。在语句中,使用扩展正则表达式来定义要允许或拒绝分配给类的用户的命令和语句。

示例:使用访问权限级别配置用户权限

此示例配置登录类的用户权限。您可以为登录类配置用户权限,以防止用户执行未经授权的网络作。用户只能执行这些命令,并且只能查看和修改他们具有访问权限的语句。此约束可防止未经授权的用户执行敏感命令或配置可能导致网络损坏的语句。

要求

配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

每个顶级 CLI 命令和每个配置语句都有一个与之关联的访问权限级别。配置登录类时,可以显式允许或拒绝使用作模式和配置模式命令及配置语句。用户只能执行这些命令,并且只能查看和配置他们具有访问权限的语句。

可以通过在语句中 permissions 指定一个或多个权限标志来定义每个登录类的访问权限。权限标志授予用户访问命令、语句和层次结构的权限。权限标志不是累积的。对于每个登录类,必须列出所需的所有权限标志,包括 view 显示信息和 configure 进入配置模式。通过在用户的登录类上指定特定的权限标志,可以授予用户访问相应命令、语句和层次结构的权限。要授予对所有命令和配置语句的访问权限,请使用 all 权限标志。权限标志为权限类型提供只读(“纯”表单)和读写(以 -control 结尾的表单)功能。

注意:

当用户发出rollback启用了rollback权限标志的命令时,all登录类权限位优先于扩展正则表达式。

要为登录类配置用户访问权限级别,请在[edit system login class class-name]层次结构级别包含permissions语句,后跟权限标志。将多个权限配置为用方括号括起来的空格分隔列表:

提示:

要查看可用权限,请使用 CLI 的上下文相关帮助,并在语句后 permissions 键入问号 (?):

配置

此示例配置 snmp-admin 登录名类。 此登录类中的用户只能配置和查看 SNMP 参数。

使用访问权限级别配置用户权限

分步过程

要配置登录类的访问权限,请执行以下作:

  1. 使用、 configuresnmpsnmp-control 权限标志配置snmp-admin登录类。

    配置的权限标志为 SNMP 提供读取 (snmp) 和读写 (snmp-control) 功能,这是此登录类唯一允许的访问权限。所有其他访问权限都将被拒绝。

  2. 创建分配给 snmp-admin 登录名类的用户帐户。

结果

在配置模式下,输入 show system login 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

配置设备后,进入 commit 配置模式。

验证

使用分配给新登录名类的用户名登录,并确认配置工作正常。

验证 SNMP 配置

目的

验证登录类中的用户 snmp-admin 是否可以配置 SNMP。

行动

在配置模式下,在 [edit snmp] 层次结构级别配置 SNMP 语句。

意义

登录类中的用户 snmp-admin 可以配置 SNMP 参数。用户可以配置这些参数,因为为此类指定的权限标志包括 snmp(读取功能)和 snmp-control(读取和写入功能)权限位。

验证非 SNMP 配置

目的

验证登录类中的用户 snmp-admin 是否无法修改非 SNMP 配置语句。

行动

在配置模式下,尝试配置任何非 SNMP 语句,如层次结构中的 interfaces 语句。

意义

登录名类中的 snmp-admin 用户无法配置 [edit interfaces] 层次结构,因为为此类指定的权限标志不允许配置层次结构。在这种情况下,CLI 会发出一条错误消息。

用于允许和拒绝作模式命令、配置语句和层次结构的正则表达式

本主题包含以下部分:

了解允许和拒绝语句

每个顶级 CLI 命令和配置语句层次结构都有一个与之关联的访问权限级别。每个登录类都可以显式允许或拒绝使用作模式和配置模式命令以及配置层次结构和语句,否则权限级别将允许或拒绝这些命令和语句。用户只能执行这些命令,并且只能查看和配置他们具有访问权限的语句。

每个登录类的访问权限由语句中在[edit system login class class-name]层次结构级别上指定的permissions一个或多个权限标志定义。此外,您还可以通过定义扩展正则表达式来允许或拒绝使用特定命令和配置层次结构。您可以通过为登录名类配置以下语句来指定正则表达式:

  • allow-commandsdeny-commands—允许或拒绝访问作模式和配置模式命令。

  • allow-configurationdeny-configuration—允许或拒绝对特定配置层次结构的访问。

    注意:

    这些语句执行的匹配速度较慢,但灵活性更高,尤其是在通配符匹配方面。但是,如果配置了大量全路径正则表达式或通配符表达式,则可能需要很长时间才能评估所有可能的语句,这可能会对性能产生负面影响。

  • allow-commands-regexpsdeny-commands-regexps- 允许或拒绝使用正则表达式字符串的特定命令的访问。

  • allow-configuration-regexpsdeny-configuration-regexps—允许或拒绝使用正则表达式字符串访问特定配置层次结构。

注意:

如果现有配置使用 allow/deny-commands or allow/deny-configuration 语句,则对 allow/deny-commands-regexps or allow/deny-configuration-regexps 语句使用相同的配置选项可能不会产生相同的结果。搜索和匹配方法在这些语句的两种形式上有所不同。

显式允许使用 allow/deny-* 语句的命令和配置语句层次结构会增加语句已定义的权限 permissions 。同样,使用 allow/deny-* 语句显式拒绝命令和配置语句层次结构会删除语句已定义的权限 permissions

例如,在以下配置中,该 configure 权限允许登录类中的用户进入配置模式。此外,该 allow-configuration 表达式允许用户在 [edit system services] 层次结构级别修改配置并提交。

同样,在以下配置中,登录类用户可以执行权限标志允许的所有作 all ,但用户不能在 [edit system services] 层次结构级别查看或修改配置:

了解 allow 和 deny 语句语法

每个登录名类中只能配置 allow/deny-* 一次语句。配置语句时:

  • 您可以根据需要配置任意数量的正则表达式。

  • 正则表达式不区分大小写

这些 allow/deny-commands 语句与 allow/deny-commands-regexps 语句是互斥的,而 allow/deny-configuration 这些语句又与 allow/deny-configuration-regexps 语句是互斥的。例如,不能在同一登录名类中同时 allow-configuration 配置和 allow-configuration-regexps

要定义命令的访问权限,请使用 allow-commandsdeny-commands 语句指定扩展正则表达式。将每个完整的独立表达式括在括号 ( ) 中,并使用竖线 ( | ) 符号分隔表达式。不要在与竖线符号相连的正则表达式之间使用空格。完整表达式用双引号括起来。

例如:

使用 allow-commands 语句指定复杂的正则表达式时,必须使用锚点。例如:

要定义对配置层次结构中各个部分的访问权限,请在和 deny-configuration 语句中allow-configuration指定扩展正则表达式。将完整路径括在括号 ( ) 中,并使用竖线 ( | ) 符号分隔表达式。不要在与竖线符号相连的正则表达式之间使用空格。完整表达式用双引号括起来。

例如:

使用 allow/deny-commands-regexpsallow/deny-configuration-regexps 语句指定扩展正则表达式时,将每个表达式括在引号 (“ ”) 内,并使用空格分隔表达式。将多个表达式括在方括号 [ ] 中。例如:

、 和 count 等修饰符logset在要匹配的正则表达式字符串中不受支持。如果使用修饰符,则不匹配任何内容。

正确配置:

配置不正确:

了解允许和拒绝语句的优先级和匹配

默认情况下, allow-commandsallow-configuration 正则表达 deny-commands 式优先于 和 deny-configuration 表达式。因此,如果为 和 allow-commands deny-commands 语句配置相同的命令,则 allow作优先于 deny作。同样,如果为 和 allow-configuration deny-configuration 语句配置相同的语句,则允许作优先于拒绝作。

例如,以下配置允许登录 test 类中的用户使用 request system software add 命令安装软件,即使该 deny-commands 语句包含相同的命令:

同样,以下配置允许登录 test 名类测试中的用户查看和修改 [edit system services] 配置层次结构,即使该 deny-configuration 语句包含相同的层次结构:

allow-commands如果和 deny-commands 语句具有命令的两个不同变体,则始终执行最长匹配。以下配置允许登录test类中的用户执行命令,commit synchronize但不能commit执行命令。这是因为commit synchronize是 和 commit synchronize之间的commit最长匹配项,并且为 指定了 allow-commands

以下配置允许登录test类中的用户执行命令,commit但不能commit synchronize执行命令。这是因为commit synchronize是 和 commit synchronize之间的commit最长匹配项,并且为 指定了 deny-commands

与其他语句相比,语句的 *-regexps 默认行为是 deny-commands-regexpsdeny-configuration-regexps 正则表达 allow-commands-regexps 式优先于 和 allow-configuration-regexps 表达式。您可以在层次结构级别配置 regex-additive-logic 语句 [edit system] ,以强制 allow-configuration-regexps 正则表达式优先于 deny-configuration-regexps 语句。通过配置语句,您可以拒绝更高级别的配置层次结构,然后仅允许用户访问特定的子层次结构。

了解允许和拒绝语句规则

allow/deny-commandsallow/deny-configurationallow/deny-commands-regexpsallow/deny-configuration-regexps 语句优先于登录名类权限。配置这些语句时,以下规则适用:

  • deny-commands 语句的正则表达式allow-commands还可以包括 commit、、loadrollbackstatussave、 和update命令。

  • all当用户发出rollbackrollback启用了权限标志的命令时,登录类权限位优先于扩展正则表达式。

  • 指定扩展正则表达式时,用户无法发出 load override 命令。用户只能发出 mergereplacepatch 配置命令。

  • 表示正则表达式时,可以使用 * 通配符。但是,您必须将其用作正则表达式的一部分。不能将 用作[ * ][ .* ]唯一表达式。此外,您不能使用诸如 的(interfaces (description (|.*))表达式来allow-configuration配置语句,因为这将计算结果为 allow-configuration .*

了解 *-regexps 语句的差异

本节概述语句和allow/deny-configuration-regexps语句之间的区别allow/deny-configuration

allow/deny-configuration-regexps语句将正则表达式拆分为多个标记,并将每个部分与指定配置的完整路径的每个部分进行匹配,而allow/deny-configuration语句则与完整字符串匹配。对于allow/deny-configuration-regexps语句,您可以配置一组字符串,其中每个字符串都是正则表达式,字符串的项之间有空格。此语法提供了非常快速的匹配,但提供的灵活性较低。若要指定通配符表达式,必须为要匹配的空格分隔字符串的每个标记设置通配符,这使得对这些语句使用通配符表达式变得更加困难。

例如:

  • 使用 allow-configuration-regexps 匹配一个令牌的正则表达式

    此示例显示, options 这是针对语句的第一个标记的唯一匹配表达式。

    上述配置与以下语句匹配:

    • 设置策略选项 、条件 condition 、动态数据库

    • 设置路由选项 静态路由 static-route 下一跃点 next-hop

    • 设置事件选项 生成事件 event 时间间隔 seconds

    上述配置与以下语句不匹配:

    • 系统主机名 主机选项

    • interface-name接口说明选项

  • 使用 allow-configuration-regexps 匹配三个令牌的正则表达式

    此示例显示 that ssh 是针对语句的第三个标记的唯一匹配表达式。

    在前面的示例中,三个标记分别包括 .*.*.*ssh

    上述配置与以下语句匹配:

    • 系统主机名 主机名-SSH

    • 系统服务 SSH

    • 系统服务出站 SSH

    上述配置与以下语句不匹配:

    • interface-name接口说明 SSH

使用 deny-configuration 语句限制配置访问比使用 deny-configuration-regexps 语句更容易。 表 2 说明了如何在 deny-configuration 不同的配置中使用和 deny-configuration-regexps 语句来实现限制对特定配置的访问的相同结果。

表 2:使用 deny-configuration 和 deny-configuration-regexps 语句限制配置访问

配置被拒绝

用: deny-configuration

用: deny-configuration-regexps

结果

xnm-ssl

[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration .*xnm-ssl;
    }
}
[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration-regexps ".* .* .*-ssl"";
    }
}

以下配置语句被拒绝:

  • 系统服务 XNM-SSL

ssh

[edit system]
login {
    class test {
        permissions configure;
        allow-configuration .*;
        deny-configuration ".*ssh";
    }
}
[edit system]
login {
    class test {
        permissions configure;
        allow-configuration .*;
        deny-configuration-regexps ".*ssh";
        deny-configuration-regexps ".* .*ssh";
        deny-configuration-regexps ".* .* .*ssh";
    }
}

以下配置语句被拒绝:

  • 系统主机名 主机名-SSH

  • 系统服务 SSH

  • 系统服务出站 SSH

  • 安全 SSH 已知主机

尽管在需要简单配置时,这些 allow/deny-configuration 语句也很有用,但这些 allow/deny-configuration-regexps 语句可提供更好的性能,并克服在语句中 allow/deny-configuration 组合表达式时存在的歧义。

在远程授权服务器上使用正则表达式

您可以使用扩展正则表达式来指定允许或拒绝某些用户的作模式和配置模式命令以及配置语句和层次结构。您可以在层次结构级别的本地 、 allow/deny-commandsallow/deny-configurationallow/deny-commands-regexpsallow/deny-configuration-regexps 语句[edit system login class class-name]中指定这些正则表达式。您可以通过在授权服务器配置中指定瞻博网络供应商特定的 TACACS+ 或 RADIUS 属性来远程指定这些正则表达式。在本地和远程配置授权参数时,设备会将 TACACS+ 或 RADIUS 授权期间收到的正则表达式与本地设备上定义的任何正则表达式合并。

使用 allow-commandsdeny-commandsallow-configurationdeny-configuration 语句在本地配置中指定多个正则表达式时,请在括号内配置正则表达式,并使用竖线符号将它们分隔开。用双引号将完整表达式括起来。例如,您可以使用以下语法指定多个 allow-commands 参数:

RADIUS 授权服务器使用以下属性和语法:

TACACS+ 授权服务器使用以下属性和语法:

使用 allow-commands-regexpsdeny-commands-regexpsallow-configuration-regexpsdeny-configuration-regexps 语句在本地配置中指定多个正则表达式时,需要配置双引号内的正则表达式,并使用空格运算符将它们分隔开来。将完整的表达式括在方括号中。例如,您可以使用以下语法指定多个 allow-commands 参数:

RADIUS 授权服务器使用以下属性和语法:

TACACS+ 授权服务器使用以下属性和语法:

RADIUS 和 TACACS+ 服务器还支持简化语法,即在单独的行上指定每个单独的表达式。例如,RADIUS 服务器的简化语法为:

同样,TACACS+ 服务器的简化语法为:

表 3 使用正则表达式区分了本地授权配置和 TACACS+ 服务器授权配置。

表 3:使用正则表达式的本地和远程授权配置示例

本地配置

远程 TACACS+ 配置

login {
    class local {
        permissions configure;
        allow-commands "(ping .*)|(traceroute .*)|(show .*)|(configure .*)|(edit)|(exit)|(commit)|(rollback .*)";
        deny-commands .*;
        allow-configuration "(interfaces .* unit 0 family ethernet-switching vlan mem.* .*)|(interfaces .* native.* .*)|(interfaces .* unit 0 family ethernet-switching interface-mo.* .*)|(interfaces .* unit .*)|(interfaces .* disable)|(interfaces .* description .*)|(vlans .* vlan-.* .*)"
        deny-configuration .*;
    }
}
user = remote {
    login = username
    service = junos-exec {
        allow-commands1 = "ping .*"
        allow-commands2 = "traceroute .*"
        allow-commands3 = "show .*"
        allow-commands4 = "configure"
        allow-commands5 = "edit"
        allow-commands6 = "exit"
        allow-commands7 = "commit"
        allow-commands8 = ".*xml-mode"
        allow-commands9 = ".*netconf.*"
        allow-commands10 = ".*need-trailer"
        allow-commands11 = "rollback.*"
        allow-commands12 = "junoscript"
        deny-commands1 = ".*"
        allow-configuration1 = "interfaces .* unit 0 family ethernet-switching vlan mem.* .*"
        allow-configuration2 = "interfaces .* native.* .*"
        allow-configuration3 = "interfaces .* unit 0 family ethernet-switching interface-mo.* .*"
        allow-configuration4 = "interfaces .* unit .*"
        allow-configuration5 = "interfaces .* disable"
        allow-configuration6 = "interfaces .* description .*"
        allow-configuration7 = "interfaces .*"
        allow-configuration8 = "vlans .* vlan-.* .*"
        deny-configuration1 = ".*"
        local-user-name = local-username
        user-permissions = "configure"
    }
}
注意:
  • 您需要通过发出以下三个命令 xml-mode来明确允许对 NETCONF 模式的本地或远程访问:、 netconfneed-trailer

  • 使用语 deny-configuration = ".*" 句时,必须允许使用该 allow-configuration 语句进行所有所需的配置。但是,此配置可能会影响语句允许的正则表达式缓冲区限制 allow-configuration 。如果超过此限制,则允许的配置可能无法正常工作。

指定正则表达式

警告:

为命令和配置语句指定正则表达式时,请密切注意以下示例。语法无效的正则表达式可能无法生成所需的结果,即使配置已提交且没有任何错误也是如此。

您应像执行完整命令或语句一样,为命令和配置语句指定正则表达式。 表 4 列出了用于配置 [edit interfaces][edit vlans] 语句层次结构的访问权限的正则表达式。

表 4:指定正则表达式

陈述

正则表达式

配置说明

[edit interfaces]

set接口命令按如下方式执行:

[edit]
user@host# set interfaces interface-name unit interface-unit-number

set interfaces 句本身是不完整的,需要执行语句的 unit 选项。

因此,拒绝 set interfaces 配置所需的正则表达式必须指定整个可执行字符串, .* 并使用运算符代替语句变量:

[edit system login class class-name]
user@host# set permissions configure
user@host# set deny-configuration "interfaces .* unit .*"
  • .*运算符表示从指定点开始为该特定命令或语句的所有内容。在此示例中,它表示具有任何单位值的任何接口名称。

  • deny-configuration "interfaces .*" 指定语句是不正确的,并且不会拒绝对指定登录类的接口配置的访问。

  • 其他有效选项可以包含在正则表达式中。例如:

    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set deny-configuration "interfaces .* description .*"
    
    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration-regexps [ "interfaces .* description .*" "interfaces .* unit .* description .*" "interfaces .* unit .* family inet address .*" "interfaces.* disable" ]
    
    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration "interfaces .* unit 0 family ethernet-switching vlan mem.* .*"
    

    注意: mem.* 当指定的正则表达式中应包含以关键字开头的 mem 多个字符串时,将使用此示例中的正则表达式。当预期只包含一个 member 字符串时, member .* 将使用正则表达式。

[edit vlans]

set用于 VLAN 的命令按如下方式执行:

[edit]
user@host# set vlans vlan-name vlan-id vlan-id

此处, set vlans 语句本身是不完整的,需要执行语句的 vlan-id 选项。

因此,允许 set vlans 配置所需的正则表达式必须指定整个可执行字符串, .* 并使用运算符代替语句变量:

[edit system login class class-name]
user@host# set permissions configure
user@host# set allow-configuration "vlans .* vlan-id .*"
  • .*运算符表示从指定点开始为该特定命令或语句的所有内容。在此示例中,它表示具有任何 VLAN ID 的任何 VLAN 名称。

  • 语句层次结构下 [edit vlans] 的其他有效选项可以包含在正则表达式中。例如:

    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration-regexps [ "vlans .* vlan-id .*" "vlans .* vlan-id .* description .*" "vlans .* vlan-id .* filter .*" ]
    

正则表达式运算符

表 5 列出了可用于允许或拒绝作和配置模式的常用正则表达式运算符。

命令正则表达式实现 POSIX 1003.2 中定义的扩展(现代)正则表达式。

表 5:常用正则表达式运算符

算子

火柴

|

用竖线分隔的两个或多个术语之一。每个术语必须是括在括号 ( ) 中的完整独立表达式,管道和相邻括号之间不能有空格。

[edit system login class test]
user@host# set permissions configure
user@host# set allow-commands "(ping)|(traceroute)|(show system alarms)|(show system software)"
user@host# set deny-configuration "(access)|(access-profile)|(accounting-options)|(applications)|(apply-groups)|(bridge-domains)|(chassis)|(class-of-service)"

在上述配置中,分配给测试登录类的用户的作模式访问仅限于语句中 allow-commands 指定的命令。它们还可以访问配置模式,语句中指定的 deny-configuration 层次结构级别除外。

^

在表达式的开头,用于表示命令的开始位置,其中可能存在一些歧义。

[edit system login class test]
user@host# set permissions interface
user@host# set permissions interface-control
user@host# set allow-commands "(^show) (log|interfaces|policer))|(^monitor)"

使用上述配置,分配给测试登录类的用户有权查看和配置接口配置。语 allow-commands 句授予对以 showmonitor 关键字开头的命令的访问权限。

对于第一个筛选器,指定的命令包括 show logshow interfacesshow policer 命令。第二个筛选器指定以 monitor 关键字开头的所有命令,如 或 monitor interfaces 命令 monitor traffic

$

命令末尾的字符。用于表示在该点之前必须完全匹配的命令。

[edit system login class test]
user@host# set permissions interface
user@host# set allow-commands "(show interfaces$)"

使用上述配置,分配给测试登录类的用户可以在配置模式下查看接口配置。用户也可使用 show configuration 作模式命令查看接口配置。但是,语句中 allow-commands 指定的正则表达式会限制用户只能执行命令, show interfaces 并拒绝访问命令扩展名(如 show interfaces detailshow interfaces extensive)。

[ ]

字母或数字的范围。要分隔区域的开始和结束,请使用连字符 ( - )。

[edit system login class test]
user@host# set permissions clear
user@host# set permissions configure
user@host# set permissions network
user@host# set permissions trace
user@host# set permissions view
user@host# set allow-configuration-regexps [ "interfaces [gx]e-.* unit [0-9]* description .*" ]

在上述配置中,分配给测试登录类的用户具有作员级别的用户权限。这些用户还可以在指定的接口名称和单元号(0 到 9)范围内配置接口。

( )

一组命令,指示要计算的完整独立表达式。然后将结果作为整体表达式的一部分进行评估。如前所述,括号必须与管道作员一起使用。

[edit system login class test]
user@host# set permissions all
user@host# set allow-commands "(clear)|(configure)"
user@host# deny-commands "(mtrace)|(start)|(delete)"

通过上述配置,分配给测试登录类的用户将具有超级用户级别的权限,并有权访问语句中 allow-commands 指定的命令。

*

零项或多项。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m*)"

使用上述配置时,分配到其登录用户名开头 m 的测试登录类的用户将被拒绝配置访问。

+

一个或多个术语。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m+)"

使用上述配置时,分配到其登录用户名开头 m 的测试登录类的用户将被拒绝配置访问。

.

除空格“”之外的任何字符。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m.)"

使用上述配置时,分配到其登录用户名开头 m 的测试登录类的用户将被拒绝配置访问。

.*

从指定点开始的一切。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m .*)"

使用上述配置时,分配到其登录用户名开头 m 的测试登录类的用户将被拒绝配置访问。

同样,该 deny-configuration "protocols .*" 语句拒绝层级下的所有配置访问 [edit protocols]

注意:
  • *. 运算可以通过使用 .*来实现。 +

  • deny-commands .*deny-configuration .* 语句分别拒绝对所有作模式命令和配置层次结构的访问。

注意:

不支持正 ! 则表达式运算符。

正则表达式示例

表 6 列出了用于在两个配置层次结构下允许配置选项的正则表达式 —[edit system ntp server][edit protocols rip]— 作为指定正则表达式的示例。

注意:

表 6 未提供所有配置语句和层次结构的所有正则表达式和关键字的完整列表。表中列出的正则表达式仅针对 [edit system ntp server][edit protocols rip] 语句层次结构进行验证。

表 6:正则表达式示例

语句层次结构

正则表达式

允许的配置

被拒绝的配置

[edit system ntp server]

     

钥匙 key-number

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* key .*" ]
set deny-configuration-regexps [ "system ntp server .* version .*" "system ntp server .* prefer" ]
  • 服务器 IP

  • 服务器 IP 和密钥

  • 版本

  • 喜欢

版本 version-number

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* version .*" ]
set deny-configuration-regexps [ "system ntp server .* key .*" "system ntp server .* prefer" ]
  • 服务器 IP

  • 服务器 IP 和版本

  • 钥匙

  • 喜欢

喜欢

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* prefer" ];
set deny-configuration-regexps [ "system ntp server .* key .*" "system ntp server .* version .*" ]
  • 服务器 IP

  • 服务器 IP 和首选

  • 钥匙

  • 版本

[edit protocols rip]

     

消息大小 message-size

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip message-size .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip route-timeout .*" "protocols rip update-interval .*" ]
  • 消息大小

  • 指标输入

  • 路由超时

  • 更新间隔

指标输入 metric-in

[edit system login class test]
set permissions configure
set  allow-configuration-regexps "protocols rip metric-in .*"
set  deny-configuration-regexps [ "protocols rip message-size .*" "protocols rip route-timeout .*" "protocols rip update-interval .*" ]
  • 指标输入

  • 消息大小

  • 路由超时

  • 更新间隔

路由超时 route-timeout

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip route-timeout .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip message-size .*" "protocols rip update-interval .*" ]
  • 路由超时

  • 消息大小

  • 指标输入

  • 更新间隔

更新间隔 update-interval

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip update-interval .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip route-timeout .*" "protocols rip message-size .*" ]
  • 更新间隔

  • 消息大小

  • 指标输入

  • 路由超时

如何使用允许配置和拒绝配置语句定义访问权限

您可以通过使用以下类型的语句的组合来定义配置语句层次结构的访问权限:

  • 权限标志

  • allow-configurationdeny-configuration 语句

权限标志定义了人员或登录类可以访问和控制的内容的更大边界。 allow-configurationdeny-configuration 语句包含一个或多个正则表达式,用于允许或拒绝特定的配置层次结构和语句。 allow-configurationdeny-configuration 语句优先于权限标志,使管理员能够更精细地控制用户可以查看和配置的层次结构和语句。

本主题通过显示使用和 语句的登录名类配置示例,说明如何使用和 deny-configuration 语句定义访问权限allow-configuration。示例 1 到 3 创建的登录类允许用户访问除语句中deny-configuration定义的命令和语句之外的所有命令和语句。

请注意, 权限位权限标志 可以互换使用。

示例 1

要创建允许用户执行所有命令并配置除 telnet 参数之外的所有内容的登录类,请执行以下作:

  1. 将用户的登录类权限设置为 all
  2. 包括以下 deny-configuration 语句。

示例 2

要创建一个登录类,使用户能够执行所有命令并配置名称以“m”开头的任何登录类中除语句之外的所有内容:

  1. 将用户的登录类权限设置为 all

  2. 包括以下 deny-configuration 语句。

示例 3

要创建允许用户执行所有命令并配置除 或 [edit system services] 层次结构级别之外[edit system login class]的所有内容的登录类,请执行以下作:

  1. 将用户的登录类权限设置为 all

  2. 包括以下 deny-configuration 语句:

以下示例演示如何使用 allow-configurationdeny-configuration 语句来确定层次结构级别中彼此 [edit system services] 相反的权限。

示例 4

要创建仅允许用户在 [edit system services] 层次结构级别拥有完全配置权限的登录类,请执行以下作:

  1. 将用户的登录类权限设置为 configure

  2. 包括以下 allow-configuration 语句:

示例 5

要创建允许用户对除层次结构级别之外 [edit system services] 的所有命令和所有配置层次结构具有完全权限的登录类,请执行以下作:

  1. 将用户的登录类权限设置为 all

  2. 包括以下 deny-configuration 语句。

示例:使用带有正则表达式的加法逻辑来指定访问权限

此示例说明在使用正则表达式设置配置访问权限时如何使用加法逻辑。

要求

配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

您可以定义正则表达式来控制哪些人可以对配置进行更改以及可以更改哪些内容。这些正则表达式指示允许登录类中的用户访问的特定配置层次结构。例如,您可以定义允许用户修改一组路由实例的正则表达式,并定义阻止用户对任何其他路由实例或其他配置级别进行更改的正则表达式。可以通过配置 allow-configuration-regexps 登录类的和 deny-configuration-regexps 语句来定义正则表达式。

默认情况下, deny-configuration-regexps 语句优先于 allow-configuration-regexps 语句。如果配置层次结构出现在登录名类的语句中 deny-configuration-regexps ,则无论该 allow-configuration-regexps 语句的内容如何,该配置层次结构对该类中的用户都不可见。如果配置层次结构未出现在语句中 deny-configuration-regexps ,那么如果该配置层次结构出现在语句中 allow-configuration-regexps ,则该类中的用户可以看到该层次结构。

您可以通过为 *-configuration-regexps 语句启用加法逻辑来更改此默认行为。启用加法逻辑时, allow-configuration-regexps 语句优先于 deny-configuration-regexps 语句。

因此,如果 deny-configuration-regexps 语句拒绝访问给定级别(协议 .*)的所有配置层次结构,但语 allow-configuration-regexps 句允许访问一个子层次结构(协议 bgp .*),则默认情况下,设备会拒绝该登录类中用户访问层次结构,因为 deny-configuration-regexps 语句优先。但是,如果启用附加逻辑,设备将允许该登录类中的用户访问指定的子层次结构,因为在这种情况下优先 allow-configuration-regexps

配置

分步过程

要启用附加逻辑以显式允许给定登录类中的用户访问一个或多个单独的配置层次结构,请执行以下作:

  1. 包含 deny-configuration-regexps 语句,并显式拒绝对配置层次结构的访问。

    例如:

  2. 包括 allow-configuration-regexps 语句,并为要允许的特定层次结构定义正则表达式。

    例如:

  3. 启用 allow-configuration-regexpsdeny-configuration-regexps 正则表达式的加法逻辑。

  4. 将登录名类分配给一个或多个用户。

  5. 提交更改。

    分配给此登录类的用户有权访问语句中 allow-configuration-regexps 包含的配置层次结构,但无权访问语句中 deny-configuration-regexps 指定的其他层次结构。

注意:

配置 regex-additive-logic 语句时,行为更改将应用于所有登录名类中存在的所有 allow-configuration-regexpsdeny-configuration-regexps 语句。如果启用加法逻辑,则应评估现有语句是否存在任何影响,并根据需要更新这些语句中的正则表达式。

例子

使用带有加法逻辑的正则表达式

目的

本节提供正则表达式的示例,这些正则表达式使用加法逻辑为您提供创建适合您的系统的配置的想法。

允许特定路由实例

下面的示例登录类包含一个正则表达式,该表达式允许配置名称以 CUST-VRF-;开头的路由实例,例如、CUST-VRF-1CUST-VRF-25CUST-VRF-100、等。该示例还包括一个正则表达式,用于防止配置任何路由实例。

默认情况下, deny-configuration-regexps 语句优先,并且之前的配置会阻止登录名类中的用户配置任何路由实例(无论其名称如何)。

但是,如果配置以下语句,则语 allow-configuration-regexps 句优先。因此,用户可以配置名称以 CUST-VRF-开头的路由实例,但用户不能配置任何其他路由实例。

仅允许 BGP 对等方配置

以下示例登录类包含阻止在 [edit protocols] 层次结构级别进行配置但允许配置 BGP 对等方的正则表达式:

默认情况下,先前的配置可防止登录类中的用户对 下的任何层次结构 [edit protocols]进行更改。

但是,如果配置以下语句,则登录类中的用户可以对 BGP 对等方进行更改,但用户不能在允许的层次结构级别之外配置其他协议或其他 BGP 语句。

验证

要验证是否正确设置了访问权限,请执行以下作:

  1. 配置登录类并提交更改。

  2. 将登录类 username分配给 .

  3. username 分配的新登录类的身份登录。

  4. 尝试配置允许的层次结构级别。

    • 您应该能够在允许的层次结构级别中配置语句。

    • 被拒绝的层次结构级别不应可见。

    • 任何允许或拒绝的表达式都应优先于通过 permissions 语句授予的任何权限。

示例:使用作模式命令的访问权限配置用户权限

此示例说明如何为作模式命令配置自定义登录类和分配访问权限。登录类中的用户只能执行他们有权访问的命令。这样可以防止未经授权的用户执行可能对网络造成损坏的敏感命令。

要求

此示例使用以下硬件和软件组件:

  • 一台瞻博网络设备

  • 一台 TACACS+(或 RADIUS)服务器

开始之前,在设备和 TACACS+ 服务器之间建立 TCP 连接。如果是 RADIUS 服务器,请在设备和 RADIUS 服务器之间建立 UDP 连接。

概述和拓扑

图 1 展示了一个简单的拓扑,其中路由器 R1 是瞻博网络设备,与 TACACS+ 服务器建立了 TCP 连接。

图 1:拓扑 Topology

此示例使用三个自定义登录类配置 R1:Class1、Class2 和 Class3。每个类都通过配置permissions语句并使用和 deny-commands 语句定义扩展正则表达式allow-commands来定义用户的访问权限。

每个登录类的目的如下:

  • Class1- 仅使用 allow-commands 语句定义用户的访问权限。此登录类提供用于重新启动设备的作员级用户权限和授权。

  • Class2- 仅使用 deny-commands 语句定义用户的访问权限。此登录类提供作员级别的用户权限,并拒绝对 set 命令的访问。

  • Class3- 定义同时使用allow-commandsdeny-commands 语句的用户的访问权限。此登录类提供超级用户级别的用户权限和授权,用于访问接口和查看设备信息。它还拒绝对和 configure 命令的edit访问。

路由器 R1 有三个不同的用户,User1、User2 和 User3,分别分配给 Class1、Class2 和 Class3 登录类。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit] 级的 CLI 中,然后进入 commit 配置模式。

R1

配置路由器 R1 的认证参数

分步过程

要配置路由器 R1 身份验证,请执行以下作:

  1. 配置 R1 尝试对用户进行身份验证的顺序。在此示例中,首先是 TACACS+ 服务器身份验证,然后是 RADIUS 服务器身份验证,然后是本地密码。

  2. 配置 TACACS+ 服务器。

  3. 配置 RADIUS 服务器。

  4. 配置 R1 计费参数。

使用 allow-commands 语句配置访问权限 (Class1)

分步过程

要使用语 allow-commands 句指定正则表达式:

  1. 配置 Class1 登录类并分配作员级用户权限。

  2. 配置 allow-commands 正则表达式,使类中的用户能够重新启动设备。

  3. 为 Class1 登录类配置用户帐户。

使用 deny-commands 语句配置访问权限 (Class2)

分步过程

要使用语 deny-commands 句指定正则表达式:

  1. 配置 Class2 登录类并分配作员级别的用户权限。

  2. 配置 deny-commands 正则表达式以防止类中的用户执行 set 命令。

  3. 为 Class2 登录类配置用户帐户。

使用 allow-commands 和 deny-commands 语句配置访问权限 (Class3)

分步过程

要同时 allow-commands 使用 和 deny-commands 语句指定正则表达式:

  1. 配置 Class3 登录类并分配超级用户级别的权限。

  2. 配置 deny-commands 正则表达式以防止类中的用户执行任何命令。

  3. 配置 allow-commands 正则表达式以允许用户进入配置模式。

  4. 为 Class3 登录类配置用户帐户。

结果

在配置模式下,输入 show system 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

验证

以分配了新登录名类的用户名登录,并确认配置工作正常。

验证 class1 配置

目的

验证 Class1 登录类中允许的权限和命令是否正常工作。

行动

在作模式下,运行 show system users 命令。

在作模式下,运行 request system reboot 命令。

意义

User1 分配到的 Class1 登录类具有作员级别的用户权限,并允许该类中的用户执行 request system reboot 命令。

预定义的作员登录类指定了以下权限标志:

  • clear—可以使用 clear 命令清除(删除)设备从网络中学习并存储在各种网络数据库中的信息。

  • network- 可以使用、pingsshtelnettraceroute命令访问网络。

  • reset- 可以使用 restart 命令重新启动软件进程。

  • trace- 可以查看追踪文件设置并配置追踪文件属性。

  • view—可以使用各种命令显示当前系统范围的路由表以及特定于协议的值和统计信息。无法查看机密配置。

对于 Class1 登录类,除了上述用户权限外,User1 还可以执行命令 request system reboot 。第一个输出显示作为作员的查看权限,第二个输出显示 User1 可以作为作员执行的唯一 request system 命令是 request system reboot 命令。

验证 Class2 配置

目的

验证 Class2 登录类允许的权限和命令是否正常工作。

行动

在作模式下,运行 ping 命令。

从 CLI 提示符中,检查可用的命令。

从 CLI 提示符,执行任意 set 命令。

意义

User2 被分配到的 Class2 登录类具有作员级别的用户权限,并拒绝访问所有 set 命令。

为预定义的作员登录类指定的权限标志与为 Class1 指定的权限标志相同。

验证 Class3 配置

目的

验证 Class3 登录类允许的权限和命令是否正常工作。

行动

在作模式下,检查可用命令。

进入配置模式。

意义

User3 分配到的 Class3 登录类具有超级用户 (all) 权限,但此类仅允许用户执行 configure 命令。该类拒绝访问所有其他作模式命令。由于语句中 allow/deny-commands 指定的正则表达式优先于用户权限,因此 R1 上的 User3 只能访问配置模式,并拒绝访问所有其他作模式命令。

示例:使用配置语句和层次结构的访问权限配置用户权限

此示例说明如何配置自定义登录类,以及如何为特定配置层次结构分配访问权限。登录类中的用户只能查看和修改他们有权访问的那些配置语句和层次结构。这样可以防止未经授权的用户修改可能导致网络损坏的设备配置。

要求

此示例使用以下硬件和软件组件:

  • 一台瞻博网络设备

  • 一台 TACACS+(或 RADIUS)服务器

开始之前,在设备和 TACACS+ 服务器之间建立 TCP 连接。如果是 RADIUS 服务器,请在设备和 RADIUS 服务器之间建立 UDP 连接。

概述和拓扑

图 2 展示了一个简单的拓扑,其中路由器 R1 是瞻博网络设备,与 TACACS+ 服务器建立了 TCP 连接。

图 2:拓扑 Topology

此示例使用两个自定义登录类配置 R1:Class1 和 Class2。每个类都通过配置permissions语句并使用、deny-configurationallow-configuration-regexpsdeny-configuration-regexps语句定义扩展正则表达式allow-configuration来定义用户的访问权限。

每个登录类的目的如下:

  • Class1- 使用 allow-configurationdeny-configuration 语句定义用户的访问权限。此登录名类仅提供用于配置层次结构的访问权限 [edit interfaces] ,并拒绝设备上的所有其他访问权限。为此,用户权限包括 configure 提供配置访问权限。此外,该 allow-configuration 语句允许访问接口配置,并且该 deny-configuration 语句拒绝访问所有其他配置层次结构。由于 allow 语句优先于 deny 语句,因此分配给 Class1 登录类的用户只能 [edit interfaces] 访问层次结构级别。

  • Class2- 使用 allow-configuration-regexpsdeny-configuration-regexps 语句定义用户的访问权限。此登录名类提供超级用户级别的用户权限,并显式允许在多个层级下对接口进行配置。它还拒绝对 [edit system][edit protocols] 层次结构级别的访问。

路由器 R1 有两个用户(User1 和 User2),分别分配给 Class1 和 Class2 登录类。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit] 级的 CLI 中,然后进入 commit 配置模式。

R1

配置路由器 R1 的认证参数

分步过程

要配置路由器 R1 身份验证,请执行以下作:

  1. 配置 R1 尝试对用户进行身份验证的顺序。在此示例中,首先是 TACACS+ 服务器身份验证,然后是 RADIUS 服务器身份验证,然后是本地密码。

  2. 配置 TACACS+ 服务器。

  3. 配置 RADIUS 服务器。

  4. 配置 R1 计费参数。

使用 allow-configuration 和 deny-configuration 语句配置访问权限 (Class1)

分步过程

要使用 allow-configurationdeny-configuration 语句指定正则表达式:

  1. 使用 configure 权限配置 Class1 登录类。

  2. 配置 allow-configuration 正则表达式,以允许类中的用户查看和修改层次结构级别的部分 [edit interfaces]

  3. 配置正 deny-configuration 则表达式以拒绝访问所有配置层次结构。

  4. 为 Class1 登录类配置用户帐户。

使用 allow-configuration-regexps 和 deny-configuration-regexps 语句 (class2) 配置访问权限

分步过程

要使用 allow-configuration-regexpsdeny-configuration-regexps 语句指定正则表达式:

  1. 配置 Class2 登录类并分配超级用户(所有)权限。

  2. 配置 allow-configuration-regexps 正则表达式,以允许类中的用户访问层次结构级别的多个层次结构 [edit interfaces]

  3. 配置 deny-configuration-regexps 正则表达式以防止类中的用户在 [edit system][edit protocols] 层次结构级别查看或修改配置。

  4. 为 Class2 登录类配置用户帐户。

结果

在配置模式下,输入 show system 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

验证

以分配了新登录名类的用户名登录,并确认配置工作正常。

验证 Class1 配置

目的

验证 Class1 登录类中允许的权限是否正常工作。

行动

在作模式下,检查可用命令。

在配置模式下,检查可用的配置权限。

意义

User1 具有 configure 用户权限,如第一个输出所示。此外,在配置模式下,User1 有权访问 interfaces 层次结构级别,但只能访问该层次结构级别,如第二个输出所示。

验证 Class2 配置

目的

验证 Class2 配置是否按预期工作。

行动

在配置模式下,访问 interfaces 配置。

在配置模式下,访问 systemprotocols 配置层次结构。

意义

用户 2 有权在 R1 上配置接口,但用户无权查看或[edit system][edit protocols]修改层次结构级别。