对于嵌套循环的一些理解

2021-07-21

  返回  

Docker 中 执行 ‘echo core > /proc/sys/kernel/core_pattern‘ 报错

2021/7/21 1:39:41 浏览:

Docker 中 执行 'echo core > /proc/sys/kernel/core_pattern' 报错

    • 一、背景
    • 二、疑惑
    • 三、解决方案
    • 四、原因
    • 五、参考文献

一、背景

前文中,课题组要做AFL的web端可视化展示,需要用Docker封装AFL为WEB API。在改进脚本重新部署后,调用AFL进行fuzzing时,AFL启动失败。因为在执行afl-fuzz前,如果系统配置为将核心转储文件(core)通知发送到外部程序,将导致将崩溃信息发送到Fuzzer之间的延迟增大,进而可能将崩溃被误报为超时。所以得临时修改core_pattern文件,如下所示:

echo core > /proc/sys/kernel/core_pattern

但是在Docker容器中执行上述命令时报错:

bash: /proc/sys/kernel/core_pattern: Read-only file system

大意:core_pattern 为系统只读文件,不能修改

二、疑惑

Docker执行时内部是以root用户执行各种命令,为啥更改不了只读权限的文件呢?带着这个疑问百度了一遍发现也没查出个所以然,就查了一个机翻的帖子也模棱两可的。

既然百度不行,那就Google吧。查了两分钟查到个海峡对岸同胞的博客,找到了解决方案。

三、解决方案

直接上代码:

# 构建容器时加入 --privileged 参数
docker run -idt -p xx:xx --privileged afl-api:0.0.3

如上述命令,在构建容器时多加一个 --privileged参数即可解决问题。

四、原因

大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器

——引用自:https://blog.csdn.net/wylfengyujiancheng/article/details/90576040

即加了--privileged参数的容器才能真正执行root权限。

五、参考文献

  • https://ephrain.net/docker-在-container-裡設定-core-dump-的檔案名稱格式/
  • https://blog.csdn.net/wylfengyujiancheng/article/details/90576040

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号