为任何流程计算最小集合 Linux功能的最佳方法是什么?
假设您正在强化操作系统,并且某些工具可能需要CAP_NET_ADMIN
和相关的网络权限,而其他工具可能需要CAP_SYS_NICE
。应该有一种方法可以告诉每个可执行文件真正需要哪些功能。
答案 0 :(得分:1)
在运行时确定所需功能的两种可能方法:
strace
下运行您的程序。使用EPERM
确定哪些系统调用失败,并为程序添加相应的功能。重复此操作,直到收集到所有功能。SystemTap
,DTrace
或Kprobes
来记录或
为您的程序制作的内核中的拦截能力检查。 (例如,使用来自BCC工具套件的capable
,如here)我猜,具有良好覆盖范围的单元测试将有很大帮助。另请注意,capabilities(7)手册页列出了可能需要每个功能的系统调用(尽管它不是完整列表)。
<强>更新强>
@RodrigoBelem引用的article提及capable_probe
模块,该模块基于KProbes
。
这个模块的原创文章是“POSIX文件功能:分配root权限并且它现在不可用(它被托管here)。但您可以在互联网上找到source code和some docs。