以下四个数据库存储 RBAC 元素的数据:
policy.conf 数据库包含应用于所有用户的授权、权限和权限配置文件。有关更多信息,请参见policy.conf 文件。
每个 RBAC 数据库都使用 key=value 语法存储属性。此方法可以适应将来的数据库扩展。此外,使用此方法,系统可以在遇到其策略未知的关键字时继续运行。key=value 内容将文件链接起来。四个数据库中的以下链接项说明了 RBAC 数据库协同工作的方式。
在以下示例中,通过为用户 jdoe 指定角色 filemgr,使此用户获取文件系统管理配置文件的功能。
在 user_attr 数据库的 jdoe 用户项中为用户 jdoe 指定角色 filemgr。
# user_attr - user definition jdoe::::type=normal;roles=filemgr |
在 user_attr 数据库的角色项中为角色 filemgr 指定权限配置文件文件系统管理。
# user_attr - role definition filemgr::::profiles=File System Management;type=role |
用户和角色在本地系统上的 passwd 和 shadow 文件中(或者在分布式名称服务的等效数据库中)唯一定义。
文件系统管理权限配置文件在 prof_attr 数据库中定义。此数据库还为文件系统管理项指定了三组授权。
# prof_attr - rights profile definitions and assigned authorizations File System Management:::Manage, mount, share file systems: help=RtFileSysMngmnt.html; auths=solaris.admin.fsmgr.*,solaris.admin.diskmgr.*,solaris.admin.volmgr.* |
这些授权在 auth_attr 数据库中定义。
# auth_attr - authorization definitions solaris.admin.fsmgr.:::Mounts and Shares::help=AuthFsmgrHeader.html solaris.admin.fsmgr.read:::View Mounts and Shares::help=AuthFsmgrRead.html solaris.admin.fsmgr.write:::Mount and Share Files::help=AuthFsmgrWrite.html |
在 exec_attr 数据库中为文件系统管理权限配置文件指定带有安全属性的命令。
# exec_attr - rights profile names with secured commands File System Management:suser:cmd:::/usr/sbin/mount:uid=0 File System Management:suser:cmd:::/usr/sbin/dfshares:euid=0 … File System Management:solaris:cmd:::/usr/sbin/mount:privs=sys_mount … |
RBAC 数据库的名称服务范围只能应用于本地主机。此范围还可以包括由 NIS、NIS+ 或 LDAP 之类的名称服务提供服务的所有主机。在 /etc/nsswitch.conf 文件中为每个数据库设置具有优先级的名称服务。
auth_attr 项-设置 auth_attr 数据库的名称服务优先级。
passwd 项-设置 user_attr 数据库的名称服务优先级。
prof_attr 项-设置 prof_attr 数据库的名称服务优先级。此外,还设置 exec_attr 数据库的名称服务优先级。
例如,如果将带有安全属性的命令指定给存在于两个名称服务范围中的权限配置文件,则只会使用第一个名称服务范围中的项。
user_attr 数据库包含补充 passwd 和 shadow 数据库的用户和角色信息。user_attr 数据库包含授权、权限配置文件和指定角色之类的扩展用户属性。 user_attr 数据库中的字段以冒号分隔,如下所示:
user:qualifier:res1:res2:attr |
这些字段具有以下含义:
passwd 数据库中指定的用户或角色的名称。
保留这些字段供将来使用。
以分号 (;) 分隔的关键字-值对的可选列表,用于说明将在用户运行命令时应用的安全属性。四个有效关键字为 type、auths、profiles 和 roles。
如果此帐户属于普通用户,则可以将 type 关键字设置为 normal。如果此帐户属于角色,则 type 是 role。
auths 关键字指定从 auth_attr 数据库中定义的名称中选择的以逗号分隔的授权名称列表。授权名称可以包括星号 (*) 字符作为通配符。例如,solaris.device.* 表示所有的 Solaris 设备授权。
profiles 关键字指定 prof_attr 数据库中排序的逗号分隔权限配置文件名称列表。权限配置文件的排序方式与 UNIX 搜索路径的排序方式类似。列表中包含要执行的命令的第一个配置文件定义将应用于命令的安全属性(如果存在)。
可以通过以逗号分隔的角色名称列表将 roles 关键字指定给用户。请注意,角色在同一 user_attr 数据库中定义。通过将类型值设置为 role 来表示角色。不能将角色指定给其他角色。
以下示例演示了如何在典型的 user_attr 数据库中定义操作员角色。此示例显示了如何将角色指定给用户 jdoe。通过 type 关键字区分角色和用户。
% grep operator /etc/user_attr jdoe::::type=normal;roles=operator operator::::profiles=Operator;type=role |
所有授权都存储在 auth_attr 数据库中。可以将授权指定给用户、角色或权限配置文件。首选方法是将授权放置在权限配置文件中,将配置文件包括在角色的配置文件列表中,然后将角色指定给用户。
auth_attr 数据库中的字段以冒号分隔,如下所示:
authname:res1:res2:short_desc:long_desc:attr |
这些字段具有以下含义:
用于以 prefix.[suffix] 格式标识授权的唯一字符串。Solaris OS 的授权使用 solaris 作为前缀。所有其他授权应使用与创建授权的组织的 Internet 域名顺序相反的名称开头的前缀(例如,com.xyzcompany)。后缀指示要授权的内容,通常是功能区域和操作。
当 authname 由前缀和功能区域组成并以句点结束时,authname 将用作应用程序 GUI 中使用的标题。由两部分组成的 authname 不是实际授权。authname 的值 solaris.printmgr. 便是一个标题示例。
当 authname 以单字 "grant" 结束时,authname 将用作授予授权。使用授予授权,用户可以将具有相同前缀和功能区域的授权委托给其他用户。authname 的值 solaris.printmgr.grant 便是一个授予授权示例。solaris.printmgr.grant 授予用户将 solaris.printmgr.admin 和 solaris.printmgr.nobanner 之类的授权委托给其他用户的权限。
保留以供将来使用。
授权的短名称。此短名称适于在用户界面中(如 GUI 中的滚动列表中)显示。
详细说明。此字段标识授权的目的、使用授权的应用程序以及可能使用授权的用户类型。可以在应用程序的帮助文本中显示详细说明。
以分号 (;) 分隔的关键字-值对的可选列表,用于说明授权属性。可以指定零个或多个关键字。
关键字 help 标识 HTML 形式的帮助文件。可以通过 /usr/lib/help/auths/locale/C 目录中的 index.html 文件访问帮助文件。
以下示例显示了带有一些典型值的 auth_attr 数据库:
% grep printer /etc/security/auth_attr solaris.admin.printer.:::Printer Information::help=AuthPrinterHeader.html solaris.admin.printer.delete:::Delete Printer Information::help=AuthPrinterDelete.html solaris.admin.printer.modify:::Update Printer Information::help=AuthPrinterModify.html solaris.admin.printer.read:::View Printer Information::help=AuthPrinterRead.html |
请注意,solaris.admin.printer. 被定义为标题,这是因为授权名称以点 (.) 结束。GUI 使用标题组织授权系列。
prof_attr 数据库存储名称、说明、帮助文件的位置以及指定给权限配置文件的授权。指定给权限配置文件的命令和安全属性存储在 exec_attr 数据库中。有关更多信息,请参见exec_attr 数据库。prof_attr 数据库中的字段以冒号分隔,如下所示:
profname:res1:res2:desc:attr |
这些字段具有以下含义:
权限配置文件的名称。权限配置文件名称区分大小写。user_attr 数据库也使用此名称指示指定给角色和用户的配置文件。
保留以供将来使用。
详细说明。此字段应介绍权限配置文件的目的,包括有兴趣使用此配置文件的用户类型。详细说明适于在应用程序的帮助文本中显示。
以分号 (;) 分隔的关键字-值对的可选列表,用于说明在执行时应用于对象的安全属性。可以指定零个或多个关键字。两个有效关键字为 help 和 auths。
关键字 help 标识 HTML 形式的帮助文件。可以通过 /usr/lib/help/auths/locale/C 目录中的 index.html 文件访问帮助文件。
关键字 auths 指定从 auth_attr 数据库中定义的那些名称中选择的以逗号分隔的授权名称列表。可以使用星号 (*) 字符作为通配符来指定授权名称。
以下示例显示了两个典型的 prof_attr 数据库项。请注意,打印机管理权限配置文件是操作员权限配置文件的补充权限配置文件。根据显示的需要,另起一行来显示此示例。
% grep 'Printer Management' /etc/security/prof_attr Printer Management::: 权限配置文件的名称 Manage printers, daemons, spooling: 说明 help=RtPrntAdmin.html; 帮助文件 auths=solaris.admin.printer.read, 授权 solaris.admin.printer.modify,solaris.admin.printer.delete ... Operator::: 权限配置文件的名称 Can perform simple administrative tasks: 说明 profiles=Printer Management, 补充权限配置文件 Media Backup,All; help=RtOperator.html 帮助文件 |
exec_attr 数据库定义需要安全属性才能成功运行的命令。这些命令是权限配置文件的一部分。具有安全属性的命令可以由为其指定了此配置文件的角色运行。
exec_attr 数据库中的字段以冒号分隔,如下所示:
name:policy:type:res1:res2:id:attr |
这些字段具有以下含义:
权限配置文件的名称。权限配置文件名称区分大小写。该名称指的是 prof_attr 数据库中的配置文件。
与此项相关联的安全策略。目前,suser 和 solaris 是有效项。solaris 策略可识别权限,而 suser 策略则不能。
指定的实体类型。目前,唯一有效的实体类型是 cmd(命令)。
保留以供将来使用。
标识实体的字符串。命令应该具有全路径或带有通配符 (*) 的路径。要指定参数,请编写具有这些参数的脚本并使 id 指向此脚本。
以分号 (;) 分隔的关键字-值对的可选列表,用于说明将在执行时应用于实体的安全属性。可以指定零个或多个关键字。有效关键字的列表取决于强制执行的策略。
对于 suser 策略,四个有效关键字为 euid、uid、egid 和 gid。
euid 和 uid 关键字包含单个用户名或数字用户 ID (user ID, UID)。通过 euid 指定的命令使用提供的 UID 运行,这与在可执行文件上设置 setuid 位类似。通过 uid 指定的命令使用实际 UID 和有效 UID 运行。
egid 和 gid 关键字包含单个组名或数字组 ID (group ID, GID)。通过 egid 指定的命令使用提供的 GID 运行,这与在可执行文件上设置 setgid 位类似。通过 gid 指定的命令使用实际 GID 和有效 GID 运行。
对于 solaris 策略,有效关键字为 privs。值由以逗号分隔的权限列表组成。
以下示例显示了 exec_attr 数据库中的一些典型值:
% grep 'File System Management' /etc/security/exec_attr File System Management:suser:cmd:::/usr/sbin/ff:euid=0 File System Management:solaris:cmd:::/usr/sbin/mount:privs=sys_mount … |
policy.conf 文件提供了向所有用户授予特定权限配置文件、特定授权和特定权限的方法。文件中的相关项由 key=value 对组成:
以下示例显示了 policy.conf 数据库中的一些典型值:
# grep AUTHS /etc/security/policy AUTHS_GRANTED=solaris.device.cdrw # grep PROFS /etc/security/policy PROFS_GRANTED=Basic Solaris User # grep PRIV /etc/security/policy #PRIV_DEFAULT=basic #PRIV_LIMIT=all |
有关权限的更多信息,请参见权限(概述)。