6.4. 查错

本节列出了使用 Novell AppArmor 时最有可能出现的问题和错误消息。

SUSE Linux 已安装,但 AppArmor 没有显示在 YaST 菜单中

如果在安装时选择了 GNOME 或 KDE 桌面,默认情况下会安装 AppArmor。如果选择的是最小图形系统文本模式,默认情况下不包含 AppArmor。在这些情况下,请使用 YaST 来安装缺失的软件包。有关的更多信息,请参阅 Novell AppArmor 2.0 安装和快速入门指南

应用程序行为失常

如果您注意到应用程序行为失常或其它类型的应用程序问题,您应当先检查日志文件中的拒绝消息,以查看 AppArmor 对应用程序的限制是否太过严格。

要检查拒绝消息,请启动 YaST+ Novell AppArmor,然后进入 Novell AppArmor 报告。选择查看档案应用程序审计以查看应用程序审计报告。您可以对日期和时间进行过滤,以缩小应用程序开始行为时的特定期限。

Apache 的问题

Apache 启动不正常或不提供万维网网页服务,而且您刚安装了新的模块或更改了配置。

安装了附加的 Apache 模块(例如 mod-apparmor)或更改了 Apache 的配置时,您应当再次运行整个 Apache 配置文件构建过程,以将模块需要的附加规则添加到配置文件。

不能通过电子邮件发送报告

如果报告功能生成的 HTML 或 CSV 文件超出了默认的大小,则不能发送此文件。邮件服务器对电子邮件大小有默认的硬限制。此限制会影响 AppArmor 发送出于报告目的而生成的电子邮件的能力。如果您不能收到邮件,这可能就是原因。

用户必须注意邮件大小限制,没有收到电子邮件时,应该检查它们的档案。

从已使用配置文件的列表中排除某些配置文件

AppArmor 总是装载并应用其配置文件目录 (/etc/apparmor.d/) 中可用的所有配置文件。如果您不打算将某配置文件应用到特定应用程序,请删除相应的配置文件或将它移动到 AppArmor 不会检查的位置。

AppArmor 操作可能产生各种错误。下面列出了可能出现的错误和解决它们的办法。

Can't find apparmor_parser

如果以 tux 等非 root 用户身份运行 logprof,您可能会看到此错误:

tux@localhost:~> /usr/sbin/logprof
Can’t find apparmor_parser.
[Note]注意

您应当以 root 用户身份运行 logprof。

/usr/sbin/genprof 必须以 root 用户身份运行

以非 root 用户身份运行 genprof 会产生相似的结果:

tux@localhost:~> /usr/sbin/genprof
/usr/sbin/genprof must be run as root.
Unloading AppArmor profiles..failed

您必须以 root 用户身份运行 apparmor 启动和 apparmor 停止脚本。以非 root 用户身份运行它们会产生以下结果:

tux@localhost:~> /etc/init.d/apparmor stop
/sbin/apparmor_parser: Sorry. You need root priveleges to run this program.
Unloading AppArmor profiles..failed
AppArmor parser error

下例显示了整个分析程序错误的语法。

手动编辑 Novell AppArmor 配置文件可能引起语法出错。如果您的配置文件中存在语法错误,尝试启动或重启动 AppArmor 时,您会看到类似下面的错误结果:

localhost:~ # /etc/init.d/apparmor start
Loading AppArmor profiles
AppArmor parser error, line 2: Found unexpected character: ’h’
Profile /etc/apparmor.d/usr.sbin.squid failed to load
failed