TrustedBSD MAC 框架包含了一组策略无关的组成元素,包括管理抽象标记的 MAC 接口库, 对系统信任状管理体系的修改, 为用户分配 MAC 标记提供支持的 login 库函数, 以及若干负责维护和更新内核对象(进程、文件和网络接口等)安全标记的工具。 不久,将有更多关于应用层体系结构的详细信息被包含进来。
TrustedBSD MAC 提供的大量库函数和系统调用,允许应用程序使用一种统一的、策略无关的接口来处理对象的 MAC 标记。 如此,应用程序可以轻松管理各种策略的标记,无需为增加对某个特定策略的支持而重新编码。许多通用工具,比如 ifconfig(8),ls(1) 和 ps(1),使用这些策略无关的接口查询网络结构、文件和进程的标记信息。 这些 API 也被用于支持 MAC 管理工具,比如,getfmac(8),getpmac(8), setfmac(8), setfsmac(8),和 setpmac(8)。 MAC API的设计细节可参考 mac(3).
应用程序处理的 MAC 标记有两种存在形式:内部形式,用来返回和设置进程和对象的标记(mac_t); 基于 C 字符串的外部形式,作为标记在配置文件中的存放形式,用于向用户显示或者由用户输入。 每一个 MAC 标记由一组标记元素组成,其中每个元素是一个形如(名字,值)的二元组。 内核中的每个策略模块分别被指定一个特定的名字,由它们对标记中与该名字对应的值采用其策略特有的方式进行解析。 采用外部形式表示的标记,其标记元素表示为名字 / 值,元素之间以逗号分隔。 应用程序可以使用 MAC 框架提供的 API 将一个安全标记在内部形式和文本形式之间进行转换。 每当向内核查询某个对象的安全标记时,内部形式的标记必须针对所需的元素集合作好内部标记存储准备。 为此,通常采用下面两种方式之一:使用 mac_prepare(3) 和一个包含所需标记元素的任意列表;或者, 使用从mac.conf(5) 配置文件中加载缺省元素集合的某个系统调用。在对象级别设置缺省标记,将允许应用程序在不确定 系统是否采用相关策略的情况下,也能向用户返回与对象相关联的有意义的安全标记。
注意: 目前的 MAC 库不支持直接修改内部形式的标记元素,所有的修改必须按照下列的步骤进行: 将内部形式的标记转换成文本字符串,对字符串进行编辑,最后将其转换成内部形式标记。如果应用程序的作者证明确实有需要, 可以在将来的版本中加入对内部形式标记进行直接修改的接口。
用户上下文管理的标记接口, setusercontext(3) ,的行为已经被修改为,从 login.conf(5) 中查询与某个用户登录类别相关联的 MAC 安全标记。 当 LOGIN_SETALL 被设置,或者当 LOGIN_SETMAC 被明确指定时,这些安全标记将和其他用户上下文参数一起被设置。
注意: 可以预期,在今后的某个版本中,FreeBSD 将把 MAC 标记从 login.conf 的用户类别数据库中抽出,为其维护一个独立的数据库。 不过在此前后,setusercontext(3) API应该保持不变。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.