나는 충돌하는 모든 것의 코어 덤프를 생성하도록 환경을 설정했지만 실행중인 사용자와 다른 사용자에서 SUID가 설정된 프로그램을 실행할 때 코어 덤프를 생성하지 않습니다. 이것이 어떤 이유일까요? 웹 어디에서나 찾을 수 없었습니다. 일종의 보안 기능이라고 생각하지만 비활성화하고 싶습니다 ...
문제:
$ cd /tmp
$ cat /etc/security/limits.conf | grep core
* - core unlimited
root - core unlimited
$ ls -l ohai
-rwsr-sr-x 1 root root 578988 2011-06-23 23:29 ohai
$ ./ohai
...
Floating point exception
$ sudo -i
# ./ohai
...
Floating point exception (core dumped)
# chmod -s ohai
# exit
$ ./ohai
...
Floating point exception (core dumped)
편집 : 가능한 한 안전하게 작동하도록 환경을 설정하는 다음 스크립트가 있습니다.
mkdir -p /var/coredumps/
chown root:adm /var/coredumps/
chmod 772 /var/coredumps/
echo "kernel.core_pattern = /var/coredumps/core.%u.%e.%p" >> /etc/sysctrl.conf
echo "fs.suid_dumpable = 2" >> /etc/sysctl.conf
echo -e "*\t-\tcore\tunlimited" >> /etc/security/limits.conf
echo -e "root\t-\tcore\tunlimited" >> /etc/security/limits.conf
이제 남은 일은 ACL을 / var / coredumps에 추가하는 것이므로 사용자는 파일 만 추가하고 수정하거나 다시 읽을 수 없습니다. 유일한 축소는 여전히 chroot의 응용 프로그램에 문제가 bind mount
있을 것입니다.