linux 内核参数core_pattern测试

linux 内核参数core_pattern测试

参数介绍


. If the first character of the pattern is a '|', the kernel will treat

  the rest of the pattern as a command to run.  The core dump will be

  written to the standard input of that program instead of to a file.

简单来说,该参数就是可以设定core dump文件的文件名及路径,以及可以利用管道将结果输入给管道右边的程序进行处理。

参考链接:http://man7.org/linux/man-pages/man5/core.5.html

参考链接:http://man7.org/linux/man-pages/man5/proc.5.html

配置方式

  1. 设定core文件的最大值,默认为0,即不生成,只针对当前shell

ulimit -c 1024

  1. 查看当前core_pattern配置

#cat /proc/sys/kernel/core_pattern

core-%e-%p-%t

  1. 修改参数

#echo "/root/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

echo "/home/chenyuhao/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

测试方法

模拟生成core dump


sleep 15

按下Ctrl+\

  1. 修改core_pattern参数,是否能按照指定的路径及文件名生成dump。

echo "/root/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

ulimit -c 1024

sleep 15

ctrl + \

^\Quit (core dumped) #能生成dump

  1. 默认参数下测试在无权限目录下能否生成dump。

#root权限700

echo "/root/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

su - chenyuhao

ulimit -c 1024

sleep 15

ctrl + \

^\Quit  #无法生成dump



echo "/home/chenyuhao/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

su - chenyuhao

ulimit -c 1024

sleep 13

ctrl + \

^\Quit (core dumped) #能生成dump

  1. 配置sleep为只有执行权限时目录下能否生成dump

chmod 111 sleep

su - chenyuhao

ulimit -c 1024

sleep 15

ctrl + \

^\Quit  #只有执行权限的程序无法生成dump

  1. 默认参数下测试在使用setuid运行sleep时目录下能否生成dump

echo "/root/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

cp /bin/sleep /home/chenyuhao

cd /home/chenyuhao

chown root:root sleep

chmod 411 sleep

chmod u+s sleep

su - chenyuhao

ulimit -c 1024

sleep 13

ctrl + \

^\Quit  #无法生成dump

  1. 调整suid_dumpable为2,重新测试第三步

echo 2 > /proc/sys/fs/suid_dumpable

su - chenyuhao

ulimit -c 1024

sleep 13

ctrl + \ #有dump

^\Quit (core dumped) #能生成dump



$ ls -l core_dump/

total 668

-rw------- 1 chenyuhao chenyuhao 393216 Jun  5 10:59 core-sleep-27587-1528167580

-rw------- 1 chenyuhao chenyuhao 393216 Jun  5 11:04 core-sleep-27780-1528167877

-rw------- 1 root      chenyuhao 393216 Jun  5 11:15 core-sleep-28251-1528168507

-rw------- 1 root      chenyuhao 393216 Jun  5 11:22 core-sleep-28436-1528168938

#setuid生成的core dump文件只有root能访问。

  1. 设置一个777权限的目录,sleep配置为setuid,suid_dumpable参数设为0或者2,普通用户运行能否生成dump。

echo "/root/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

echo 0 > /proc/sys/fs/suid_dumpable

chmod 411 sleep

chmod u+s sleep

chmod 777 /root/core_dump

su - chenyuhao

ulimit -c 1024

./sleep 15

^\Quit#无法生成core dump



echo 2 > /proc/sys/fs/suid_dumpable

su - chenyuhao

ulimit -c 1024

./sleep 15

^\Quit (core dumped)#可以生成

  1. sleep配置为setuid,suid_dumpable参数设为0或者2,core_pattern配置为管道形式,普通用户运行能否生成dump。

echo '|/home/chenyuhao/coredump.py /home/chenyuhao/core_dump/core_%e_%p' > /proc/sys/kernel/core_pattern

echo 0 > /proc/sys/fs/suid_dumpable

chmod 411 sleep

chmod u+s sleep

chmod 777 /root/core_dump

su - chenyuhao

ulimit -c 1024

./sleep 15

^\Quit#不能生成dump



echo 2 > /proc/sys/fs/suid_dumpable

su - chenyuhao

ulimit -c 1024

./sleep 15

^\Quit (core dumped)#可以生成



结论:

  • 自定义core dump文件路径时需要注意配置好路径的权限。

  • 在普通用户运行设置了setuid的程序一定要将suid_dumpable设置为2才能生成coredump文件。

  • 要保证全部用户能在指定路径生成core dump,需要进行以下配置:

    1. 创建一个777的core dump文件路径。

    2. 将/proc/sys/kernel/core_pattern参数为core dump路径。

    3. 将/proc/sys/fs/suid_dumpable设定为2,保证使用setuid的程序能生成dump。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,941评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 13,562评论 2 33
  • 在Linux下程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使...
    随风化作雨阅读 48,056评论 2 15
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 100,952评论 9 468
  • 上一次写父亲是什么时候,大概是小学命题作文吧,《我的父亲》,早忘了写的什么了,八九不离十逃不出那些套路。 有三件事...
    苏步哲阅读 217评论 0 0

友情链接更多精彩内容