我的系统有一个非常复杂的 SELinux 策略。是否有工具可以解释为什么授予特定访问权限?通常,当我使用文本搜索来搜索特定规则时,我找不到它,因为该规则是通过宏或属性规则创建的。
例如,我知道我的系统中某处有一个等效规则允许这样做:
allow app_a app_b:fifo_file write;
Run Code Online (Sandbox Code Playgroud)
由于大量使用宏和类型属性关联,搜索该特定规则的文本没有任何结果。
小智 1
据我所知,没有。通常,您“扩展”与类型属性关联的宏和查询规则以查找它们的含义,宏和属性的名称通常非常具有描述性。您还可以查询 git-log 以查看 git 提交消息是否包含更多信息。
有一个名为“macro-expander”的脚本可以帮助扩展宏,并且有一个 setools 策略分析套件可以帮助查找与属性相关的规则。
您的示例中的规则似乎是未命名管道的使用。这通常是域转换宏的一部分,以允许管道进入目标的输入流,因为这对于 stdin/stdout/stderr 的处理非常常见,例如: ( app_b | app_a)
https://github.com/SELinuxProject/refpolicy/blob/master/policy/support/misc_patterns.spt#L58
因此,假设 app_b 通过域转换运行 app_a,则允许 app_a 读/写从 app_b 继承的管道。所以它是关于 stdin、stdout、stderr 的处理。例如,自动允许域转换的目标使用域转换源的继承管道。
但是,是的,解析其他人编写的复杂策略可能是一个挑战。setools 和像宏扩展器这样的脚本可以减轻一些痛苦,并且具有严格样式规则的自记录策略也有帮助。其中很多都是常见的模式。
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |