Comment éviter la bombe à fourche?

14

Pour éviter la bombe à la fourche, j'ai suivi ceci http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm

ulimit -areflète les nouveaux paramètres, mais lorsque j'exécute (comme rootdans bash), :(){ :|:&};:la machine virtuelle continue de fonctionner avec un processeur + RAM maximum et le système se fige.

Comment s'assurer que les utilisateurs ne seront pas en train de faire tomber le système en utilisant des bombes à fourche ou en exécutant une application buggy?

OS: RHEL 6.4

user44441
la source
Je ne peux pas le reproduire ici. Essayez-vous cela comme rootpar hasard? De quel shell essayez-vous? (l'espace manquant après {suggère zshmais je ne peux pas le reproduire là non plus).
Stéphane Chazelas
Stephane Chazelas: 1] Je courais en tant que root, je l'ai essayé avec un utilisateur normal, cela fonctionne. 2] L'espace manquant est une faute de frappe, j'utilise bash.Sorry. 3] Est-ce que ulimit ne peut pas modérer l'utilisateur "root"?
user44441
@ stephane-chazelas 1] Je courais en tant que root, je l'ai essayé avec un utilisateur normal, cela fonctionne. 2] L'espace manquant est une faute de frappe, j'utilise bash.Sorry. 3] Est-ce que ulimit ne peut pas modérer l'utilisateur "root"?
user44441

Réponses:

8

Le superutilisateur ou tout processus avec les capacités CAP_SYS_ADMIN ou CAP_SYS_RESOURCE ne sont pas affectés par cette limitation, ce n'est pas quelque chose qui peut être changé. rootpeut toujours bifurquer des processus.

Si certains logiciels ne sont pas fiables, ils ne devraient pas fonctionner de roottoute façon.

Stéphane Chazelas
la source
3
À moins qu'il ne fasse quelque chose de spécial, presque rien ne devrait de toute façon fonctionner en tant que root. root est le compte que vous utilisez lorsque vous en avez assez d'essayer de déterminer les privilèges / droits dont vous avez besoin pour le comprendre ou un service système fondamental.
Bratchley
11

Pour que ce changement soit omniprésent, vous devrez ajouter ces limites à l'ensemble de l'environnement. Les modifications à l'aide de la ulimitcommande concernent uniquement l'environnement actuel.

REMARQUE: cela n'aura aucun effet sur l'utilisateur root!

Exemple

Modifiez ce fichier: vi /etc/security/limits.confet ajoutez des entrées au fichier en limitant le nombre de processus ( nproc) qu'un utilisateur ou un groupe d'utilisateurs spécifique peut avoir.

vivek hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200

REMARQUE: il existe d'autres exemples dans ce fichier. Soyez prudent avec l'utilisation du "tout" (aka. *) Cela limitera également les comptes système.

Les références

slm
la source
Alors que «tous» limitera les comptes système, la plupart des services qui sont exécutés par ces comptes système ne transitent pas pam_limits.
jordanm
Est-ce que ulimit ne peut pas modérer l'utilisateur «root»?
user44441
Tout comme une idée générale pour ajouter plus à la publication, vous voudrez peut-être ajouter quelque chose à propos de pam_cgroup à la publication, car la plate-forme de l'OP le prend en charge et pam_limitssera finalement remplacée par celle-ci une fois que les groupes de discussion auront une adoption plus large.
Bratchley
De plus, comme il semble que l'OP joue avec les politiques d'utilisation des ressources, cgroupscela leur donnerait de meilleurs boutons pour l'utilisation du réseau et du processeur.
Bratchley