This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

应用层体系结构

6.8 应用层体系结构

  TrustedBSD MAC 框架包含了一组策略无关的组成元素,包括管理抽象标记的 MAC 接口库, 对系统信任状管理体系的修改, 为用户分配 MAC 标记提供支持的 login 库函数, 以及若干负责维护和更新内核对象(进程、文件和网络接口等)安全标记的工具。 不久,将有更多关于应用层体系结构的详细信息被包含进来。

6.8.1 策略无关的标记管理 API

  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 库不支持直接修改内部形式的标记元素,所有的修改必须按照下列的步骤进行: 将内部形式的标记转换成文本字符串,对字符串进行编辑,最后将其转换成内部形式标记。如果应用程序的作者证明确实有需要, 可以在将来的版本中加入对内部形式标记进行直接修改的接口。

6.8.2 为用户指定标记

  用户上下文管理的标记接口, 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>.