linux 內(nèi)核參數(shù)core_pattern測(cè)試
參數(shù)介紹
. 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.
簡(jiǎn)單來(lái)說(shuō)狰右,該參數(shù)就是可以設(shè)定core dump文件的文件名及路徑啰挪,以及可以利用管道將結(jié)果輸入給管道右邊的程序進(jìn)行處理榜轿。
參考鏈接:http://man7.org/linux/man-pages/man5/core.5.html
參考鏈接:http://man7.org/linux/man-pages/man5/proc.5.html
配置方式
- 設(shè)定core文件的最大值,默認(rèn)為0恭朗,即不生成,只針對(duì)當(dāng)前shell
ulimit -c 1024
- 查看當(dāng)前core_pattern配置
#cat /proc/sys/kernel/core_pattern
core-%e-%p-%t
- 修改參數(shù)
#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
測(cè)試方法
模擬生成core dump
sleep 15
按下Ctrl+\
- 修改core_pattern參數(shù)茸时,是否能按照指定的路徑及文件名生成dump。
echo "/root/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
ulimit -c 1024
sleep 15
ctrl + \
^\Quit (core dumped) #能生成dump
- 默認(rèn)參數(shù)下測(cè)試在無(wú)權(quán)限目錄下能否生成dump赋访。
#root權(quán)限700
echo "/root/core_dump/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
su - chenyuhao
ulimit -c 1024
sleep 15
ctrl + \
^\Quit #無(wú)法生成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
- 配置sleep為只有執(zhí)行權(quán)限時(shí)目錄下能否生成dump
chmod 111 sleep
su - chenyuhao
ulimit -c 1024
sleep 15
ctrl + \
^\Quit #只有執(zhí)行權(quán)限的程序無(wú)法生成dump
- 默認(rèn)參數(shù)下測(cè)試在使用setuid運(yùn)行sleep時(shí)目錄下能否生成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 #無(wú)法生成dump
- 調(diào)整suid_dumpable為2可都,重新測(cè)試第三步
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能訪問(wèn)。
- 設(shè)置一個(gè)777權(quán)限的目錄蚓耽,sleep配置為setuid渠牲,suid_dumpable參數(shù)設(shè)為0或者2,普通用戶運(yùn)行能否生成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#無(wú)法生成core dump
echo 2 > /proc/sys/fs/suid_dumpable
su - chenyuhao
ulimit -c 1024
./sleep 15
^\Quit (core dumped)#可以生成
- sleep配置為setuid签杈,suid_dumpable參數(shù)設(shè)為0或者2,core_pattern配置為管道形式鼎兽,普通用戶運(yùn)行能否生成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)#可以生成
結(jié)論:
自定義core dump文件路徑時(shí)需要注意配置好路徑的權(quán)限。
在普通用戶運(yùn)行設(shè)置了setuid的程序一定要將suid_dumpable設(shè)置為2才能生成coredump文件谚咬。
-
要保證全部用戶能在指定路徑生成core dump鹦付,需要進(jìn)行以下配置:
創(chuàng)建一個(gè)777的core dump文件路徑。
將/proc/sys/kernel/core_pattern參數(shù)為core dump路徑择卦。
將/proc/sys/fs/suid_dumpable設(shè)定為2敲长,保證使用setuid的程序能生成dump。