Ortamımı çöken her şeyin çekirdek dökümü oluşturacak şekilde ayarladım, ancak SUID ile bir programı yürüten kullanıcıdan farklı bir kullanıcıda çalıştırdığımda çekirdek dökümü oluşturmuyor. Bunun neden olabileceğine dair bir fikrin var mı? Web üzerinde hiçbir yerde bulamadım, sanırım bir çeşit güvenlik özelliği ama devre dışı bırakmak istiyorum ...
Sorun:
$ 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)
Düzenleme: Mümkün olduğunca güvenli çalışması için şimdi ortamı ayarlamak için aşağıdaki komut dosyası var:
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
Artık tek yapmanız gereken / var / coredumps'a ACL eklemektir, böylece kullanıcılar yalnızca dosya ekleyebilir ve bunları bir daha değiştiremez veya okuyamaz. Tek dezavantajı, bir bind mount
veya benzeri bir şeye ihtiyaç duyacağım chroot'ed uygulamalarıyla ilgili bir sorunum olması.