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.

d_inevitable
sumber
-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.

d_inevitable
sumber
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