Perlindungan bom garpu tidak berfungsi: Jumlah proses tidak terbatas


8

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.confdan mengapa tidak menerapkan batas yang ulimit -nmengklaimnya?

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.


-n adalah jumlah deskriptor file, bukan proses. Anda inginulimit -u
psusi

@psusi, terima kasih, tetapi itu memberikan hasil yang sama: suser@thebe:~$ ulimit -u 1024
d_inevitable

Ketika saya menjalankan ulimit -usaya mendapatkan 31325. Ketika saya menjalankannya ulimit -u 512pergi 512. Ketika saya menjalankan bom garpu itu, sisa dari sistem saya baik-baik saja.
psusi

Jawaban:


8

Ternyata itu /etc/security/limits.confbekerja, tetapi perlu reboot sebelum ditafsirkan. Log-out tidak cukup.

Saya merekomendasikan kepada siapa saja untuk membatasi ke file konfigurasi seperti

user hard nproc 512

Ganti userdengan nama pengguna yang ingin Anda batasi.

Atau lebih baik:

@group hard nproc 512

Ganti groupdengan grup pengguna apa pun yang ingin Anda batasi.


Bergantung pada perangkat lunak yang Anda gunakan, bahkan sistem satu pengguna mungkin memerlukan lebih banyak proses dari 512. Jika Anda menemukan hal-hal yang secara misterius tidak berfungsi setelah menerapkan ini, Anda mungkin perlu menyesuaikan jumlah proses aktual yang Anda izinkan.
Zeiss Ikon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.