如何在BUILDROOT中更新SELINUX的modules.conf?

如何解决如何在BUILDROOT中更新SELINUX的modules.conf?

希望禁用某些SELinux模块(设置为off),并在modules.conf中创建其他模块。当我尝试将更改添加为modules.conf补丁时,我没有看到一种更新Modules.conf的明显方法,但是由于Modules.conf文件已被构建并且不仅仅由BR下载,因此它失败了,因此无法使用像其他一样在refpolicy目录下进行修补:

构建窗口输出:

refpolicy 2.20190609修补程序使用补丁应用0001-refpolicy-update-modules-conf.patch: 找不到要在输入第3行打补丁的文件

我确实在日志中看到有一个support / sedoctool.py可以自动生成policy / modules.conf文件,以便该文件不像ref策略中的大多数其他内容一样可修补。

buildroot / output / build / refpolicy-2.20190609 / Makefile的相关部分:

# policy building support tools
support := support
genxml := $(PYTHON) $(support)/segenxml.py
gendoc := $(PYTHON) $(support)/sedoctool.py

<...snip...>

########################################
#
# Create config files
#
conf: $(mod_conf) $(booleans) generate$(booleans) $(mod_conf): conf.intermediate.INTERMEDIATE: conf.intermediate
conf.intermediate: $(polxml)
        @echo "Updating $(booleans) and $(mod_conf)"
        $(verbose) $(gendoc) -b $(booleans) -m $(mod_conf) -x $(polxml)

hsmlinux build.log的一部分,显示正在运行的sedoctool.py(gendoc):

更新policy / booleans.conf和policy / modules.conf ... / build-buildroot-sawshark / buildroot / output / host / usr / bin / python3 support / sedoctool.py -b policy / booleans.conf -m policy / modules.conf -x doc / policy.xml

我敢肯定,有一种标准的方法可以做到这一点,但似乎在我能找到的任何地方都没有记载。

谢谢。

解决方法

证明sedoctool.py脚本正在读取doc / policy.xml。查看sedoctool.py:

#modules enabled and disabled values
MOD_BASE = "base"
MOD_ENABLED = "module"
MOD_DISABLED = "off"

<...>

def gen_module_conf(doc,file_name,namevalue_list):
        """
        Generates the module configuration file using the XML provided and the
        previous module configuration.
        """
        # If file exists,preserve settings and modify if needed.
        # Otherwise,create it.
<...snip...>
                        mod_name = node.getAttribute("name")
                        mod_layer = node.parentNode.getAttribute("name")
<...snip...>
                        if mod_name and mod_layer:
                                file_name.write("# Layer: %s\n# Module: %s\n" % (mod_layer,mod_name))
                                if required:
                                        file_name.write("# Required in base\n")
                                file_name.write("#\n")

                               if [mod_name,MOD_DISABLED] in namevalue_list:
                                        file_name.write("%s = %s\n\n" % (mod_name,MOD_DISABLED))
                                # If the module is set as enabled.
                                elif [mod_name,MOD_ENABLED] in namevalue_list:
                                        file_name.write("%s = %s\n\n" % (mod_name,MOD_ENABLED))
                                # If the module is set as base.
                                elif [mod_name,MOD_BASE] in namevalue_list:
                                        file_name.write("%s = %s\n\n" % (mod_name,MOD_BASE))

因此sedoctool.py具有以下出色功能:“#如果文件存在,请保留设置并根据需要进行修改。”可以通过完整的文件补丁程序在此处将整个模块和modules.conf添加到此处,并将不需要的模块设置为“ off”:refpolicy-2.20190609 / policy / modules.conf,脚本将根据需要的策略根据需要进行更新。 / p>

一个更详细的信息是,在refpolicy Makefile(构建)的下一阶段中,将在开始时删除带有更新的modules.conf,这与sedoctool保留已修补版本的modules.conf的功能发生了冲突。 ..so在Makefile的Building阶段修补了删除操作。

[7m >>> refpolicy 2.20190609建筑物^ [

<...>

rm -f policy / modules.conf

refpolicy-2.20190609中的Makefile中有我修补的这一行,因为我们正在修补自己的modules.conf:

裸:干净 <...> $(详细)rm -f $(mod_conf)

该补丁看起来像:

--- BUILDROOT/Makefile  2020-08-17 13:25:06.963804709 -0400
+++ FIX/Makefile  2020-08-17 19:25:29.540607763 -0400
@@ -636,7 +636,6 @@
        $(verbose) rm -f $(modxml)
        $(verbose) rm -f $(tunxml)
        $(verbose) rm -f $(boolxml)
-       $(verbose) rm -f $(mod_conf)
        $(verbose) rm -f $(booleans)
        $(verbose) rm -fR $(htmldir)
        $(verbose) rm -f $(tags)

顺便说一句, 在pp1:q!:

中使用完整的新文件创建补丁
diff -crB --new-file pp0 pp1 > pp0.patch

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-