RHEL 8でコアダンプの出力を制御する方法です。
記事の目次
コアダンプが出力可能であることを確認する!
コアダンプが出力可能であることを確認します。
# ulimit -c unlimited
コアダンプの出力先を確認する!
root@vmsaca01 sysctl.d]# cat /proc/sys/kernel/core_pattern |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e
コアダンプを出力する!
SEGVシグナルをプロセスに送信し、コアダンプが出力したことを確認します。
# coredumpctl list No coredumps found. # kill -SEGV 13694 Segmentation fault (core dumped) # coredumpctl list TIME PID UID GID SIG COREFILE EXE Tue 2022-04-05 20:31:33 JST 13694 0 0 11 present /usr/bin/bash
コアダンプの情報を確認する!
/var/log/messagesにコアが出力されたことを示す情報が出力されます。
# grep coredump /var/log/messages Apr 5 20:31:32 vmsaca01 systemd[1]: Created slice system-systemd\x2dcoredump.slice. Apr 5 20:31:33 vmsaca01 systemd-coredump[20869]: Process 13694 (bash) of user 0 dumped core.#012#012Stack trace of thread 13694:#012#0 0x00007f2839ff2c3b kill (libc.so.6)#012#1 0x000055c4d16d3ae2 execute_command (bash)#012#2 0x000055c4d16bb409 reader_loop (bash)#012#3 0x000055c4d16b9bdb main (bash)#012#4 0x00007f2839fde813 __libc_start_main (libc.so.6)#012#5 0x000055c4d16ba39e _start (bash) Apr 5 20:31:33 vmsaca01 systemd[1]: systemd-coredump@0-20868-0.service: Succeeded.
コアダンプの詳細な情報を出力します。コアダンプの出力先が、「/var/lib/systemd/coredump」であることもわかります。
# coredumpctl info -1 PID: 13694 (bash) UID: 0 (root) GID: 0 (root) Signal: 11 (SEGV) Timestamp: Tue 2022-04-05 20:31:32 JST (17min ago) Command Line: -bash Executable: /usr/bin/bash Control Group: /user.slice/user-1000.slice/session-5.scope Unit: session-5.scope Slice: user-1000.slice Session: 5 Owner UID: 1000 (sysadm00) Boot ID: d9feecec47a74b75affd1bbcc3725376 Machine ID: 47755988a6524804831f1f1ae20426dc Hostname: vmsaca01 Storage: /var/lib/systemd/coredump/core.bash.0.d9feecec47a74b75affd1bbcc3725376.13694.1649158292000000.lz4 Message: Process 13694 (bash) of user 0 dumped core. Stack trace of thread 13694: #0 0x00007f2839ff2c3b kill (libc.so.6) #1 0x000055c4d16d3ae2 execute_command (bash) #2 0x000055c4d16bb409 reader_loop (bash) #3 0x000055c4d16b9bdb main (bash) #4 0x00007f2839fde813 __libc_start_main (libc.so.6) #5 0x000055c4d16ba39e _start (bash)
コアダンプを無効化する!
コアダンプは、サイズが大きいことやセキュリティ上、出力したくない情報が含まれる可能性が高いことから無効化したいことがあります。/etc/security/limits.confというpam_limits.soの設定ファイルで設定を行います。設定箇所を検索します。
# grep "hard core" /etc/security/limits.conf /etc/security/limits.d/*
limits.confに設定を行います。
# vi /etc/security/limits.conf ... * hard core 0
OSを再起動します。
# ulimit -c 0
SIDで管理者権限を持った場合でも、出力しないように設定します。設定箇所を検索します。
# grep "fs\.suid_dumpable" /etc/sysctl.conf /etc/sysctl.d/*
コマンドで、設定の結果を確認します。「0」であれば出力しません。
# sysctl suid_dumpable fs.suid_dumpable = 0
コアダンプの無効化を確実にするために、設定ファイルに記述しておきます。
vi /etc/sysctl.conf ... fs.suid_dumpable = 0
おわりに
RHEL 8では、コアダンプを管理する専用のコマンドが用意されています。
参考情報
関連記事
関連書籍(Amazon)