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 的手册页了。
背后机制解析
换句话说,在Ubuntu 上AppArmor 的角色类似于 CentOS 上的SELinux,都是内核级的强制访问控制机制。它们的共同点就是即使停止服务,已加载的策略依然在内核中继续生效。
总结
通过这个案例,我们不仅解决了 Ubuntu 上 man 命令无法查看 AIP 手册的问题,还进一步加深了对 Linux 安全机制的理解:
SkyForm AIP 在跨平台部署过程中,我们会遇到不同的安全机制差异,这也是产品在多操作系统适配中需要特别关注的关键点。
附表:AppArmor 与 SELinux 对比表

- 2022-03-22
- 2022-03-22
- 2022-03-22
- 2022-03-22
- 2022-03-18
- 2022-03-18