Explications sur cette commande bash ":(){:|:&};:"

Explications sur cette commande bash ":(){:|:&};:" - Linux et OS Alternatifs

Marsh Posté le 09-08-2005 à 14:25:48    

Bonjour à tous,  
 
Un ami à moi m'a envoyé cette commande "relativement" esothérique qui, si executée dans un shell bash, plante le système. J'ai également tenté de l'exécuter sous tcsh mais sans succès.  
 

Code :
  1. :(){ :|: &};:


 
attention: ça fonctionne! ;) La direction se décharge de toutes responsabilités... bla bla bla.  
 
D'après ce que je crois comprendre, cela lance tous les exécutables disponibles dans le PATH du shell mais je n'en suis pas sur et, quoi qu'il en soit, je n'en comprends pas la syntaxe.
 
Quelqu'un pourrait-il m'expliquer toutes les subtilités de ce truc? :)


Message édité par olib le 09-08-2005 à 14:57:18

---------------
olib
Reply

Marsh Posté le 09-08-2005 à 14:25:48   

Reply

Marsh Posté le 09-08-2005 à 14:32:25    

Code :
  1. jym@toulouse ~ $ :(){:|:&};:
  2. -bash: syntax error near unexpected token `{:'


 
Sinon, ca ressemble a une bonne vieille fork bomb des familles je dirais...
 
C est pas vraiment un plantage, limite le nombre de processus avec ulimit et réessaie.


Message édité par Gf4x3443 le 09-08-2005 à 14:32:43
Reply

Marsh Posté le 09-08-2005 à 14:36:17    

ouais je me doutais bien que c'etait un truc du genre mais la concision du truc m'intrigue en fait :)
 
effectivement, un petit coup d'ulimit devrait la "désamorcer" ;)
 
j'aimerais juste la comprendre sans devoir me farcir l'intégralité de la man-page de bash :p


---------------
olib
Reply

Marsh Posté le 09-08-2005 à 14:38:35    

tiens, effectivment, elle ne fonctionne plus chez moi non plus, ya un charactère qui a du se perdre qqpart... je vais investiguer...


---------------
olib
Reply

Marsh Posté le 09-08-2005 à 14:46:18    

Ok, donc testé, j ai pas vu ton erreur dans la syntaxe.
 
La bonne c est celle la:
 

Code :
  1. :(){ :|: &};:


 
C est pas vraiment un plantage, c est plus du thrashing.
 
Bah voila ce que ca donne, si tu fais mumuse avec ulimit:
 

Code :
  1. jym@toulouse ~ $ ulimit -u 10
  2. jym@toulouse ~ $ :(){ :|: &};:
  3. -bash: fork: Ressource temporairement non disponible
  4. jym@toulouse ~ $


 
Pour comprendre la syntaxe, tu cherches partout sous google, c est expliqué :D "fork bomb bash"


Message édité par Gf4x3443 le 09-08-2005 à 14:46:34
Reply

Marsh Posté le 09-08-2005 à 14:56:35    

ok, les espaces sont importants on dirait!
 
je vais voir quoi avec google... merci!


---------------
olib
Reply

Marsh Posté le 09-08-2005 à 15:00:50    

Gf4x3443 a écrit :

Ok, donc testé, j ai pas vu ton erreur dans la syntaxe.
 
La bonne c est celle la:
 

Code :
  1. :(){ :|: &};:


 
C est pas vraiment un plantage, c est plus du thrashing.
 
Bah voila ce que ca donne, si tu fais mumuse avec ulimit:
 

Code :
  1. jym@toulouse ~ $ ulimit -u 10
  2. jym@toulouse ~ $ :(){ :|: &};:
  3. -bash: fork: Ressource temporairement non disponible
  4. jym@toulouse ~ $


 
Pour comprendre la syntaxe, tu cherches partout sous google, c est expliqué :D "fork bomb bash"


 
ils sont méchants ces petits smileys  :D

Reply

Marsh Posté le 09-08-2005 à 15:16:36    

Pour fork bomber une machine, je connaissais pas cette commande la.
 
Moi j utilisais celle la:
 

Code :
  1. $0 & $0 &


 
Parce qu il y en a toujours qui prétendent qu il te faut compiler du C pour pouvoir fork bomber un systeme  [:spamafote]
 
Certaines personnes ne sont pas conscientes qu il faut mettre des limites aux utilisateurs (via PAM par exemple), parce que mine de rien, quelqu un qui débute en programmation, s il se lance dans des forks et que son programme tourne en boucle, c est sympa pour les petits copains qui bossent aussi sur la machine.


Message édité par Gf4x3443 le 09-08-2005 à 15:17:04
Reply

Marsh Posté le 09-08-2005 à 16:32:57    

Gf4x3443 a écrit :

Pour fork bomber une machine, je connaissais pas cette commande la.
Certaines personnes ne sont pas conscientes qu il faut mettre des limites aux utilisateurs (via PAM par exemple), parce que mine de rien, quelqu un qui débute en programmation, s il se lance dans des forks et que son programme tourne en boucle, c est sympa pour les petits copains qui bossent aussi sur la machine.


 
moi aussi j'ai fait des études dans le domaine de l'informatique! ;)
 
vive les travaux de programmation // et les sémaphores qu'on oublie de libérer! :p


---------------
olib
Reply

Marsh Posté le 09-08-2005 à 17:34:42    

Ca marche aussi avec zsh :)
Mais NetBSD-3 a l'air protege contre ce type d'attaque.


Message édité par deather2 le 09-08-2005 à 17:35:30
Reply

Marsh Posté le 09-08-2005 à 17:34:42   

Reply

Marsh Posté le 09-08-2005 à 18:21:03    

C'est activé par défaut sur les BSD mais rarement sur les distros linux
 
--> /etc/security/limits.conf  
 
 
Il ne faut pas mettre les limites trop bas non plus sinon c'est pénible coté utilisateur
(par ex avec KDE)


---------------
Fluctuat nec mergitur
Reply

Marsh Posté le 09-08-2005 à 18:42:00    

le : en bash c'est quoi ?
 
edit:

      : [arguments]
              Pas d'effet. Cette commande ne  fait  rien  d'autre
              que  l'expansion  des arguments et la mise en place
              des redirections. Le code de retour est nul.


 
je pige pas le fonctionnement de la bombe là. :/


Message édité par Zaib3k le 09-08-2005 à 18:47:27

---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 09-08-2005 à 23:13:01    

Reply

Marsh Posté le 09-08-2005 à 23:31:21    

merci
 
que c'est fourbe de redéfinir : ! :D


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed