Saya baru menyadari bahwa sistem saya tidak membatasi jumlah proses per pengguna dengan benar sehingga tidak mencegah pengguna melakukan bom fork dan menabrak seluruh sistem:
user@thebe:~$ cat /etc/security/limits.conf | grep user
user hard nproc 512
user@thebe:~$ ulimit -u
1024
user@thebe:~$ :(){ :|:& };:
[1] 2559
user@thebe:~$ ht-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
-bash: fork: Cannot allocate memory
...
Connection to thebe closed by remote host.
Apakah ini bug atau mengapa ia mengabaikan batas limits.conf
dan mengapa tidak menerapkan batas yang ulimit -n
mengklaimnya?
PS: Saya benar-benar tidak berpikir batas memori mengenai sebelum batas proses. Mesin ini memiliki ram 8GB dan hanya menggunakan 4% saja pada saat saya menjatuhkan bom fork.
EDIT:
Saya berhasil mereproduksi ini di live CD. Jadi saya kira ini pasti bug. Ini pada dasarnya berakhir dengan membunuh semua proses, termasuk sistem hal-hal penting seperti X11, SSHD dll.
Setiap pengguna dapat merusak sistem.
process
ulimit
resource-limiting
d_inevitable
sumber
sumber
ulimit -u
user@thebe:~$ ulimit -u
1024
ulimit -u
saya mendapatkan 31325. Ketika saya menjalankannyaulimit -u 512
pergi 512. Ketika saya menjalankan bom garpu itu, sisa dari sistem saya baik-baik saja.Jawaban:
Ternyata itu
/etc/security/limits.conf
bekerja, tetapi perlu reboot sebelum ditafsirkan. Log-out tidak cukup.Saya merekomendasikan kepada siapa saja untuk membatasi ke file konfigurasi seperti
Ganti
user
dengan nama pengguna yang ingin Anda batasi.Atau lebih baik:
Ganti
group
dengan grup pengguna apa pun yang ingin Anda batasi.sumber