Tôi thiết lập môi trường của mình để tạo kết xuất lõi của tất cả mọi thứ gặp sự cố, tuy nhiên khi tôi chạy một chương trình với SUID được đặt trên một người dùng khác với người dùng thực thi thì nó không tạo ra kết xuất lõi. Vài ý tưởng tại sao nó như thế? Tôi không thể tìm thấy nó ở bất cứ đâu trên web, tôi nghĩ đó là một loại tính năng bảo mật nhưng tôi muốn nó bị vô hiệu hóa ...
Vấn đề:
$ 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)
Chỉnh sửa: Để làm cho nó hoạt động an toàn nhất có thể, bây giờ tôi có đoạn script sau để thiết lập môi trường:
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
Bây giờ tất cả những gì còn lại phải làm là thêm ACL vào / var / coredumps để người dùng chỉ có thể thêm tệp và không sửa đổi cũng như không đọc chúng nữa. Điều đáng tiếc duy nhất là tôi vẫn sẽ gặp vấn đề với các ứng dụng chroot'ed cần một bind mount
hoặc một cái gì đó tương tự.