<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Debian or not to be ? 2.0 &#187; Bash</title> <atom:link href="http://www.crashdump.fr/tag/bash/feed/" rel="self" type="application/rss+xml" /><link>http://www.crashdump.fr</link> <description>that is the question</description> <lastBuildDate>Mon, 23 Jan 2012 13:14:39 +0000</lastBuildDate> <language>fr</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <item><title>:(){ :&#124;:&amp; };: ? Vous avez dit Forkbomb ?</title><link>http://www.crashdump.fr/debian/vous-avez-dit-forkbomb-79/</link> <comments>http://www.crashdump.fr/debian/vous-avez-dit-forkbomb-79/#comments</comments> <pubDate>Fri, 24 Aug 2007 21:01:25 +0000</pubDate> <dc:creator>Crashdump</dc:creator> <category><![CDATA[Debian]]></category> <category><![CDATA[Sécurité]]></category> <category><![CDATA[Bash]]></category> <category><![CDATA[bomb]]></category> <category><![CDATA[c]]></category> <category><![CDATA[fork]]></category> <category><![CDATA[fork bomb]]></category> <category><![CDATA[perl]]></category> <category><![CDATA[processus]]></category><guid isPermaLink="false">http://blog.crashdump.fr/index.php/2008/02/24/vous-avez-dit-forkbomb/</guid> <description><![CDATA[Qu&#8217;est ce qu&#8217;une fork bomb ? La fork bomb est un programme se dupliquant a l&#8217;infini. Si l&#8217;on prend en compte que le nombre de processus pouvant être exécutés simultanément sur un ordinateur est limité, vous comprendrez vite ou cela nous mène ! Comment elle fonctionne exactement ? Comme je vous l&#8217;ai dit plus haut, [...]]]></description> <content:encoded><![CDATA[<h2><li>Qu&#8217;est ce qu&#8217;une fork bomb ?</li></h2><p>La fork bomb est un programme se dupliquant a l&#8217;infini. Si l&#8217;on prend en compte que le nombre de processus pouvant être exécutés simultanément sur un ordinateur est limité, vous comprendrez vite ou cela nous mène !</p><h2><li>Comment elle fonctionne exactement ?</li></h2><p>Comme je vous l&#8217;ai dit plus haut, Elle créé un grand nombre de processus très rapidement afin de saturer le nombre de processus maximum du système. Si la table des processus est saturée, aucun nouveau programme ne peut démarrer tant qu&#8217;aucun autre ne termine. Et encore, même si cela arrive, il est peu probable qu&#8217;un programme utile démarre étant donné que les instances de la bombe attendent chacune d&#8217;occuper cet emplacement libre. Bref, la misère.</p><h2><li>Résultats ?</li></h2><p>Non seulement les fork bombs utilisent de la place dans la table des processus, mais elles utilisent chacune du temps processeur et de la mémoire. En conséquence, le système et les programmes tournant à ce moment-là ralentissent et deviennent même impossibles à utiliser. Pour peut que les processus lancés soit un peut gourmand en mémoire, le système peut rapidement swapper et occuper toute la mémoire virtuelle (SWAP). Les fork bomb peuvent donc être considérées comme des virus non destructifs&#8230; Bien que énervants.<br /> <span id="more-79"></span></p><h2><li>Exemples:</li></h2><p><strong>En Perl:</strong></p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">perl -e &quot;fork while fork&quot; &amp;</div></td></tr></tbody></table></div><p><strong>en Bash :</strong></p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ :(){ :|:&amp; };:</div></td></tr></tbody></table></div><p><strong>Via .Bat, ms-dos:</strong></p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">:s<br /> start notepad.exe<br /> goto s</div></td></tr></tbody></table></div><p><strong>En C:</strong></p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#include &lt;unistd.h&gt;<br /> int main(void) {<br /> &nbsp; while(1) { <br /> &nbsp; &nbsp; fork(); <br /> &nbsp; } <br /> &nbsp; return 0; <br /> }</div></td></tr></tbody></table></div><p><strong>En HTML:</strong></p><p><em>forkbomb.htm:</em></p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt; html&gt;<br /> &lt; frameset&gt;<br /> &nbsp; &lt; frame src=&quot;forkbomb.htm&quot; name=&quot;ForkB1&quot;&gt;<br /> &nbsp; &lt; frame src=&quot;forkbomb.htm&quot; name=&quot;ForkB2&quot;&gt;<br /> &lt; /frameset&gt;<br /> &lt; /html&gt;</div></td></tr></tbody></table></div><h2><li>Difficulté</li></h2><p>Une fois la fork bomb lancée avec succès dans un système, il peut devenir impossible de retrouver un fonctionnement normal sans redémarrer, étant donné que la seule solution à une fork bomb est de détruire toutes ses instances. Essayer d&#8217;utiliser un programme pour tuer les processus requiert la création d&#8217;un processus, ce qui peut être impossible s&#8217;il n&#8217;y a pas d&#8217;emplacement vide dans la table des processus, ou d&#8217;espace dans les structures mémoires.</p><h2><li>Prévention</li></h2><p>La fork bomb fonctionne en créant autant de processus que possible. Ainsi, pour empêcher une fork bomb, il suffit simplement de limiter le nombre de processus pouvant être exécutés par un programme ou par un utilisateur. En permettant aux utilisateurs de lancer seulement un petit nombre de processus.</p><h2><li>Protection</li></h2><p><em>J&#8217;aborderais uniquement la solution sous linux, sachant que je ne connais que celle la. :)</em></p><p>Les systèmes de type Unix permettent de limiter le nombre de processus via la commande ulimit.</p> ]]></content:encoded> <wfw:commentRss>http://www.crashdump.fr/debian/vous-avez-dit-forkbomb-79/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Bash &#8230; #1</title><link>http://www.crashdump.fr/debian/le-bash-1-8/</link> <comments>http://www.crashdump.fr/debian/le-bash-1-8/#comments</comments> <pubDate>Tue, 03 Apr 2007 18:31:10 +0000</pubDate> <dc:creator>Crashdump</dc:creator> <category><![CDATA[Debian]]></category> <category><![CDATA[Bash]]></category> <category><![CDATA[cours]]></category> <category><![CDATA[date]]></category> <category><![CDATA[export]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[prompt]]></category> <category><![CDATA[tumbnail]]></category> <category><![CDATA[YELLOW]]></category><guid isPermaLink="false">http://blog.aemeth.org/?p=8</guid> <description><![CDATA[Toutes les distributions Linux ont étés avant tout concues de façon a etre utilisée via un shell, et dans mon utilisation quotidienne la ligne de commande est un outil indispensable&#8230; d&#8217;autant plus que pour certaines tâches , il n&#8217;y a pas plus rapide ! Ce billet est le premier d&#8217;une série sur la customisation et [...]]]></description> <content:encoded><![CDATA[<p>Toutes les distributions Linux ont étés avant tout concues de façon a etre utilisée via un shell, et dans mon utilisation quotidienne la ligne de commande est un outil indispensable&#8230; d&#8217;autant plus que pour certaines tâches , il n&#8217;y a pas plus rapide ! Ce billet est le premier d&#8217;une série sur la customisation et l&#8217;utilisation de Bash.</p><h2><li>Le Prompt</li></h2><p>Le prompt est la première chose que l&#8217;on voit lors de l&#8217;utilisation du shell, il peut donc mettre en valeur des informations importantes. Il doit donc indiquer, au mininum ces information importantes:<br /> - La machine sur laquelle on est loggué<br /> - Le login<br /> - Le répertoire courant<br /> Pour cela j&#8217;utilise la configuration suivante soit dans le fichier /etc/bash.bashrc (tous les utilisateurs) soit dans mon ~/.bashrc (l&#8217;utilisateur courant) :<br /> <span id="more-8"></span></p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># couleurs<br /> C_RED=&quot;\[\e[1;31m\]&quot;<br /> C_BLUE=&quot;\[\e[1;34m\]&quot;<br /> C_GRAY=&quot;\[\e[1;30m\]&quot;<br /> C_WHITE=&quot;\[\e[1;37m\]&quot;<br /> C_YELLOW=&quot;\[\e[1;33m\]&quot;<br /> C_DEF=&quot;\[\033[0m\]&quot;<br /> mUID=`id -u`<br /> MACHINE=&quot;Lorien&quot;<br /> IP=&quot;192.168.0.243&quot;<br /> if [ &quot;$mUID&quot; = &quot;0&quot; ] ; then<br /> &nbsp; &nbsp;PS1=&quot;${C_YELLOW}&gt;${C_DEF} ${C_RED}\u${C_DEF}@${MACHINE}${C_YELLOW} [${C_DEF}$IP${C_YELLOW}]${C_DEF}:\w${C_RED}#${C_DEF} &quot;<br /> &nbsp; &nbsp;PS2=&quot;${C_RED}&gt;${C_DEF} &nbsp;&quot;<br /> else<br /> &nbsp; &nbsp;PS1=&quot;${C_YELLOW}&gt;${C_DEF} ${C_BLUE}\u${C_DEF}@${MACHINE}${C_YELLOW} [${C_DEF}$IP${C_YELLOW}]${C_DEF}:\w${C_BLUE}\$ ${C_DEF}&quot;<br /> &nbsp; &nbsp;PS2=&quot;${C_BLUE}&gt;${C_DEF} &nbsp;&quot;<br /> fi<br /> export PS2<br /> export PS1</div></td></tr></tbody></table></div><p>Cette configuration fait en sorte d&#8217;avoir un prompt bleu, jaune et blanc pour un utilisateur normal et rouge, jaune et blanc pour l&#8217;utilisateur root attirant ainsi mon attention sur le fait qu&#8217;en root, on ne tape par n&#8217;importe quoi&#8230; Il m&#8217;indique aussi le nom de la machine ainsi que son adresse IP. Ce qui donne :</p><p><a href='http://www.crashdump.fr/wp-content/uploads/2008/02/prompt.jpg' title='PromptPerso' rel='lightbox'><img src='http://www.crashdump.fr/wp-content/uploads/2008/02/prompt.thumbnail.jpg' alt='PromptPerso' /></a></p><p>Pour que vous puissiez customiser votre prompt a votre gout, voiçi la liste des codes de couleurs et de correspondance.</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:450px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;strong&gt;Les fonctions communes:&lt;/strong&gt;<br /> &nbsp; &nbsp; \d# La date<br /> &nbsp; &nbsp; \h# Nom de la machine<br /> &nbsp; &nbsp; \\# Un backslash<br /> &nbsp; &nbsp; \r# Retour à la ligne<br /> &nbsp; &nbsp; \t# L’heure<br /> &nbsp; &nbsp; \u# Utilisateur<br /> &nbsp; &nbsp; \v# Version du Bash<br /> &nbsp; &nbsp; \w# Repertoire courant complet<br /> &nbsp; &nbsp; \W# Repertoire courant<br /> &nbsp; &nbsp; \$# Le symbole $<br /> &lt;strong&gt;Les couleurs:&lt;/strong&gt;<br /> &nbsp; &nbsp; Noir:0;30<br /> &nbsp; &nbsp; Rouge:0;31<br /> &nbsp; &nbsp; Vert:0;32<br /> &nbsp; &nbsp; Marron:0;33<br /> &nbsp; &nbsp; Bleu:0;34<br /> &nbsp; &nbsp; Violet:0;35<br /> &nbsp; &nbsp; Cyan:0;36<br /> &nbsp; &nbsp; Gris clair:0;37<br /> &nbsp; &nbsp; Gris:1;30<br /> &nbsp; &nbsp; Rose:1;31<br /> &nbsp; &nbsp; Vert clair:1;32<br /> &nbsp; &nbsp; Marron clair:1;33<br /> &nbsp; &nbsp; Bleu clair:1;34<br /> &nbsp; &nbsp; Violet clair:1;35<br /> &nbsp; &nbsp; Cyan clair:1;36<br /> &nbsp; &nbsp; Blanc:1;37</div></td></tr></tbody></table></div><h2><li>Le titre des terminaux graphiques</li></h2><p>De la même manière que le prompt, le titre des terminaux est très utile pour se repèrer lorsqu&#8217;on utilise Xorg. Dans un terminal, il est possible de changer ce titre de manière dynamique avec un simple echo, il suffit alors d&#8217;utiliser la variable PROMPT_COMMAND pour stocker une commande que le shell éxécutera à chaque affichage du prompt.</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">case $TERM in<br /> xterm*)<br /> &nbsp; PROMPT_COMMAND='echo -ne &quot;\033]0;${USER}@${MACHINE}[$IP]: ${PWD}\007&quot;'<br /> &nbsp; echo -ne &quot;\033]0;${USER}@${MACHINE}[$IP]: ${PWD}\007&quot;<br /> &nbsp; &nbsp;;;<br /> &nbsp;*)<br /> &nbsp; setterm -blength 0<br /> &nbsp; ;;<br /> esac</div></td></tr></tbody></table></div><p>Avec ces quelques lignes, les terminaux affiche la même chose que le prompt dans leur titre (sans les couleurs) lorsque le type de terminal commence par &laquo;&nbsp;xterm&nbsp;&raquo; (ce qui est le cas avec xterm mais aussi gnome-terminal ).</p><p>À noter que la seconde partie du case permet de supprimer le beep très énervant beep lorsqu&#8217;on est en console sans Xorg.</p> ]]></content:encoded> <wfw:commentRss>http://www.crashdump.fr/debian/le-bash-1-8/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Served from: www.crashdump.fr @ 2012-02-04 18:27:04 by W3 Total Cache -->
