维持管理安全性和控制是每个网络环境最重要的部份。了解这点之后, Solaris 8 作业环境可以让最资深的管理员(被授予「主要管理员」权利者)为其它所有的管理员提供执行他们的工作所需的工具和指令,同时还能限制那些管理员访问其它工具和指令的权利。
本单元描述权利(管理工具的"单位")、如何授予或拒绝管理员的权利、包括在 Solaris 中的权利描述以及如何创建新权利。
权利是一个名称集合,包括三个元件:指令、使用特定应用程序(或执行应用程序内的特定功能)的授权以及以前创建的其它权利。管理员可以被授予或拒绝权利。(在 Solaris 的其它地方,权利也称为 "执行概述文件"。)能够查看数据的能力也是一个权利;依照缺省,所有可以登录的用户(被成功认证)都有权利可以查看大部份的数据。
利用授予或拒绝权利,资深管理员可以允许其它管理员通过 GUI(菜单项目、对话框、图标等等)和命令行来执行特定的管理工作。
过去,控制管理权利一直都是一个问题,因为传统的 UNIX 系统仅有两种类型的用户:没有管理权利的最终用户(大部份的用户),和拥有所有权利并且可以执行所有管理工作的超级用户(那些知道计算器超级用户 (root) 口令的用户)。过去即使是要执行最简单的管理工作(例如设置系统日期),管理员都必须成为超级用户才可以,因而造成系统被滥用和安全性方面的问题。
Solaris 8 还是继续提供超级用户的权利,不过利用允许资深管理员授予或拒绝个人用户的特定权利来减少安全性的问题。因此可将超级用户 (root) 的所有权利分开,仅将特定的权利授予个别的管理员。
通过「Solaris 管理主控台」(SMC),资深管理员有两种授予权利的方法:
直接将权利指定给用户,用户就可以执行他们的管理权利。
将权利指定给角色。在这种方法中,如果要执行管理工作,用户必须承用角色并放弃他们自己的身分。
角色拥有用户帐户的所有属性 -- 包括名称、用户标识码(UID)、口令、主目录、和特定的管理权利集。不同之处是,角色不用一般的登录 shell,它们会被提供角色 shell(例如,管理员的 Bourne,而不是 Bourne)。您可以将超级用户当成拥有所有权利的角色,而其它角色的权利则限制比较多。
使用「以角色为基础的访问控制」(RBAC),用户会先以他们自己的用户名称和口令登录。然后,SMC 会提供一列他们可以承用的角色清单 -- 角色必须明确地通过「用户帐户」或「管理角色」工具指定。用户可以选择角色、用角色口令登录或者使用自己的用户名称登录。以角色登录时,用户必须放弃其用户身份,反过来接受该角色所有的属性,包括授予该角色的权利。
推荐在较小的网站指定权利给用户,因为这种地方管理员较少,每个都必须执行广范围的管理工作。推荐于大规模网站使用 RBAC,也就是指定权利给角色,因为这种地方管理员很多,每个都有特定的管理工作需要执行。
角色是用「管理角色」工具来进行管理。安装 SMC 后,所有认证过的用户都可以执行「管理角色」工具和读入数据,但是仅有被指定「主要管理员」权利的用户或角色才可以增加角色或指定角色给用户。当「主要管理员」将权利指定给用户和角色之后,任何具有「用户安全性」权利的用户或角色都可以增加、修改或删除角色。
以下的信息仅适用于有权利可以授予权利的用户和角色。没有得到许可方不能看到权利标记。
授予权利给用户
从「用户帐户」工具,在「Solaris 管理主控台」(SMC)的右边窗口中双击 用户的名称。在「用户属性」对话框中,单击「权利」标记,并为该用户增加权利。(另外一个方法是,选择用户的名称并单击「动作」->「指定权利给用户」,然后从打开的对话框选择权利。)
通过角色授予权利
从「管理角色」工具,双击 您要用户承用的角色。通过该角色的「权利」标记指定特定的权利。将用户的名称增加到相同角色的「用户」标记 -- 授予用户承用该角色的权限(另外一个方法是,选择角色并单击「动作」-「指定权利给角色」,再从打开的对话框选择权利。)然后告诉用户在登录 SMC 时承用该角色。
Solaris 作业环境提供成打的名称权利,每个名称都描述权利允许的工作类型 -- 如邮件管理、名称服务管理、用户管理等等。每个权利中都包括执行管理工作的指令,和使用 SMC 应用程序或应用程序的部份来执行那些管理工作所需的授权。
权利可以指定给用户或角色。权利可以被个别指定,这样用户或角色就可以(例如)仅接收执行媒体备份的权利,或者,多重权利可以同时指定给一个用户或角色。
为了指定权利方便起见,个别权利被分成三组整体的权利:主要管理员、系统管理员和操作员。
主要管理员
「主要管理员」有超级用户的所有权利,包括访问所有管理功能、授予权利给其它管理员和创建与更改和管理角色相关之权利的权利。「主要管理员」可以让任何人成为「主要管理员」。或者,「主要管理员」可以授予「权利代表」的权利,这样可以让其它管理员有一定的能力可以将他们已经有的权利或角色授予其它管理员。
当 SMC 和用户管理工具安装在新的服务器上时,完整的用户权利集也会包括在内。但是,不会有用户帐户存在(除了那些包括在 Solaris 作业环境中的特殊帐户),而且没有管理员拥有开始创建用户、指定角色等等所需的权利。
要开始增加群组和用户、指定权利和创建角色,第一个登录「Solaris 管理主控台」(SMC)的管理员一定要在本机系统以超级用户身份登录,然后,赋予他或她自己「主要管理员」的权利。请参阅用户入门。
系统管理员
系统管理员有广泛的权利集,但是没有与安全性相关的权利。因此,举例来说,「系统管理员」可以增加新用户帐户,但是不能更改用户的口令。「系统管理员」也不能将权利授予另外一个用户。
操作者
「操作者」负责媒体备份和打印机管理之类的工作。
依照缺省,不需由管理员明确地将权利指定给用户,任何用户都有权可以在 SMC 工具中列出和读入信息。此缺省授权是通过语句 PROFS_GRANTED=Basic Solaris User
之 /etc/security/policy.conf
文件中的项目提供的。您可以在此行增加权利,再用逗号分隔权利(没有任何空格)。列在 PROFS_GRANTED=
行上的权利会增加给每个用户或角色的权利集。
要拒绝所有用户查看 SMC 信息的能力,请将 PROFS_GRANTED=
设置为空白的。
要预防最终用户使用特定的 SMC 工具,请从「基本 Solaris 用户权利」删除该工具的"读入"授权:
在 SMC 的左边窗口中,打开「系统配置」,然后单击「用户」。
打开「权利」工具并双击
「基本 Solaris 用户」(「权利属性」对话框会打开)。
单击「授权」标记,再于标记下面单击「以名称查看」。
打开「已包括授权」栏中的项目,然后选择您要拒绝的"读入"授权,再单击「删除」。(当您选择每个"读入"授权时,上下文帮助会提供每个授权的描述。)
使用预先定义的权利后,「主要管理员」可能会想要精选权利,为特定的管理员设置定义更狭窄的权利(例如),甚至创建全新的权利。然后,这些权利就可以指定给用户或角色。使用「Solaris 管理主控台」(SMC)中的「权利」工具来自定权利。
创建和修改权利
创建新权利
从 SMC,选择「权利」工具,再单击「动作」-「增加权利」。当「增加权利」对话框打开时,请遵照上下文有关帮助执行。
修改现有的权利
从 SMC,选择「权利」工具,并在右边窗口中双击 权利的名称来打开权利的「属性」对话框。然后,修改各种标记中的信息。
所有在用户承用角色后或通过 SMC 的「传统引导程序」执行的指令都有两种类型的群组 ID(GID)和用户 ID(UID) -- 有效和实际的。
有效用户和群组 ID 用于保护资源的访问控制,而实际用户和群组 ID 则用于创建所有权和责任。例如,当用户创建文件时,文件是用用户的实际用户和群组 ID 创建的,但是打开文件的能力则是根据有效用户和群组 ID 而定的。
在大部份的情况下,有要 ID 就足以授予限制系统资源的访问权。在其它情况下,则需要实际 ID。如果您不确定应该使用哪一个,请先尝试有效的 ID。这种做法和最少特权的原则是一致的,在这种情况下,您仅授予执行工作所需和足够的权利。如果指令不能如预期般执行,那麽就可能需要实际 ID。
不论是以「Solaris 管理主控台」引导、以角色执行、或由「管理员」shell 中的用户执行,指令都是在为该指令创建之实际或有效 UID 和 GID 下执行的。
更改实际和有效 UID 和 GID
从「权利」工具,双击 包含您要更改之指令的权利名称。单击「指令」标记并选择该指令。然后单击「设置安全性属性」。在打开的对话框中,您可在实际和有效用户及群组 ID 之间更改。
使用「权利」工具,您可以增加权利到某个工具,也就是说,相同的指令可以在一个权利中出现不只一次。当 Solaris 在权利中寻找指令时,它会使用找到的第一个指令,和 PATH 变量的作业方式很类似。
例如,在一个权利中,指令 /usr/bin/date
可以用超级用户的有效用户 ID 来指定,但是,在另外一个权利中,该指令则被指定作为最终用户来执行。因此,权利的顺序就变得很重要。最特定和有力的权利应该列为第一个,接著是次要权利,万用字符项目应该保留在清单的最后面。
指定权利给用户和角色时,对于相对能力和权利特定性同样加以注意也是很重要的。
在权利中更改权利的顺序
从「权利」工具,双击 要重新排序的权利名称。当「权利内容」对话框打开时,单击「辅助权利」标记,并使用您所选权利的「上移」和「下移」箭头。
通过 SMC 提供的权利可以让角色和用户以管理员的 shell,同时在 SMC 的图形用户界面和终端或主控台窗口中作业。
要承用角色并在管理员的 shell 中作业,用户应该输入 su
,再输入角色名称,然后才输入角色的口令。用户也可以利用管理员的 shell,在他或她自己的用户帐户下作业 -- 藉由通过「用户属性」对话框,或在最终用户 shell 的命令行中键入 pfsh
、pfcsh
或 pfksh
而被提供 shell。当用户或角色在管理员的 shell 输入指令时,指令必须包括在指定给用户或角色的权利中才可以执行。
指令会在权利项目中的实际或有效 ID 集下执行。
「主要管理员」角色可以被指定给超级用户以外的用户。但是,进行那样的指定之前,为了审计目的,超级用户本身应该先以角色身份被标识(这种标识不是缺省的),这样才可能知道谁承用了超级用户的身份。从命令行中编辑超级用户的 /etc/user_attr
项目,并从 type=normal
将它更改为 type=role
。这样作业完成之后,超级用户就不可以作为登录帐户使用。
欲知更多有关保存「以角色为基础的访问控制」信息的地方,以及数据库之间的关系,请参阅 Solaris 8《系统管理指南》第 2 册。此外,亦请引用 RBAC 联机援助页,从 man rbac
开始。