> For the complete documentation index, see [llms.txt](https://handbook.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.bsdcn.org/di-19-zhang-qiang-zhi-fang-wen-kong-zhi/19.8.-mac-kuang-jia-de-gu-zhang-pai-chu.md).

# 19.8.MAC 框架的故障排除

本节讨论常见的配置错误及其解决方法。

**`multilabel` 标志在根分区上未能保持启用状态**

如果根（**/**）分区的 `multilabel` 标志没有保持启用，可按照以下步骤解决此临时错误：

1. 编辑 **/etc/fstab**，将根分区设置为 `ro`（只读）。
2. 以单用户模式重启系统。
3. 在 **/** 上运行 `tunefs -l enable`。
4. 重启系统。
5. 运行 `mount -urw /`，然后将 **/etc/fstab** 中的 `ro` 改回 `rw`，再次重启系统。
6. 使用 `mount` 检查输出，确保根文件系统上正确设置了 `multilabel`。

**在建立 MAC 安全环境后，Xorg 无法启动**

这可能是由 MAC 的 `partition` 策略或 MAC 标签策略中的标签错误引起的。可按以下步骤调试：

1. 检查错误信息。如果用户属于 `insecure` 类，则可能是 `partition` 策略引起的。尝试将用户的类设置回 `default` 类，并使用 `cap_mkdb` 重建数据库。如果此方法无效，继续第二步。
2. 仔细检查用户、Xorg 和 **/dev** 条目的标签策略设置。
3. 如果这两步都没有解决问题，可将错误信息及环境说明发送到 [FreeBSD general questions mailing list](https://lists.freebsd.org/subscription/freebsd-questions) 寻求帮助。

**报错 `_secure_path: unable to stat .login_conf`**

该错误可能出现在用户尝试从 `root` 用户切换到另一个用户时。这通常发生在用户的标签设置比他们尝试切换的用户高时。例如，如果 `joe` 的默认标签是 `biba/low`，而 `root` 的标签是 `biba/high`，则 `root` 无法查看 `joe` 的主目录。无论 `root` 是否通过 `su` 切换为 `joe`，Biba 完整性模型都不让 `root` 查看低完整性级别的对象。

**系统不再识别 `root`**

当出现这种情况时，`whoami` 返回 `0`，`su` 返回 `who are you?`。

这可能是因为通过 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 禁用了标签策略，或者安全策略模块被卸载。如果禁用了策略，则需要重新配置登录能力数据库。请仔细检查 **/etc/login.conf**，确保删除所有的 `label` 选项，并使用 `cap_mkdb` 重建数据库。

如果是由于策略限制了对 `master.passwd` 的访问，也会导致此问题。这通常发生在管理员在与系统使用的通用策略冲突的标签下修改了文件的情况下。在这些情况下，系统会尝试读取用户信息，但由于文件继承了新的标签，访问会被阻止。可通过 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 禁用该策略，系统会恢复正常。
