FreeBSD 使用手册
上一页 | 第16章 　强制访问控制 | 下一页

# 16.8 MAC bsdextended 模块

模块名： `mac_bsdextended.ko`

对应的内核配置： `options MAC_BSDEXTENDED`

引导选项： `mac_bsdextended_load="YES"`

mac_bsdextended(4) 模块能够强制文件系统防火墙策略。 这一模块的策略提供了标准文件系统权限模型的一种扩展， 使得管理员能够建立一种类似防火墙的规则集， 以文件系统层次结构中的保护文件、 实用程序，以及目录。 在尝试访问文件系统客体时， 会遍历规则表， 直至找到匹配的规则， 或到达表尾。 这一行为可以通过修改 sysctl(8) 参数， security.mac.bsdextended.firstmatch_enabled 来进行设置。 与 FreeBSD 中的其他防火墙设置类似， 也可以建一个文件来配置访问控制策略， 并通过 rc.conf(5) 变量的配置在系统引导时加载它。

规则表可以通过工具 ugidfw(8) 工具来输入， 其语法类似 ipfw(8)。 此外还可以通过使用 libugidfw(3) 库来开发其他的工具。

当使用这一模块模块时应极其小心； 不正确的使用将导致文件系统的某些部分无法访问。

## 16.8.1 例子

在加载了 mac_bsdextended(4) 模块之后， 下列命令可以用来列出当前的规则配置：

    # ugidfw list
    0 slots, 0 rules

如希望的那样， 目前还没有定义任何规则。 这意味着一切都还可以访问。 要创建一个阻止所有用户， 而保持 `root` 不受影响的规则， 只需运行下面的命令：

    # ugidfw add subject not uid root new object not uid root mode n

这本身可能是一个很糟糕的主意， 因为它会阻止所有用户执行哪怕最简单的命令， 例如 `ls`。 更富于爱心的规则可能是：

    # ugidfw set 2 subject uid user1 object uid user2 mode n
    # ugidfw set 3 subject uid user1 object gid user2 mode n

这将阻止任何 `user1` 对 ``user2`` 的主目录的全部访问， 包括目录列表。

`user1` 可以用 `not uid `user2`` 代替。 这将同样的强制访问控制实施在所有用户， 而不是单个用户上。

> 注意: `root` 用户不会受到这些变动的影响。

我们已经给出了 mac_bsdextended(4) 模块如何帮助加强文件系统的大致介绍。 要了解更进一步的信息， 请参见 mac_bsdextended(4) 和 ugidfw(8) 联机手册。

上一页 | 起始页 | 下一页
MAC seeotheruids 模块 | 上一级 | MAC ifoff 模块

本文档和其它文档可从这里下载：ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读文档，如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.