저는 최근 Ubuntu Windows 앱을 통해 Linux를 시작했습니다. 분할 오류 ctf를 발생시키는 프로그램에서 생성된 코어 파일을 확인해야 하지만 코어 파일이 생성되지 않습니다. 출력 예:
...
Segmentation fault (core dumped)
root@TroysComputer:/mnt/c/Users/Troy Neubauer/Documents/CTF#
현재 디렉터리(즉, 프로그램이 실행되는 디렉터리)에는 코어 파일이 없습니다. 모든 셸에 대한 하드 및 소프트 제한은 무제한입니다.
root@TroysComputer:/mnt/c/Users/Troy Neubauer/Documents/CTF# ulimit -S -c
unlimited
root@TroysComputer:/mnt/c/Users/Troy Neubauer/Documents/CTF# ulimit -H -c
unlimited
root@TroysComputer:/mnt/c/Users/Troy Neubauer/Documents/CTF#
모든 터미널에서 작동하도록 .bashrc 파일을 통해 설정했습니다.
$HOME/.bashrc:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
# . /etc/bash_completion
#fi
alias ctf='cd /mnt/c/Users/Troy\ Neubauer/Documents/CTF'
ctf
ulimit -H -c unlimited
ulimit -S -c unlimited
prlimit를 사용하여 프로세스가 실행되는 동안 segfault가 발생하기 전에 설정을 확인합니다.
root@TroysComputer:/mnt/c/Users/Troy Neubauer/Documents/CTF# prlimit --pid 549
RESOURCE DESCRIPTION SOFT HARD UNITS
AS address space limit unlimited unlimited bytes
CORE max core file size unlimited unlimited bytes
...
그리고 하드 제한과 소프트 제한은 모두 무제한입니다. 하지만 다음을 사용하면:
root@TroysComputer:/mnt/c/Users/Troy Neubauer/Documents/CTF# cat /proc/549/limits
Limit Soft Limit Hard Limit Units
...
Max core file size 0 unlimited bytes
...
소프트 한계는 0으로 반환됩니다. 이것이 prlimit 보고서와 다른 이유는 무엇입니까? 제한 파일을 생성하려면 소프트 제한이 0이 아니어야 합니까?
/etc/ssh/sshd_config 파일에 "UsePAM yes"가 있는데 /proc/sys/kernel/core_pattern이 존재하지 않고 /var/lib/systemd/coredump/가 비어 있습니다.
root@TroysComputer:/mnt/c/Users/Troy Neubauer/Documents/CTF# ls /var/lib/systemd/coredump/
root@TroysComputer:/mnt/c/Users/Troy Neubauer/Documents/CTF#