Um eine Gabelbombe zu verhindern, folgte ich diesen http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm
ulimit -a
spiegelt die neuen Einstellungen wieder, aber wenn ich (wie root
in bash
) :(){ :|:&};:
laufe, geht die VM immer noch auf max. CPU + RAM und das System friert ein.
Wie kann sichergestellt werden, dass Benutzer das System nicht durch Verwendung von Gabelbomben oder Ausführen einer Buggy-Anwendung zum Absturz bringen?
Betriebssystem: RHEL 6.4
root
zufällig? Aus welcher Shell probierst du es? (Das fehlende Leerzeichen nach{
schlägt vor,zsh
aber ich kann es dort auch nicht reproduzieren).Antworten:
Der Superuser oder ein Prozess mit den Funktionen CAP_SYS_ADMIN oder CAP_SYS_RESOURCE sind von dieser Einschränkung nicht betroffen. Diese Einschränkung kann nicht geändert werden.
root
kann immer Prozesse gabeln.Wenn eine Software nicht als vertrauenswürdig eingestuft wird, sollte sie nicht wie
root
gewohnt ausgeführt werden.quelle
Damit diese Änderung allgegenwärtig wird, müssen Sie der gesamten Umgebung diese Grenzwerte hinzufügen. Änderungen, die mit dem
ulimit
Befehl vorgenommen werden, gelten nur für die aktuelle Umgebung.HINWEIS: Dies hat keine Auswirkungen auf den Root-Benutzer!
Beispiel
Bearbeiten Sie diese Datei:
vi /etc/security/limits.conf
und fügen Sie der Datei Einträge hinzu, die die Anzahl der Prozesse (nproc
) begrenzen, die ein bestimmter Benutzer oder eine bestimmte Benutzergruppe haben darf.HINWEIS: Diese Datei enthält weitere Beispiele. Seien Sie vorsichtig, wenn Sie "all" (auch bekannt als "all"
*
) verwenden. Dadurch werden auch die Systemkonten eingeschränkt.Verweise
quelle
pam_limits
.pam_limits
möglicherweise ersetzt wird, sobald die Akzeptanz von cgroups zunimmt .cgroups
würden sie bessere Regler für die Netzwerk- und CPU-Auslastung erhalten.