模块名: 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) 库来开发其他的工具。
当使用这一模块模块时应极其小心; 不正确的使用将导致文件系统的某些部分无法访问。
在加载了 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
这将阻止任何 user1 对 user2 的主目录的全部访问, 包括目录列表。
user1 可以用 not uid user2
代替。
这将同样的强制访问控制实施在所有用户, 而不是单个用户上。
注意: root 用户不会受到这些变动的影响。
我们已经给出了 mac_bsdextended(4) 模块如何帮助加强文件系统的大致介绍。 要了解更进一步的信息, 请参见 mac_bsdextended(4) 和 ugidfw(8) 联机手册。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<[email protected]>.
关于本文档的问题请发信联系 <[email protected]>.