在 Oracle® Solaris 11.2 中确保用户和进程的安全

退出打印视图

更新时间: 2014 年 7 月
 
 

如何实现特权

每个进程都有四个特权集合,用于确定进程是否可以使用特定特权。内核会自动计算有效特权集合。可以修改初始可继承特权集合。通过编码来使用特权的程序可以减小该程序的允许特权集合。可以缩小限制特权集合。

  • 有效特权集合 (E)-当前生效的特权集合。进程可以将允许特权集合中的特权添加到有效特权集合,也可以从 E 中删除特权。

  • 允许特权集合 (P)-可供使用的特权集合。特权可通过继承或指定供程序使用。执行配置文件便是一种将特权指定给程序的方法。setuid 命令可将 root 具有的所有特权指定给程序。可从允许特权集合中删除特权,但不能向该集中添加特权。已从 P 中删除的特权会自动从 E 中删除。

    可识别特权的程序会从该程序的允许特权集合中删除程序从不使用的特权。通过这种方法,程序或恶意进程将无法利用不必要的特权。有关 privilege-aware(可识别特权)程序的更多信息,请参见面向开发者的 Oracle Solaris 11 安全性指南 中的第 2  章 开发特权应用程序

  • 可继承特权集合 (I)-进程可通过调用 exec 继承的特权集合。调用 exec 之后,继承的特权被置于允许特权集合和有效特权集合中,使两个权限集相同,但 setuid 程序这一特殊情况除外。

    对于 setuid 程序,调用 exec 之后,可继承特权集合首先会受限制特权集合的限制。然后,系统会从继承特权集合 (I) 中删除限制特权集合 (L) 中的所有特权,并将结果指定给此进程的 P 和 E。

  • 限制特权集合 (L)-此特权集合定义对可用于某个进程及其子进程的特权的外部限制。缺省情况下,限制特权集合为所有特权。进程可以缩小限制特权集合,但是永远不能扩展限制特权集合。L 用来限制 I。因此,在执行 exec 命令时,L 限制 P 和 E。

    如果为用户指定的配置文件中包含指定有特权的程序,则此用户通常可以运行该程序。在未修改的系统上,为此程序指定的特权在用户的限制特权集合中。已指定给程序的特权会成为用户的允许特权集合的一部分。要运行已指定有特权的程序,用户必须从 profile shell(配置文件 shell)运行此程序。

内核可以识别基本特权集合。在未修改的系统上,每个用户的初始可继承特权集合等同于登录时获取的基本特权集合。虽然您不能修改基本特权集合,但可以修改用户从基本特权集合中继承的特权。

在未修改的系统上,用户登录时的特权集合类似如下:

E (Effective): basic
I (Inheritable): basic
P (Permitted): basic
L (Limit): all

在登录时,所有用户的可继承特权集合、允许特权集合和有效特权集合中都包含基本特权集合。用户的限制特权集合等同于区域(全局区域或非全局区域)的缺省特权集合。

您可以将额外的特权直接指定给用户,或更加精确地指定给用户的登录过程,通过权限配置文件间接指定给许多用户,或通过向用户指定特权命令来间接指定。您也可以从用户的基本特权集合中删除特权。有关过程和示例,请参见Chapter 3, 在 Oracle Solaris 中指定权限