Go to main content

手册页第 7 部分:标准、环境、宏、字符集和杂项

退出打印视图

更新时间: 2022年7月27日 星期三
 
 

smf_security(7)

名称

smf_security - 服务管理工具的安全行为

描述

服务管理工具 smf(7) 的配置子系统需要修改服务配置的权限。可使用 usermod 命令将下面所述的 rbac(7) 授权和配置文件关联到用户来向用户授予特权。有关更多信息,请参见 usermod(8) 手册页。

以下授权用于处理服务和服务实例。

solaris.smf.modify

有权添加、删除或修改服务、服务实例或其属性以及读取受保护的属性值。

Property Group Authorizations

smf(7) 配置子系统将属性与每个服务和服务实例相关联。相关属性将进行分组。组可以表示执行方法、凭证信息、应用程序数据或重启程序状态。创建或修改属性组的能力可能会导致 smf(7) 组件执行可能需要系统权限的操作。相应地,框架也需要处理属性组的适当权限。

每个属性组都有与其用途相对应的类型。The core property group types are method, dependency, framework, and application (where application is the recommended type for property groups containing application data).The following basic authorizations apply only to the core property group types:

solaris.smf.modify.method

有权更改值或者创建、删除或修改 method 类型的属性组。

solaris.smf.modify.dependency

有权更改值或者创建、删除或修改 dependency 类型的属性组。

solaris.smf.modify.application

有权更改值、读取受保护的值以及创建、删除或修改 application 类型的属性组。

solaris.smf.modify.framework

有权更改值或者创建、删除或修改 framework 类型的属性组。

solaris.smf.modify

有权添加、删除或修改服务、服务实例或其属性以及读取受保护的属性值。

属性组特定的授权可以由包含在该属性组中的属性来指定。

modify_authorization

授权允许在属性组中添加、删除或修改属性以及从受保护的属性组检索属性值。

value_authorization

通常使用 solaris.smf.value.<service> 授权授予修改特定服务的配置的授权。

read_authorization

通常使用同一授权(因为使用它授予写入权限)授予读取受保护属性组的授权,以便仅允许获得写入受保护配置值授权的用户可以读取它们。

上述授权属性仅当具有 astring 类型时才能使用。如果实例属性组没有其中任一属性,但实例的服务具有与该属性同名的属性组,则将使用该属性的值。

受保护的属性组

通常,任何用户无需显式授权即可读取系统信息库中的所有属性值。非 framework 类型的属性组可用于存储其值需要保护的属性。除非具有适当的授权,否则不能公开这些属性组。通过字符串值的 read_authorization 属性存在与否来指示属性组的受保护状态。如果此属性存在,只能按照属性组授权中的说明来检索属性组中的所有属性值。

如果管理域所使用的策略禁止备份被视为敏感的数据,应从其备份中排除 SMF 系统信息库数据库。面临这样的策略时,非受保护的属性值可以使用 svccfg(8) 归档命令进行备份,以创建没有受保护的属性值的系统信息库的归档。

服务操作授权

对服务实例执行的某些操作可能会导致服务中断或停用。这些操作需要授权才能确保任何拒绝服务操作都是有意的管理操作。此类操作包含执行 refresh 或 restart 方法的请求或将服务实例置于维护或其他非运行状态的请求。以下授权允许请求此类操作:

solaris.smf.manage

通常使用 solaris.smf.manage.<service> 授权授予启用、禁用、重新启动、刷新或管理特定服务的授权。

此外,general/action_authorization 属性还可以指定允许对该服务实例请求服务操作的其他授权。需要 solaris.smf.manage 授权才能修改此属性。

定义的权限配置文件

包含了两个权限配置文件,它们可以提供用于处理典型 smf(7) 操作的分组授权。

服务管理

服务管理员可以通过任意方式处理系统信息库中的任何服务。服务管理员与 solaris.smf.managesolaris.smf.modify 授权相对应。

要使用 pkg 命令添加或删除其服务清单文件中包含服务清单的软件包,至少需要服务管理配置文件。

服务操作员

服务操作员能够在系统上启用或禁用任何服务实例以及请求执行其 restart 或 refresh 方法。服务操作员与 solaris.smf.managesolaris.smf.modify.framework 授权相对应。

站点可根据需要定义其他权限配置文件。

远程系统信息库修改

远程系统信息库服务器可能会由于附加权限检查而拒绝修改尝试。请参见“附注”部分。

示例

示例 1 允许用户以非 root 用户的身份修改 system/cron 服务。

通过将以下行添加到 /etc/user_attr 可允许用户 "johndoe" 以非 root 用户身份对 system/cron 服务执行重新启动、启用、禁用或其他状态修改操作。

usermod -A +solaris.smf.manage.cron
示例 2 允许用户以非 root 用户身份修改任意服务上的任意属性以及修改 system/cron 服务。

通过将以下行添加到 /etc/user_attr 可允许用户 "janedoe" 以非 root 用户身份修改任意服务上的任意属性,以及对 system/cron 服务执行重新启动、启用、禁用或其他状态修改操作。

usermod -A +auths=solaris.smf.modify,solaris.smf.manage.cron janedoe

另请参见

auths(1)profiles(1)prof_attr(5)user_attr(5)rbac(7)smf(7)svccfg(8)usermod(8)

附注

smf(7) 的现有版本不支持远程系统信息库。

当服务配置为以 root 身份但以不同于 limit_privileges 的权限启动时,所生成的进程可识别权限。这可能会出乎开发者的意料,他们本以为 seteuid(<非零 UID>) 能够将权限降为基本或更低的级别。