Zabezpieczenie widełek nie działa: Ilość procesów nie jest ograniczona

8

Właśnie zdałem sobie sprawę, że mój system nie ogranicza właściwie liczby procesów na użytkownika, a tym samym nie uniemożliwia użytkownikowi zrobienia bomby widelcowej i awarii całego systemu:

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.

Czy to błąd lub dlaczego ignoruje limit limits.confi dlaczego nie stosuje limitu, który ulimit -ntwierdzi, że jest?

PS: Naprawdę nie sądzę, aby limit pamięci został przekroczony przed limitem procesu. Ta maszyna ma 8 GB pamięci RAM i zużywała tylko 4% w momencie, gdy upuściłem bombę widelcową.

EDYTOWAĆ:

Udało mi się to odtworzyć na płycie CD na żywo. Myślę, że to musi być błąd. Zasadniczo kończy się to zabijaniem wszystkich procesów, w tym krytycznych dla systemu rzeczy, takich jak X11, SSHD itp.

Każdy użytkownik może zawiesić system.

d_inevitable
źródło
-n to liczba deskryptorów plików, a nie procesów. Chceszulimit -u
psusi
@psusi, dziękuję, ale to daje ten sam wynik: suser@thebe:~$ ulimit -u 1024
d_inevitable
Kiedy uruchamiam ulimit -u, otrzymuję 31325. Kiedy uruchamiam ulimit -u 512, idzie 512. Kiedy uruchamiam tę bombę wideł, reszta mojego systemu jest w porządku.
psusi

Odpowiedzi:

8

Okazuje się, że /etc/security/limits.confto działa, ale wymaga ponownego uruchomienia, zanim zostanie zinterpretowane. Wylogowanie nie jest wystarczające.

Polecam każdemu ograniczenie pliku konfiguracyjnego, takiego jak

user hard nproc 512

Zastąp userdowolną nazwą użytkownika, którą chcesz ograniczyć.

Albo lepiej:

@group hard nproc 512

Zastąp groupdowolną grupą użytkowników, którą chcesz ograniczyć.

d_inevitable
źródło
W zależności od używanego oprogramowania nawet system dla jednego użytkownika może wymagać więcej procesów niż 512. Jeśli po wdrożeniu okaże się, że rzeczy w tajemniczy sposób nie działają, konieczne może być dostosowanie faktycznej liczby dozwolonych procesów.
Zeiss Ikon,