当前位置:   article > 正文

Docker 中 执行 ‘echo core > /proc/sys/kernel/core_pattern‘ 报错_/proc/sys/kernel/core_pattern: read-only file syst

/proc/sys/kernel/core_pattern: read-only file system

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
  • 1

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

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

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

二、疑惑

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

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

三、解决方案

直接上代码:

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

如上述命令,在构建容器时多加一个 --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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/263978
推荐阅读
相关标签
  

闽ICP备14008679号