Ubuntu 上SkyForm调度器(AIP)man 命令执行问题的解决方案

在Ubuntu系统中部署完SkyForm调度器(AIP)后,许多用户会通过man aip命令查看官方手册以熟悉功能。但实际操作中却遇到了棘手情况:执行该命令后终端直接返回错误提示,无法正常调出帮助文档。例如:

root@ghmgt01:~# man chosts

No manual entry for chosts

root@ghmgt01:~# echo $MANPATH

:/opt/skyformai/share/man

从输出结果可见,SkyForm调度器的手册路径/opt/skyform/man已正确添加到系统环境变量中。

 

问题原因定位

经过检查系统日志 /var/log/syslog,发现并非 AIP 安装或路径配置的问题,而是Ubuntu 默认的安全机制AppArmor 限制了 man 程序的访问。

即便我们尝试 systemctl stop apparmor 停止服务也无济于事,这是因为:

AppArmor 的安全策略加载到内核后,即使服务停止,策略依旧生效。所以单纯停止服务无法解除对 man 命令的访问限制。

 

临时解决方法

为了避免重启系统,我们采用了以下方法来临时禁用 man 程序的 AppArmor 配置:

sudo ln -s /etc/apparmor.d/usr.bin.man /etc/apparmor.d/disable/

sudo apparmor_parser -R /etc/apparmor.d/usr.bin.man

sudo systemctl reload apparmor

完成后,再次执行:

man aip

就可以正常打开调度器 AIP 的手册页了。

 

背后机制解析

AppArmor:Ubuntu 默认启用的一种强制访问控制(MAC)安全机制。它通过为每个应用程序加载独立的策略文件,来控制该程序可以访问哪些文件、目录或系统资源。
SELinux:在 CentOS、RedHat 系列中更常见。相比 AppArmor,SELinux 以标签为核心,提供更精细化的安全策略控制。
二者对比:
AppArmor 更加「基于路径」:策略文件与可执行程序绑定,易于管理。
SELinux 更加「基于标签」:通过安全上下文标记文件和进程,灵活度更高,但配置相对复杂。

换句话说,在Ubuntu 上AppArmor 的角色类似于 CentOS 上的SELinux,都是内核级的强制访问控制机制。它们的共同点就是即使停止服务,已加载的策略依然在内核中继续生效。

 

总结

通过这个案例,我们不仅解决了 Ubuntu 上 man 命令无法查看 AIP 手册的问题,还进一步加深了对 Linux 安全机制的理解:

* 在 Ubuntu 中要留意 AppArmor 的策略对应用的潜在影响;
* 在 CentOS/RedHat 中则要注意 SELinux 的策略配置。

SkyForm AIP 在跨平台部署过程中,我们会遇到不同的安全机制差异,这也是产品在多操作系统适配中需要特别关注的关键点。

附表:AppArmor 与 SELinux 对比表

 

推荐阅读 

在线咨询 MESSAGE

姓名 *

电话 *

邮箱 *

咨询意向 *

公司名称

所属行业

需求概述 *