RHEL 8でコアダンプの出力を制御する!

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)

N/A