16.7 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.7.1 例子

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

# ugidfw list
0 slots, 0 rules

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

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

注意: 在 FreeBSD 5.3 之前的版本中, add 参数并不存在。 此时应使用 set 来代替它。 请参见下面的命令例子。

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

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

  这将阻止任何 user1user2 的主目录的全部访问, 包括目录列表。

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

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

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

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

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