Files
phs_v1.0.1.0/developtools/integration_verification/tools/startup_guard/rules/NO-Config-Cmds-In-Init
2024-09-27 19:16:49 +08:00
..
2024-09-27 19:16:49 +08:00
2024-09-27 19:16:49 +08:00

cfg文件白名单规则说明

规则解释

白名单严格遵循JSON格式。

耗时命令约束

白名单 约束*.cfg文件中的耗时命令。

  • 耗时命令

    命令执行超过200ms的命令行。

  • 规则要求

    1. 命令行执行时间超过200ms。
    2. 耗时命令在白名单中配置。
    3. 耗时命令文件路径在白名单中配置。
  • 白名单信息解释

    {
        "cmd":"init_global_key",
            "location":[
                "/system/etc/init.cfg",
                ...
            ]
    }
    
    1. cmd: 命令行
    2. location: 耗时命令文件路径
  • 解决方法

    1. 检查违规项是否是耗时命令。
    2. 检查该命令是否包含白名单中。
    3. 检查该命令存在的文件路径是否包含在白名单中。
    4. 根据评审结果添加命令到白名单。

condition服务约束

白名单 约束*.cfg文件中的service的启动方式condition。

  • condition

    condition 条件启动对服务的启动方式配置condition通过start命令拉起服务。

  • 规则要求

    1. 服务不是按需启动,即"ondemand" : false。
    2. 服务是条件启动, 即"start-mode" : "condition" 并且通过start命令拉起服务。
    3. 服务在白名单中。
  • 白名单信息解释

    {
        "start-modes": [
            {
            "start-mode":"condition",
            "service": [
                    "hilogd",
                    ...
                ]
            }
        ]
    }
    
    1. start-mode:"condition", 服务启动方式。
    2. service通过"start-mode" : "condition" 启动的服务。
  • 解决方法

    1. 检查服务否是按需启动。
    2. 检查服务是否配置条件启动, 且通过start命令拉起服务。
    3. 检查服务是否在白名单中。
    4. 根据评审结果添加服务到白名单。

boot服务约束

白名单 约束*.cfg文件中的service的启动方式boot。

  • boot

    在init job阶段启动其服务的启动方式配置 boot。

  • 规则要求

    1. 服务是boot启动 即"start-mode" : "boot"的服务。
    2. 服务在白名单中。
  • 白名单信息解释

    {
        "start-modes": [
            {
            "start-mode":"boot",
            "service": [
                    "hiview",
                    ...
                ]
            }
        ]
    }
    
    1. start-mode:"boot",服务启动方式。
    2. service通过"start-mode" : "boot" 启动的服务。
  • 解决方法

    1. 检查服务是否是boot启动。
    2. 检查服务是否在白名单中。
    3. 根据评审结果添加服务到白名单。

start命令约束

白名单 约束*.cfg文件中的通过start执行的命令。

  • start

    通过start拉起的服务。

  • 规则要求

    1. 通过start命令执行的命令行。
    2. 命令行在白名单中。
  • 白名单信息解释

    {
        "start-cmd": [
            "ueventd",
            ...
        ]
    }
    

    start-cmd: 执行start命令行。

  • 解决方法

    1. 检查命令是否是start命令。
    2. 检查命令行是否在白名单中。
    3. 根据评审结果添加命令到白名单。

selinux约束

  • secon

    服务的selinux标签

  • 规则要求

    1. 服务配置没有配置"secon"。
    2. 配置配置的"secon"为空。
  • 解决方法

    1. 检查服务是否配置"secon" 且"secon"的配置不为空。
    2. 根据要求修改服务"secon"配置

编译时会提示如下类型的告警:

[NOT ALLOWED]: 'init_global_key' is timeout command, in /system/etc/init.cfg
[NOT ALLOWED]: xxx 'secon' is empty
[WARNING]: 'storage_daemon' cannot be started in boot mode
[WARNING]: 'hilogd' cannot be started in conditional mode
[WARNING]: selinux status is xxx
[WARNING]: multimodalinput is not in start cmd list.  path:/system/etc/init/multimodalinput.cfg

违规场景及处理方案建议

  1. 服务默认按照并行启动配置,如果需要添加白名单,需要评审。
  2. 根据 规则解释 排查修改。