zoukankan      html  css  js  c++  java
  • Android Sepolicy 相关工具

    文章参考 Android 9.0 源码,以翻译为主,留做备用参考。
    Sepolicy 工具位于 system/sepolicy/tools/

    build_policies.sh

    为多个目标并行构建SELinux策略的工具。这对于在多个目标上快速闫增新的测试或Neveralow规则很有用。

    用法:

    ./build_policies.sh ~/android/master ~/tmp/build_policies
    ./build_policies.sh ~/android/master ~/tmp/build_policies sailfish-eng walleye-eng

    checkfc

    用于检查 file_contexts 或 property_contexts 配置文件有效性的工具。policy build 过程中包含以上两个文件的验证。检查 file_contexts 或 property_contexts 文件中安全上下文的有效性时,需要使用 sepolicy 文件作为参数。

    用法1:

    checkfc sepolicy file_contexts
    checkfc -p sepolicy property_context

    也可以用于比较两个 file_contexts 或 file_contexts.bin 文件。输出结果显示为 subset、equal、superset或incomparable 其中之一.

    用法2:

    checkfc -c file_contexts1 file_contexts2
    举例:
    $checkfc-c out/target/product/shamu/system/etc/general_file_contexts out/target/product/shamu/root/file_contexts.bin
    subset

    checkseapp

    用于合并主 seapp_contexts 配置和特定设备配置的工具,同时检查配置的有效性。被用作 policy build 过程的一部分,用来合并和验证配置。

    用法:

    checkseapp -p sepolicy input_seapp_contexts0 [input_seapp_contexts1...] -o seapp_contexts

    insertkeys.py

    一个辅助脚本,用于将 mac_permissions.xml 中签名段的标记映射到 pem 文件中的公钥。这个脚本将在sepolicy/README中进一步描述。

    post_process_mac_perms

    该工具用于帮助修改现有的 MaqPyExist.xml,添加当前策略中不存在的附加的应用程序证书。该工具在搜索应用程序目录,并将这些应用程序中的证书添加到尚未显式列出的策略时非常有用。

    用法:

    post_process_mac_perms [-h] -s SEINFO -d DIR -f POLICY

    -s SEINFO, --seinfo SEINFO seinfo tag for each generated stanza
    -d DIR, --dir DIR Directory to search for apks
    -f POLICY, --file POLICY mac_permissions.xml policy file

    sepolicy-check

    该工具用于审核 sepolicy 文件中任何赋予权限的允许规则。

    用法:

    sepolicy-check -s <domain> -t <type> -c <class> -p <permission> -P out/target/product/<board>/root/sepolicy

    sepolicy-analyze

    用于对 sepolicy 文件执行各种分析的组件化工具。当前支持的分析类型包括:

    TYPE EQUIVALENCE (typecmp)

    sepolicy-analyze out/target/product/<board>/root/sepolicy typecmp -e

    显示"equivalent"的所有类型对,即它们的允许规则相同,包括通过属性的间接允许规则和默认启用的条件规则(即默认布尔值生成的真正条件表达式)。

    等价类型是合并为单个类型的备选。但是,可能有正当理由使它们保持独立,例如:

    • 类型可能在当前分析中以外方面不同,例如默认禁用的条件规则、审核相关规则(auditallow或dontaudit)、默认类型转换或约束(例如mls)。
    • 当前策略可能对于一个或另一个类型过于宽松,因此正确的操作可能是加强对一个或另一个类型的访问,而不是将它们合并在一起。
    • 实际上对这些类型具有不同访问权限的域可能尚未定义,或者可能未在您分析的策略中定义。

    TYPE DIFFERENCE (typecmp)

    sepolicy-analyze out/target/product/<board>/root/sepolicy typecmp -d

    显示不同的类型对,以及在两种类型之间发现的第一个差异。这可用于查找不相同,但可以作为合并备选的相似类型。

    DUPLICATE ALLOW RULES (dups)

    sepolicy-analyze out/target/product/<board>/root/sepolicy dups

    显示重复的允许规则,即授予相同权限的允许规则对,其中一个允许规则直接依据独立类型写入,另一个则依据相同类型关联的属性写入。具有独立类型的规则是要删除的候选规则。具有独立类型的规则可以在源策略中直接表示,也可以是类型否定扩展的结果(例如,策略编译器将域'-foo' '-bar'扩展为独立允许规则)。具有unconfineddomain的域通常会有重复的规则,如自然的副作用,并且可以忽略。

    PERMISSIVE DOMAINS (permissive)

    sepolicy-analyze out/target/product/<board>/root/sepolicy permissive

    显示策略中允许的域,即avc拒绝被记录,但不对这些域强制。虽然允许域在开发过程中会有帮助,但它们不应该出现在最终用户版本中。

    BOOLEANS (booleans)

    sepolicy-analyze out/target/product/<board>/root/sepolicy booleans

    显示策略中的布尔名称(如果有)。Android策略中禁止使用布尔值,因此如果有任何输出,该策略将使CTS失败。

    ATTRIBUTE (attribute)

    sepolicy-analyze out/target/product/<board>/root/sepolicy attribute <name>

    显示与指定属性名关联的类型。

    sepolicy-analyze out/target/product/<board>/root/sepolicy attribute -r <name>

    显示与指定类型名关联的属性。

    sepolicy-analyze out/target/product/<board>/root/sepolicy attribute -l

    显示策略中的所有属性。

    NEVERALLOW CHECKING (neverallow)

    sepolicy-analyze out/target/product/<board>/root/sepolicy neverallow [-w] [-d] [-f neverallows.conf] | [-n "neverallow string"]

    检查 sepolicy 文件是否违反 neveralow.conf 文件或指定字符串的 neveralow 规则,字符串应包含与 SELinux policy.conf 文件格式相同的 neveralow 语句,即在从 .te 文件中对规则进行 m4 宏扩展之后。您可以使用整个 policy.conf 文件作为 neverallows.conf 文件,sepolicy analyze 将忽略除其中的 neverallows 之外的所有内容。还可以将其指定为命令行字符串参数,这对于快速检查单个展开的规则或规则组很有用。如果没有违反,sepolicy-analyze 将成功退出,没有输出。否则,sepolicy-analyze 将报告所有违规行为,并以非零退出状态退出。

    '-w'或'--warn'选项可用于警告 neveralow 规则中无法在 sepolicy 文件中解析的任何types、attributes、classes 或 permissions。这可能是正常的,因为从中获取 neverallow 规则的策略与正在检查的策略之间存在差异。这些值将被忽略,以供以后进行检查。

    '-d'或'--debug'选项可用于使 sepolicy analyze 在解析 neveralow 规则时输出这些规则。这主要是解析器的一个调试工具,但也可以用于从完整的 policy.conf 文件中提取 neverallow 规则,并以更容易解析的格式输出它们。

    from: https://segmentfault.com/a/1190000021733720

  • 相关阅读:
    【WP开发】WebView控件应用要点
    【WP开发】认清“不透明度”与“可见性”的区别
    分享:自学编程的方法
    <C#>找出数组中重复次数最多的数值
    【WP 8.1开发】上下文菜单
    【WP 8.1开发】同时更新多种磁贴
    【WP开发】如何处理溢出的文本
    lnmp/nginx系统真正有效的图片防盗链完整设置详解
    PHP自动加载SPL的四种处理方式
    算法笔记-判断链表保存的字符串是否是回文
  • 原文地址:https://www.cnblogs.com/aspirs/p/15144663.html
Copyright © 2011-2022 走看看