16.16 MAC 框架的故障排除

  在开发过程中, 有一些用户报告了正常配置下出现的问题。 其中的一些问题如下所示:

16.16.1 无法在 / 上启用 multilabel 选项

  multilabel 标志在根 (/) 分区上没有保持启用状态!

  看起来每五十个用户中就有一个遇到这样的问题, 当然, 在我们的初始配置过程中也出现过这样的问题。 更进一步的观察使得我相信这个所谓的 “bug” 是由于文档中不确切的描述, 或对其产生的误解造成的。 无论它是因为什么引发的, 下面的步骤应该能够解决此问题:

  1. 编辑 /etc/fstab 并将根分区设置为 ro, 表示只读。

  2. 重新启动并进入单用户模式。

  3. / 上运行 tunefs -l enable

  4. 重新启动并进入正常的模式。

  5. 运行 mount -urw / 并把 /etc/fstab 中的 ro 改回 rw, 然后再次重新启动。

  6. 再次检查来自 mount 的输出, 已确认根文件系统上正确地设置了 multilabel

16.16.2 在 MAC 之后无法启动 X11 了

  在使用 MAC 建立安全的环境之后, 就无法启动 X 了!

  这可能是由于 MAC partition 策略, 或者对某个 MAC 标签策略进行了错误的配置导致的。 要调试这个问题, 请尝试:

  1. 检查错误信息; 如果用户是在 insecure class 中, 则 partition 策略就可能导致问题。 尝试将用户的 class 重新改为 default class, 并使用 cap_mkdb 命令重建数据库。 如果这无法解决问题, 则进入第二步。

  2. 仔细检查标签策略。 确认针对有问题的用户的策略是正确的, 特别是 X11 应用, 以及 /dev 项。

  3. 如果这些都无法解决问题, 将出错消息和对您的环境的描述, 发送到 TrustedBSD 网站上的 TrustedBSD 讨论邮件列表, 或者 FreeBSD 一般问题邮件列表 邮件列表。

16.16.3 Error: _secure_path(3) cannot stat .login_conf

  当我试图从 root 切换到其同中的其他用户时, 出现了错误提示 “_secure_path: unable to state .login_conf”。

  这个提示通常在用户拥有高于它将要成为的那个用户的 标签设定时出现。 例如, 如果系统上的一个用户 joe 拥有默认的 biba/low 标签, 而 root 用户拥有 biba/high, 它也就不能查看 joe 的主目录, 无论 root 是否使用了 su 来成为 joe。 这种情况下, Biba 完整性模型, 就不会允许 root 查看在较低完整性级别中的客体。

16.16.4 root 用户名被破坏了!

  在普通模式, 甚至是单用户模式中, root 不被识别。 whoami 命令返回了 0 (零) 而 su 则提示 “who are you?”。 到底发生了什么?

  标签策略被禁用可能会导致这样的问题, 无论是通过 sysctl(8) 或是卸载了策略模块。 如果打算禁用策略, 或者临时禁用它, 则登录性能数据库需要重新配置, 在其中删除 label 选项。 仔细检查 login.conf 以确保所有的 label 选项都已经删除, 然后使用 cap_mkdb 命令来重建数据库。

  这种情况也可能在通过策略来限制访问 master.passwd 文件或对应的那个数据库时发生。 这主要是由于管理员修改受某一 label 限制的文件, 而与系统级的通用策略发生了冲突。 这时, 用户信息将由系统直接读取, 而在文件继承了新的 label 之后则会拒绝访问。 此时, 只需使用 sysctl(8) 禁用这一策略, 一切就会恢复正常了。

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

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