<?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>notsocomplicated</title>
	<atom:link href="http://blog.notsocomplicated.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.notsocomplicated.org</link>
	<description>scratch your head</description>
	<lastBuildDate>Tue, 05 Jul 2011 00:08:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>WordPress sur un serveur perso et réseau local + news</title>
		<link>http://blog.notsocomplicated.org/2011/07/wordpress-sur-un-serveur-perso-et-reseau-local-news/</link>
		<comments>http://blog.notsocomplicated.org/2011/07/wordpress-sur-un-serveur-perso-et-reseau-local-news/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 17:20:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blog.notsocomplicated.org/?p=174</guid>
		<description><![CDATA[Re-mise à jour : j&#8217;ai tout remis comme avant et j&#8217;utiliserai dorénavant le VPN Your Freedom pour administrer et visionner le site. Mise à jour : ça marche pas, je tue le chien et je reviens. J&#8217;avais un souci assez bloquant avec ce blog depuis le début : impossible de se connecter à l&#8217;interface d&#8217;admin [...]]]></description>
			<content:encoded><![CDATA[<p><em>Re-mise à jour : j&#8217;ai tout remis comme avant et j&#8217;utiliserai dorénavant le VPN <a href="http://www.your-freedom.net" target="_blank">Your Freedom</a> pour administrer et visionner le site.</em></p>
<p><em>Mise à jour : ça marche pas, je tue le chien et je reviens.</em></p>
<p>J&#8217;avais un souci assez bloquant avec ce blog depuis le début : impossible de se connecter à l&#8217;interface d&#8217;admin en local, et impossible de visionner le blog correctement en local (pas de css)&#8230;</p>
<p>Problème résolu grâce à <a title="le post en question" href="http://www.wordpress-fr.net/support/viewtopic.php?id=2681" target="_blank">ce post</a> sur le forum de la communauté WordPress francophone ! Il suffit d&#8217;aller dans la base de données MySQL, d&#8217;aller dans la table <strong>wp_options</strong>, de chercher l&#8217;option <strong>siteurl</strong> et de remplacer sa valeur par l&#8217;adresse locale qui sert à accéder au blog. Cette valeur était chez moi à</p>
<pre>http://blog.notsocomplicated.org</pre>
<p>Elle a été modifiée en</p>
<pre>http://192.186.1.40/blog.notsocomplicated.org</pre>
<p>Deuxième souci, mais moindre : comme je n&#8217;ai pas pu accéder à l&#8217;interface d&#8217;admin depuis longtemps, les spams se sont accumulés&#8230; 1000 spams à trier <img src='http://blog.notsocomplicated.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2011/07/wordpress-sur-un-serveur-perso-et-reseau-local-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino et PHP</title>
		<link>http://blog.notsocomplicated.org/2011/01/arduino-php/</link>
		<comments>http://blog.notsocomplicated.org/2011/01/arduino-php/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 17:28:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blog.notsocomplicated.org/?p=165</guid>
		<description><![CDATA[Une manière simple d&#8217;agir sur un Arduino branché en USB via une page PHP L&#8217;Arduino fait tourner un sketch qui allume et éteint la led du pin 13 à une période déterminée par une variable reçue par le lien série. La variable doit être un octet compris entre 0 et 255. J&#8217;ai piqué le code [...]]]></description>
			<content:encoded><![CDATA[<p><em>Une manière simple d&#8217;agir sur un Arduino branché en USB via une page PHP</em></p>
<p>L&#8217;Arduino fait tourner un sketch qui allume et éteint la led du pin 13 à une période déterminée par une variable reçue par le lien série. La variable doit être un octet compris entre 0 et 255.</p>
<p>
J&#8217;ai piqué le code PHP <a href="http://anealkhimani.com/2010/02/21/web-enabled-pantilt-camera-with-arduino-and-php-part-3/">là</a>. Si la page voit la variable &#8216;action&#8217; qui revient avec une valeur déterminée (&#8216;steady&#8217;, &#8216;lent&#8217; ou &#8216;rapide&#8217;), elle enverra via le port série un nombre (5, 50 ou 255). Histoire de savoir quel est l&#8217;état du clignotement quand on charge la page, on stocke l&#8217;état à chaque changement d&#8217;état dans le fichier data.txt, lequel est lu à chaque chargement de la page : le lien correspondant à l&#8217;état est désactivé, tant il est vrai qu&#8217;il ne servirait à rien de re-provoquer l&#8217;état actuel, non ?</p>
<p>Problème : l&#8217;Arduino reboote à chaque fois que le port série est ouvert. Une solution est de mettre une résistance de 120 ohm entre le 5V et RESET, comme expliqué <a href="http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection">ici</a>. Il faudra peut-être faire un <em>chmod 666</em> sur le port série.</p>
<p>On obtient donc un Arduino interfacé avec les internets, c&#8217;est-y pas beau ?</p>
<p>Les fichiers sont <a href="http://notsocomplicated.org/share/arduino-php.zip">là</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2011/01/arduino-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>J&#8217;ai dit &#171;&#160;démonter&#160;&#187; !</title>
		<link>http://blog.notsocomplicated.org/2010/04/jai-dit-demonter/</link>
		<comments>http://blog.notsocomplicated.org/2010/04/jai-dit-demonter/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 08:00:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[démonter]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[lsof]]></category>
		<category><![CDATA[nautilus]]></category>
		<category><![CDATA[resource busy]]></category>
		<category><![CDATA[sd card]]></category>
		<category><![CDATA[umount]]></category>

		<guid isPermaLink="false">http://blog.notsocomplicated.org/?p=154</guid>
		<description><![CDATA[J&#8217;ai une carte SD qui ne veut pas se laisser démonter : à ce qu&#8217;il paraît, une application en empêcherait le démontage (Resource Busy). J&#8217;ai essayé de la libérer en quittant toutes les applications classiques qui étaient ouvertes, sans succès : audacity, thunderbird, pidgin, firefox, rhythmbox, calculatrice, OO.org calc, terminal, les fenêtres nautilus. La corbeille [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai une carte SD qui ne veut pas se laisser démonter : à ce qu&#8217;il paraît, une application en empêcherait le démontage (<em>Resource Busy</em>). J&#8217;ai essayé de la libérer en quittant toutes les applications classiques qui étaient ouvertes, sans succès : audacity, thunderbird, pidgin, firefox, rhythmbox, calculatrice, OO.org calc, terminal, les fenêtres nautilus. La corbeille a été vidée, itou. J&#8217;ai aussi essayé <em>umount -l /media/disk</em>, rien.</p>
<p>Méheu.</p>
<p>Il faut d&#8217;abord connaître l&#8217;endroit où la carte est montée (<em>/media/disk</em> dans mon cas), puis essayer de savoir quelle est cette application qui nous emmerde.</p>
<pre>lsof | grep /media/disk</pre>
<p>Cette commande renvoie la liste des processus (accompagnés de leur pid et tout le toutim, mais aussi du nom des fichiers qu&#8217;ils utilisent) amputée de toutes les lignes ne contenant pas <em>/media/disk</em>. Dans mon cas, c&#8217;était Nautilus qui gardait la main sur un fichier son mis à la corbeille (<em>/media/disk/.Trash-1000/super-interview.wav</em>)pour une raison inconnue. Il y a sûrement mieux comme commande, lsof a plein d&#8217;options, mais j&#8217;avais pas envie de <em>découvrir-ce-merveilleux-outil-qu&#8217;est-lsof</em>. Un autre jour peut-être (:</p>
<pre>killall nautilus</pre>
<pre>umount /media/disk</pre>
<p>Et ça marche, le volume est démonté. Ya plus qu&#8217;à redémarrer Nautilus : alt+f2, taper <em>nautilus</em>, entrée, et hop !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2010/04/jai-dit-demonter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Houston, nous avons une neufBox</title>
		<link>http://blog.notsocomplicated.org/2010/04/houston-nous-avons-une-neufbox/</link>
		<comments>http://blog.notsocomplicated.org/2010/04/houston-nous-avons-une-neufbox/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 10:50:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[neufbox]]></category>
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://blog.notsocomplicated.org/?p=148</guid>
		<description><![CDATA[Non, le serveur n&#8217;est pas tombé dans la journée d&#8217;hier. Il y a eu une mise à jour de la sfr/neufBox pendant toute la journée, qui s&#8217;est soldée par un redémarrage de la dite box, ce que le serveur (en DHCP, pourtant) semble ne pas apprécier. J&#8217;ai fixé son adresse IP à sa MAC dans [...]]]></description>
			<content:encoded><![CDATA[<p>Non, le serveur n&#8217;est pas tombé dans la journée d&#8217;hier. Il y a eu une mise à jour de la sfr/neufBox pendant toute la journée, qui s&#8217;est soldée par un redémarrage de la dite box, ce que le serveur (en DHCP, pourtant) semble ne pas apprécier. J&#8217;ai fixé son adresse IP à sa MAC dans la box, on verra bien !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2010/04/houston-nous-avons-une-neufbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matrice de paramètres et stockage de presets avec Pure Data</title>
		<link>http://blog.notsocomplicated.org/2010/04/matrice-stockage-presets-pure-data/</link>
		<comments>http://blog.notsocomplicated.org/2010/04/matrice-stockage-presets-pure-data/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 14:32:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[pure data]]></category>

		<guid isPermaLink="false">http://blog.notsocomplicated.org/?p=134</guid>
		<description><![CDATA[Edit : j&#8217;ai un peu modifié le patch en ne laissant dans des fichiers séparés que ce qui devait l&#8217;être. Tout le reste est inclus. Télécharger ici. Pour une future surface de contrôle à base d&#8217;Arduino, très simple, j&#8217;avais besoin de pouvoir assigner chaque bouton du contrôleur à un paramètre différent de Pure Data selon [...]]]></description>
			<content:encoded><![CDATA[<p>Edit : j&#8217;ai un peu modifié le patch en ne laissant dans des fichiers séparés que ce qui devait l&#8217;être. Tout le reste est inclus. Télécharger <a href="http://notsocomplicated.org/share/paramatrice2.zip">ici</a>.</p>
<p>Pour une future surface de contrôle à base d&#8217;Arduino, très simple, j&#8217;avais besoin de pouvoir assigner chaque bouton du contrôleur à un paramètre différent de Pure Data selon le contexte, très rapidement et très simplement. Évidemment, c&#8217;est encore mieux si on peut rappeler les réglages, et les stocker sous une forme lisible.</p>
<p>Voici donc la ParaMatrice, qui fait exactement ce que son nom indique : elle permet à 20 contrôleurs différents d&#8217;être assignés à 20 paramètres différents, de stocker les couples contrôleur/paramètre et de les rappeler en un seul clic.</p>
<p><img class="alignnone" title="paramatrice" src="http://blog.notsocomplicated.org/wp-content/uploads/2010/04/paramatrice.png" alt="" width="545" height="577" /></p>
<p>J&#8217;ai utilisé un système de stockage à base de [msgfile] (lib zexy), laaaargement inspiré du merveilleux tuto d&#8217;<a href="http://www.obiwannabe.co.uk/html/music/6SS/six-simple-synthesisers.html">Obiwannabe</a>.</p>
<p>Il faut choisir l&#8217;action a effectuer, puis l&#8217;emplacement (avec l&#8217;atom), et cliquer &laquo;&nbsp;Apply&nbsp;&raquo;. &laquo;&nbsp;Next&nbsp;&raquo; charge le preset suivant, &laquo;&nbsp;prev&nbsp;&raquo; le précédent, &laquo;&nbsp;R&nbsp;&raquo; recharge les presets à partir du fichier texte et &laquo;&nbsp;F&nbsp;&raquo; flushe le fichier dans la console Pure Data. Attention, car [msgfile] a un comportement bizarre, et veut un chemin absolu ou relatif selon qu&#8217;il lit ou écrit. Dans le doute, mettez un chemin absolu partout. Les sliders servent à démontrer le fonctionnement, ils ne sont pas connectables en l&#8217;état. Mais si vous avez compris tout ça, les utiliser sera un jeu d&#8217;enfant !</p>
<p>Le patch est téléchargeable <a href="http://notsocomplicated.org/share/paramatrice.zip">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2010/04/matrice-stockage-presets-pure-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synthèse Numérique Directe (DDS) avec Arduino</title>
		<link>http://blog.notsocomplicated.org/2010/04/dds-avec-arduino/</link>
		<comments>http://blog.notsocomplicated.org/2010/04/dds-avec-arduino/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 13:49:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[DDS]]></category>
		<category><![CDATA[synthèse numérique directe]]></category>

		<guid isPermaLink="false">http://192.168.1.30/blogw/?p=105</guid>
		<description><![CDATA[Un petit billet en forme de bloc-notes qui répertorie différents projets de DDS sur base d&#8217;Arduino : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1227287786 http://www.adrianfreed.com/content/arduino-sketch-high-frequency-precision-sine-wave-tone-sound-synthesis http://interface.khm.de/index.php/lab/experiments/arduino-dds-sinewave-generator/ http://code.google.com/p/tinkerit/wiki/Auduino]]></description>
			<content:encoded><![CDATA[<p>Un petit billet en forme de bloc-notes qui répertorie différents projets de DDS sur base d&#8217;Arduino :</p>
<p>http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1227287786</p>
<p>http://www.adrianfreed.com/content/arduino-sketch-high-frequency-precision-sine-wave-tone-sound-synthesis</p>
<p>http://interface.khm.de/index.php/lab/experiments/arduino-dds-sinewave-generator/</p>
<p>http://code.google.com/p/tinkerit/wiki/Auduino</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2010/04/dds-avec-arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vérifions un fichier /etc/hosts</title>
		<link>http://blog.notsocomplicated.org/2010/03/verifions-un-fichier-etchosts/</link>
		<comments>http://blog.notsocomplicated.org/2010/03/verifions-un-fichier-etchosts/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 13:32:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[adzhosts]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[truc]]></category>

		<guid isPermaLink="false">http://blog.notsocomplicated.org/?p=119</guid>
		<description><![CDATA[AdZHosts distribue un fichier hosts de plus de 8000 lignes, contenant plus de 70000 URL douteuses ou inutiles, dont des régies publicitaires, des sites de statistiques, etc. C&#8217;est très pratique à l&#8217;usage, car contrairement à une extension du genre Adblock, le contenu indésirable n&#8217;est pas chargé, puisqu&#8217;on redirige la requête vers la machine locale. Il [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adzhosts.com/?p=281">AdZHosts</a> distribue un fichier hosts de plus de 8000 lignes, contenant plus de 70000 URL douteuses ou inutiles, dont des régies publicitaires, des sites de statistiques, etc.</p>
<p>C&#8217;est très pratique à l&#8217;usage, car contrairement à une extension du genre Adblock, le contenu indésirable n&#8217;est pas chargé, puisqu&#8217;on redirige la requête vers la machine locale. Il y a un seul inconvénient, c&#8217;est que la personne qui fabrique et distribue ce fichier hosts peut être malveillante. En l&#8217;occurrence, en ce qui concerne AdZHosts, ça n&#8217;a pas l&#8217;air d&#8217;être le cas, mais restons vigilants (: Il est tout à fait possible qu&#8217;une personne malveillante glisse une ligne de ce genre au beau milieu du fichier :</p>
<pre>12.34.56.78 www.ma-banque.fr</pre>
<p>Que se passe-t&#8217;il alors ? Lorsque j&#8217;essaie de me connecter à www.ma-banque.fr, je me connecte en fait à l&#8217;IP <em>12.34.56.78</em>, laquelle peut héberger un site identique à celui que j&#8217;ai demandé, mais qui en fait me vole mes identifiants. Cela s&#8217;appelle du <a href="http://fr.wikipedia.org/wiki/Hame%C3%A7onnage">phishing</a>.</p>
<p>Nous allons vérifier qu&#8217;aucune vilaine ligne n&#8217;est présente. La vérification est très simple à faire :</p>
<pre>~$ grep -nv '^127.0.0.1' /etc/hosts</pre>
<p>Cette commande ne doit pas retourner de lignes inconnues de vous. Elle parcourt le fichier /etc/hosts, et renvoie toutes les lignes qui ne commencent pas par <em>127.0.0.1</em>, potentiellement dangereuses, précédées de leur numéro de ligne. Chez moi, cela donne :</p>
<pre>2:127.0.1.1    mamachine
3:
4:# The following lines are desirable for IPv6 capable hosts
5:::1     localhost ip6-localhost ip6-loopback
6:fe00::0 ip6-localnet
7:ff00::0 ip6-mcastprefix
8:ff02::1 ip6-allnodes
9:ff02::2 ip6-allrouters
10:ff02::3 ip6-allhosts
11:
12:#
13:# AdZHosts v0045
14:</pre>
<p>Quelques lignes vides, des commentaires, des adresses de loopback : tout va bien. On remarque tout de même que la commande a trouvé <em>::1</em>, qui est l&#8217;équivalent de <em>127.0.0.1</em> en IPv6.</p>
<p>On peut raffiner un poil cette commande, pour qu&#8217;elle prenne en compte les adresses en IPv6, qu&#8217;elle exclue les lignes vides et les commentaires :</p>
<pre>~$ egrep -nv '^127.0.0.1|^::1|^$|^#|' /etc/hosts</pre>
<p>Ce qui retourne maintenant :</p>
<pre>2:127.0.1.1    mamachine
6:fe00::0 ip6-localnet
7:ff00::0 ip6-mcastprefix
8:ff02::1 ip6-allnodes
9:ff02::2 ip6-allrouters
10:ff02::3 ip6-allhosts</pre>
<p>Voilà ! À partir de maintenant, si j&#8217;utilise un fichier hosts provenant d&#8217;une source non-sûre (c&#8217;est-à-dire pas moi), elle passera à la moulinette de cette commande.</p>
<p>Cet article part d&#8217;une question formulée sur <a href="http://forum.ubuntu-fr.org/viewtopic.php?pid=3337930#p3337930">ce forum</a>, et la commande qui en résulte a été améliorée à partir des scripts présents sur cette même page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2010/03/verifions-un-fichier-etchosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sécurisons Apache avec fail2ban</title>
		<link>http://blog.notsocomplicated.org/2010/02/securisons-apache-avec-fail2ban/</link>
		<comments>http://blog.notsocomplicated.org/2010/02/securisons-apache-avec-fail2ban/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 11:50:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[favicon]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://192.168.1.30/blogw/?p=43</guid>
		<description><![CDATA[Un matin, en regardant mes logs,  j&#8217;ai vu ça : [Tue Feb 02 14:16:54 2010] [error] [client 192.168.1.20] File does not exist: /var/www/favicon.ico [Tue Feb 02 14:16:57 2010] [error] [client 192.168.1.20] File does not exist: /var/www/favicon.ico [Tue Feb 02 14:28:36 2010] [error] [client 82.230.79.111] File does not exist: /var/www/favicon.ico [Tue Feb 02 14:28:39 2010] [error] [...]]]></description>
			<content:encoded><![CDATA[<p>Un matin, en regardant mes logs,  j&#8217;ai vu ça :</p>
<pre>[Tue Feb 02 14:16:54 2010] [error] [client 192.168.1.20] File does not exist: /var/www/favicon.ico
[Tue Feb 02 14:16:57 2010] [error] [client 192.168.1.20] File does not exist: /var/www/favicon.ico
[Tue Feb 02 14:28:36 2010] [error] [client 82.230.79.111] File does not exist: /var/www/favicon.ico
[Tue Feb 02 14:28:39 2010] [error] [client 82.230.79.111] File does not exist: /var/www/favicon.ico
[Tue Feb 02 18:27:07 2010] [error] [client 88.164.111.127] File does not exist: /var/www/favicon.ico
[Tue Feb 02 18:27:10 2010] [error] [client 88.164.111.127] File does not exist: /var/www/favicon.ico
[Wed Feb 03 05:55:12 2010] [error] [client 84.244.181.86] File does not exist: /var/www/roundcubemail
[Wed Feb 03 05:55:12 2010] [error] [client 84.244.181.86] File does not exist: /var/www/rc
[Wed Feb 03 05:55:12 2010] [error] [client 84.244.181.86] File does not exist: /var/www/webmail
[Wed Feb 03 05:55:12 2010] [error] [client 84.244.181.86] File does not exist: /var/www/roundcube
[Wed Feb 03 05:55:12 2010] [error] [client 84.244.181.86] File does not exist: /var/www/mail
[Wed Feb 03 05:55:13 2010] [error] [client 84.244.181.86] File does not exist: /var/www/README</pre>
<p>Ce qui signifie plusieurs choses :</p>
<p><strong>Pas de favicon</strong></p>
<p>Je n&#8217;ai pas de favicon, et le navigateur la demande. Résolvons l&#8217;erreur, ça coûte rien et ça rend mes logs plus lisibles ; on se déplace dans le répertoire web par défaut <em>/var/www/</em>, puis on crée un fichier vide appelé <em>favicon.ico</em>, et enfin on lui attribue les bons droits :</p>
<pre>~$ cd /var/www/
~$ sudo touch favicon.ico
~$ sudo chown 777 favicon.ico</pre>
<p><strong>Ouh le coquin</strong></p>
<p>Un petit canaillou s&#8217;amuse à essayer de trouver un dossier qui n&#8217;existe pas. À la lecture du log, on voit bien qu&#8217;il ne me veut pas que du bien. J&#8217;avais déjà installé<em> fail2ban</em>, mais je n&#8217;avais créé de <em>jail</em> que pour SSH. Il va falloir en créer pour Apache : d&#8217;après mes recherches, il existe quelques jails classiques. On va éditer le fichier de config de fail2ban pour les ajouter.</p>
<pre>sudo vim /etc/fail2ban/jail.local</pre>
<p>Tant qu&#8217;on y est, on va faire en sorte de ne pas pouvoir bannir une adresse locale : chez moi, une adresse locale a la forme</p>
<pre>192.168.1.*</pre>
<p>On va donc compléter la ligne <em>ignoreip</em> comme suit :</p>
<pre>ignoreip = 127.0.0.1 192.168.1.0/24</pre>
<p>Et on ajoute nos<em> jails</em> :</p>
<pre># Jail pour les attaques dictionnaire qui visent phpmyadmin
[apache-admin]

enabled = true
port    = http
filter  = apache-admin
logpath = /var/log/apache*/error*.log
maxretry = 6

# Jail pour les curieux qui essaient de trouver un dossier au pif
[apache-404]

enabled = true
port    = http
filter  = apache-404
logpath = /var/log/apache*/error*.log
maxretry = 10

# Jail pour les attaques par requêtes DFind w00tw00t
[apache-w00tw00t]

enabled = true
filter  = apache-w00tw00t
action  = iptables[name=Apache-w00tw00t,port=80,protocol=tcp]
logpath = /var/log/apache2/access*.log
maxretry = 1</pre>
<p>Maintenant, les filtres associés à ces jails :</p>
<p>On crée le fichier pour la jail apache-admin</p>
<pre>~$ sudo vim /etc/fail2ban/filter.d/apache-admin.conf</pre>
<p>Et on y colle</p>
<pre><span class="comment"># Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

</span>[Definition]

<span class="comment"># Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named "host". The tag "&lt;HOST&gt;" can
#          be used for standard IP/hostname matching.
# Values:  TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
</span>failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*admin|PMA|mysql

<span class="comment">#
# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
</span>ignoreregex =</pre>
<p>Ensuite on crée le fichier pour la jail apache-404</p>
<pre>~$ sudo vim /etc/fail2ban/filter.d/apache-404.conf</pre>
<p>Et on y colle</p>
<pre><span class="comment"># Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 471 $
#

</span>[Definition]

<span class="comment"># Option:  failregex
# Notes.:  regex to match the password failure messages in the logfile. The
#          host must be matched by a group named "host". The tag "&lt;HOST&gt;" can
#          be used for standard IP/hostname matching.
# Values:  TEXT
# [client x.x.x.x] File does not exist: /home/www/admin/admin,
</span>failregex = [[]client &lt;HOST&gt;[]] File does not exist: .*

<span class="comment">#
# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
</span>ignoreregex =</pre>
<p>Et puis on crée le fichier pour la jail apache-w00tw00t</p>
<pre>~$ sudo vim /etc/fail2ban/filter.d/apache-w00tw00t.conf</pre>
<p>Et on y colle</p>
<pre class="code">[Definition]

failregex = ^&lt;HOST&gt; -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*

ignoreregex =</pre>
<p>Ça, c&#8217;est fait. On recharge les préférences de fail2ban :</p>
<pre>~$ sudo fail2ban-client reload</pre>
<p>Et on vérifie que nos jails on bien été créées :</p>
<pre>~$ sudo fail2ban-client status
Status
|- Number of jail:    4
`- Jail list:        apache-admin, apache-w00tw00t, ssh, apache-404</pre>
<p>On retrouve bien nos trois nouvelles jails (celle pour ssh était déjà là avant), tout va bien !</p>
<p><strong>Un plugin Munin pour fail2ban</strong></p>
<p>C&#8217;est bien beau tout ça, mais comment je sais si j&#8217;ai attrapé quelqu&#8217;un dans mes filets ?</p>
<p>Très simple, on va dire à Munin qu&#8217;il faut aussi surveiller fail2ban.</p>
<p>Créer le fichier /usr/share/munin/plugins/fail2ban</p>
<pre>~$ sudo vim /usr/share/munin/plugins/fail2ban</pre>
<p>On y colle :</p>
<pre>#! /bin/bash
#
# script venant de Majorxtrem’s Blogs (merci)
# http://www.majorxtrem.be/2009/08/14/plugins-fail2ban-pour-munin/
PROGNAME=fail2ban
STATEDIR=/var/lib/munin/plugin-state
LISTJAIL=$(fail2ban-client status | grep " Jail list:" | sed 's/`- Jail list:\t\t//g' | sed 's/,//g')
if [ "$1" = "config" ]
then
 echo 'system.type ABSOLUTE'
 echo 'graph_title Fail2ban'
 echo 'graph_vlabel Number of ban'
 echo 'graph_category Security'
 for f in $LISTJAIL; do
# replace - with _
 echo "$(echo "$f.label" | tr - _) $f"
 done
 exit 0
fi
for f in $LISTJAIL; do
# replace - with _
 echo "$(echo "$f.value" | tr - _) $(fail2ban-client status $f | grep  " Currently banned:" | sed 's/ |- Currently banned:\t//g')"
done</pre>
<p>Comme Munin n&#8217;aime pas les tirets (?), le plugin les remplace par des underscores.</p>
<p>On fait un lien symbolique du plugin dans le dossier des plugins Munin :</p>
<pre>~$ sudo ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/</pre>
<p>Et on rend le plugin exécutable :</p>
<pre>sudo chmod +x /usr/share/munin/plugins/fail2ban</pre>
<p>Pour que Munin puisse utiliser fail2ban, il doit avoir des privilèges plus élevés. On édite</p>
<pre>~$ sudo vim /etc/munin/plugin-conf.d/munin-node</pre>
<p>Et on ajoute</p>
<pre>[fail2ban]
user root</pre>
<p>Il n&#8217;y a plus qu&#8217;à redémarrer Munin :</p>
<pre>~$ sudo /etc/init.d/munin-node restart</pre>
<p>Et peu de temps après, bingo ! On a notre premier client :</p>
<pre>~$ sudo vim /var/log/fail2ban.log</pre>
<pre>2010-02-08 11:21:49,698 fail2ban.filter : ERROR  No 'host' found in '[Mon  2010] [error] [client 205.244.148.43] File does not exist: /var/www/mysql' using '&lt;_sre.SRE_Pattern object at 0xb17c50&gt;'
2010-02-08 11:21:51,312 fail2ban.actions: WARNING [apache-404] Ban 205.244.148.43
2010-02-08 11:31:52,146 fail2ban.actions: WARNING [apache-404] Unban 205.244.148.43</pre>
<p>Du côté de Munin :</p>
<p><a href="http://blog.notsocomplicated.org/wp-content/uploads/2010/02/localhost.localdomain-fail2ban-day.png"><img class="alignleft size-full wp-image-80" title="jail apache-404" src="http://192.168.1.30/blogw/wp-content/uploads/2010/02/localhost.localdomain-fail2ban-day.png" alt="jail apache-404" /></a></p>
<p>Bon évidemment, il n&#8217; a été banni que 600 secondes, durée par défaut (ça fait 10 minutes, croyez-le ou non). Je vais augmenter ce temps, histoire de lui apprendre qu&#8217;on ne foule pas impunément mon territoire.</p>
<pre>~$ sudo vim /etc/fail2ban/jail.local</pre>
<p>Trouver la ligne <em>bantime</em> et mettre un nombre de secondes dissuasif :</p>
<pre>bantime  = 86400    #te voilà en taule pour 24h, brigand !</pre>
<p>On recharge la configuration de fail2ban :</p>
<pre>~$ sudo fail2ban-client reload</pre>
<p>Et nous voilà débarrassés de cette engeance.</p>
<p><strong>Billet tiré des pages suivantes :<br />
</strong></p>
<ul>
<li>Configuration et règles fail2ban : <a href="http://j2c.org/informatique/linux/fail2ban.php">http://j2c.org/informatique/linux/fail2ban.php</a></li>
</ul>
<ul>
<li>Règle w00tw00t : <a href="http://doc.ubuntu-fr.org/fail2ban#exemple_avec_la_regle_anti-w00tw00t">http://doc.ubuntu-fr.org/fail2ban</a></li>
</ul>
<ul>
<li>Plugin fail2ban pour Munin : <a href="http://www.majorxtrem.be/2009/08/14/plugins-fail2ban-pour-munin/">http://www.majorxtrem.be/2009/08/14/plugins-fail2ban-pour-munin/</a></li>
</ul>
<ul>
<li>Plugin corrigé pour régler le problème des tirets : dans les commentaires de la page ci-dessus, d&#8217;après <a href="http://didier.misson.net/blog/2009/09/22/monitorer-fail2ban-avec-munin/">Didier Mission</a>, mais le formatage casse le plugin. Ma version fonctionne pour de vrai <img src='http://blog.notsocomplicated.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 429px; width: 1px; height: 1px;">
<p>[apache-admin]</p>
<p>enabled = true<br />
port    = http<br />
filter  = apache-admin<br />
logpath = /var/log/apache*/error*.log<br />
maxretry = 6</p>
<p>[apache-404]</p>
<p>enabled = true<br />
port    = http<br />
filter  = apache-404<br />
logpath = /var/log/apache*/error*.log<br />
maxretry = 10</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2010/02/securisons-apache-avec-fail2ban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress : activation de l&#8217;URL rewriting</title>
		<link>http://blog.notsocomplicated.org/2010/02/wordpress-activation-de-lurl-rewriting/</link>
		<comments>http://blog.notsocomplicated.org/2010/02/wordpress-activation-de-lurl-rewriting/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 21:05:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://192.168.1.30/blogw/?p=64</guid>
		<description><![CDATA[L&#8217;avantage de s&#8217;héberger soi-même, c&#8217;est qu&#8217;on peut s&#8217;offrir de petits raffinements, comme l&#8217;URL rewriting. Pour être plus clair, les URL des billets vont passer de ça : http://mon.domain.com/blog/?p=1 à ça : http://mon.domaine.com/blog/2010/02/03/bonjour-tout-le-monde/ ce qui est plus long, mais plus compréhensible (et surtout plus cool, mais sachons rester simple). Dans WordPress, aller dans Réglages/Permaliens et choisir [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;avantage de s&#8217;héberger soi-même, c&#8217;est qu&#8217;on peut s&#8217;offrir de petits raffinements, comme l&#8217;URL rewriting.</p>
<p>Pour être plus clair, les URL des billets vont passer de ça :</p>
<pre>http://mon.domain.com/blog/?p=1</pre>
<p>à ça :</p>
<pre>http://mon.domaine.com/blog/2010/02/03/bonjour-tout-le-monde/</pre>
<p>ce qui est plus long, mais plus compréhensible (et surtout plus cool, mais sachons rester simple).</p>
<p>Dans WordPress, aller dans Réglages/Permaliens et choisir l&#8217;option &laquo;&nbsp;date et titre&nbsp;&raquo; (par exemple).</p>
<p>Enregistrer les modifications : WordPress va nous donner quelques lignes qu&#8217;il voudrait nous faire insérer dans un fichier .htaccess :</p>
<pre>&lt;IfModule mod_rewrite.c&gt;
 RewriteEngine On
 RewriteBase /MONBLOG/
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /MONBLOG/index.php [L]
&lt;/IfModule&gt;</pre>
<p>Seulement, comme les fichiers .htaccess c&#8217;est top ringard et qu&#8217;on peut se le permettre, on va plutôt utiliser les possibilités du fichier de config d&#8217;Apache.</p>
<p>Mais d&#8217;abord, nous allons vérifier que le mod_rewrite d&#8217;Apache est bien activé :</p>
<pre>~$ sudo a2enmod rewrite
Module rewrite already enabled</pre>
<p>Pour moi c&#8217;est ok, alors éditons le fichier de configuration d&#8217;Apache:</p>
<pre>~$ sudo vim /etc/apache2/apache2.conf</pre>
<p>Nous allons ajouter quelques lignes à la fin de ce fichier (remplacer MONBLOG par le dossier qui contient l&#8217;installation WordPress) :</p>
<pre># URL rewriting
Options +FollowSymlinks
RewriteEngine on

&lt;Directory /var/www/MONBLOG&gt;
# entre les balises directory, nous mettons les lignes fournies par WordPress
&lt;/Directory&gt;</pre>
<p>Ce qui chez moi donne :</p>
<pre># URL rewriting
Options +FollowSymlinks
RewriteEngine on

&lt;Directory /var/www/MONBLOG&gt;
&lt;IfModule mod_rewrite.c&gt;
 RewriteEngine On
 RewriteBase /MONBLOG/
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /MONBLOG/index.php [L]
&lt;/IfModule&gt;
&lt;/Directory&gt;</pre>
<p>Ne reste plus qu&#8217;à redémarrer Apache :</p>
<pre>~$ sudo /etc/init.d/apache2 restart</pre>
<p>Et voilà, à nous les URL de luxe !</p>
<p><strong>Sources :</strong></p>
<p><a href="http://httpd.apache.org/docs/2.2/howto/htaccess.html#when">Apache tutorial : When (not) to use .htaccess files</a><strong><br />
</strong></p>
<p><a href="http://www.wordpress-fr.net/support/viewtopic.php?pid=156156#p156156">http://www.wordpress-fr.net/support/viewtopic.php?pid=156156#p156156</a></p>
<p><a href="http://doc.ubuntu-fr.org/apache2#activer_l_url_rewriting">http://doc.ubuntu-fr.org/apache2#activer_l_url_rewriting</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2010/02/wordpress-activation-de-lurl-rewriting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bon</title>
		<link>http://blog.notsocomplicated.org/2010/02/bon/</link>
		<comments>http://blog.notsocomplicated.org/2010/02/bon/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 22:53:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[obby]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[usermod]]></category>

		<guid isPermaLink="false">http://192.168.1.30/blogw/?p=7</guid>
		<description><![CDATA[Ça commence bien. Résumé des épisodes précédents : 1. Achat d&#8217;un Packard Bell IMax Mini C2600FR pour 149€. Deux gigots de rames, 1.6GHz, 160 Go, environ 20W/h de conso, ce qui donne environ 20€ d&#8217;électricité par an. 2. Remboursement de la licence Windows Vista (40€) &#62; prix total 109€. Pas mal ! Il faut juste [...]]]></description>
			<content:encoded><![CDATA[<p>Ça commence bien.</p>
<p>Résumé des épisodes précédents :</p>
<p><strong>1.</strong> Achat d&#8217;un <a href="http://www.blogeee.net/2010/01/soldes-le-packard-bell-imax-mini-c2600-a-149e-chez-surcouf/">Packard Bell IMax Mini C2600FR pour 149€</a>. Deux gigots de rames, 1.6GHz, 160 Go, environ 20W/h de conso, ce qui donne environ 20€ d&#8217;électricité par an.</p>
<p><strong>2.</strong> <a href="http://blog.alexandredubois.com/2009/09/30/procedure-comment-se-faire-rembourser-sa-licence-windows-chez-acer-et-packard-bell/">Remboursement de la licence Windows Vista</a> (40€) &gt; prix total 109€. Pas mal ! Il faut juste envoyer l&#8217;ordi chez Packard Bell, qui prend tous les frais de transport à sa charge. J&#8217;attends encore le chèque de 40€&#8230;</p>
<p><strong>3.</strong> Grâce à un <a href="http://liveusb.info/">live-USB</a>, installation de la version serveur d&#8217;Ubuntu Karmic Koala (9.10). Grub n&#8217;était pas de bon poil, j&#8217;ai donc mis LILO ; et pour faire le malin jusqu&#8217;au bout, le système est installé sur des <a href="http://doc.ubuntu-fr.org/lvm">volumes logiques (LVM)</a>. On y revient plus tard.</p>
<p><strong>4.</strong> <a href="http://doc.ubuntu-fr.org/iptables">Configuration du firewall avec iptables</a> : pour le moment tout est bloqué vers l&#8217;extérieur sauf le port 80. Je débloquerai SSH plus tard, mais j&#8217;ai déjà installé <a href="http://doc.ubuntu-fr.org/fail2ban">fail2ban</a>.</p>
<p><strong>5.</strong> <a href="http://doc.ubuntu-fr.org/munin">Installation de Munin</a>, pour surveiller la conso mémoire, processeur, etc.</p>
<p><strong>6.</strong> <a href="http://doc.ubuntu-fr.org/gobby">Installation d&#8217;un serveur obby</a>, pour travailler de concert sur un même texte.</p>
<pre>~$ sobby -p 6522 --password mot_de_passe -i --autosave-file=gobby --autosave-interval=10</pre>
<p><strong>7.</strong> Installation du daemon Deluge, pour télécharger et seeder des torrents. En ce moment, je partage deux isos Ubuntu 64bits, version desktop et serveur 9.10.</p>
<pre>~$ sudo apt-get install deluge deluge-webui
~$ deluged &amp;
~$ deluge -u web</pre>
<p><strong>8.</strong> Installation de Tiny Tiny RSS.</p>
<p><strong>9.</strong> Configuration d&#8217;Apache, lien de /var/www avec un dossier situé dans le /home de l&#8217;utilisateur principal.</p>
<p>Et là, souci. J&#8217;ai modifié la page d&#8217;accueil de base d&#8217;Apache en remplaçant le fameux &laquo;&nbsp;It Works !&nbsp;&raquo; par une chouette image, laquelle reste désespérément invisible. Question de permissions ? Après un peu de lecture, je décide de me rendre membre du groupe <em>www-data</em> :</p>
<pre>~$ sudo usermod -G www-data moi</pre>
<p>Les plus perspicaces auront détecté une monumentale erreur : je suis bien devenu membre de<em> www-data</em>, mais je me suis aussi enlevé du groupe <em>admin</em> et de tout autre groupe dont je faisais partie.</p>
<p>Hum, comme dirait l&#8217;autre.</p>
<p>Pas la peine de réfléchir longtemps pour voir que je me suis mis dans un beau pétrin : plus personne n&#8217;est admin sur la machine.</p>
<p>Il n&#8217;y a pas 36 solutions, mais presque :</p>
<p><strong>Méthode 1 :</strong> booter en <em>recovery mode</em>, histoire de redevenir root. Résultat : pas d&#8217;entrée <em>recovery</em> dans le menu LILO, juste un laconique &laquo;&nbsp;Linux&nbsp;&raquo;, et pas moyen d&#8217;aller fouiller dans la config comme avec Grub. Raaaaah. Fail.</p>
<p><strong>Méthode 2 :</strong> <a href="http://doc.ubuntu-fr.org/chroot">chroot</a>. Boot sur live-USB (f12 au bios pour changer le disque de démarrage), puis :</p>
<pre>~$ sudo mkdir /media/system
~$ sudo mount &lt;/dev/partition&gt; /media/system</pre>
<p>Hophophop ! J&#8217;ai installé sur des volumes logiques, vous vous souvenez ? Où sont mes partitions ? Comment je fais ? J&#8217;essaie de faire comme d&#8217;hab.</p>
<pre>~$ sudo mount /dev/sda1 /media/system
mount: type inconnu de système de fichiers 'LVM2_member'</pre>
<p>Caramba. Un petit tour dans Synaptic, installation du paquet <em>lvm2</em>. On peut maintenant lister les volumes logiques :</p>
<pre>~$ sudo lvmdiskscan
 /dev/ram0            [       64,00 MB]
 /dev/serveur/systeme [        4,77 GB]
 /dev/ram1            [       64,00 MB]
 /dev/sda1            [      149,05 GB] LVM physical volume
 /dev/serveur/var     [        9,54 GB]
 /dev/ram2            [       64,00 MB]
 /dev/serveur/data    [       95,37 GB]
 /dev/ram3            [       64,00 MB]
 /dev/serveur/swap    [        1,91 GB]
 /dev/ram4            [       64,00 MB]
 /dev/ram5            [       64,00 MB]
 /dev/ram6            [       64,00 MB]
 /dev/ram7            [       64,00 MB]
 /dev/ram8            [       64,00 MB]
 /dev/ram9            [       64,00 MB]
 /dev/ram10           [       64,00 MB]
 /dev/ram11           [       64,00 MB]
 /dev/ram12           [       64,00 MB]
 /dev/ram13           [       64,00 MB]
 /dev/ram14           [       64,00 MB]
 /dev/ram15           [       64,00 MB]
 4 disks
 16 partitions
 0 LVM physical volume whole disks
 1 LVM physical volume</pre>
<p>Et hop :</p>
<pre>~$ sudo mount /dev/serveur/systeme /media/system</pre>
<p>Ça marche, ce coup-ci ! On continue :</p>
<pre>~$ sudo mount --bind /dev /media/system/dev
~$ sudo mount -t proc /proc /media/system/proc</pre>
<p>On change d&#8217;environnement :</p>
<pre>~$ sudo chroot /media/system
chroot: cannot run command `/bin/bash': Exec format error.</pre>
<p>Fail 2.</p>
<p>Alors là, je suis colère, et j&#8217;ai plus envie de chercher d&#8217;où vient le souci (64 bits?).</p>
<p><strong>Méthode 3 :</strong> j&#8217;édite /etc/group comme un gros porc, et j&#8217;ajoute mon user à la ligne &#8216;admin&#8217;. Et ça re-marche !</p>
<p><strong>Moralité :</strong></p>
<pre>~$ sudo usermod -G www-data moi</pre>
<p>C&#8217;est mal.</p>
<p>Il faut plutôt faire :</p>
<pre>~$ sudo usermod -aG www-data moi</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.notsocomplicated.org/2010/02/bon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

