diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..6e3bf7e --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +# A sample Gemfile +source "https://rubygems.org" +gem 'guard' +gem 'guard-livereload' + +# gem "rails" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..92b52bc --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,57 @@ +GEM + remote: https://rubygems.org/ + specs: + celluloid (0.16.0) + timers (~> 4.0.0) + coderay (1.1.0) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + eventmachine (1.0.4) + ffi (1.9.6) + formatador (0.2.5) + guard (2.11.1) + formatador (>= 0.2.4) + listen (~> 2.7) + lumberjack (~> 1.0) + nenv (~> 0.1) + notiffany (~> 0.0) + pry (>= 0.9.12) + shellany (~> 0.0) + thor (>= 0.18.1) + guard-livereload (2.4.0) + em-websocket (~> 0.5) + guard (~> 2.8) + multi_json (~> 1.8) + hitimes (1.2.2) + http_parser.rb (0.6.0) + listen (2.8.5) + celluloid (>= 0.15.2) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9) + lumberjack (1.0.9) + method_source (0.8.2) + multi_json (1.10.1) + nenv (0.2.0) + notiffany (0.0.3) + nenv (~> 0.1) + shellany (~> 0.0) + pry (0.10.1) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + rb-fsevent (0.9.4) + rb-inotify (0.9.5) + ffi (>= 0.5.0) + shellany (0.0.1) + slop (3.6.0) + thor (0.19.1) + timers (4.0.1) + hitimes + +PLATFORMS + ruby + +DEPENDENCIES + guard + guard-livereload diff --git a/Guardfile b/Guardfile new file mode 100644 index 0000000..8c3922c --- /dev/null +++ b/Guardfile @@ -0,0 +1,34 @@ +# A sample Guardfile +# More info at https://github.com/guard/guard#readme + +## Uncomment and set this to only include directories you want to watch +# directories %w(app lib config test spec feature) + +## Uncomment to clear the screen before every task +# clearing :on + +## Guard internally checks for changes in the Guardfile and exits. +## If you want Guard to automatically start up again, run guard in a +## shell loop, e.g.: +## +## $ while bundle exec guard; do echo "Restarting Guard..."; done +## +## Note: if you are using the `directories` clause above and you are not +## watching the project directory ('.'), the you will want to move the Guardfile +## to a watched dir and symlink it back, e.g. +# +# $ mkdir config +# $ mv Guardfile config/ +# $ ln -s config/Guardfile . +# +# and, you'll have to watch "config/Guardfile" instead of "Guardfile" + +guard 'livereload' do + watch(%r{app/views/.+\.(erb|haml|slim)$}) + watch(%r{app/helpers/.+\.rb}) + watch(%r{public/.+\.(css|js|html)}) + watch(%r{config/locales/.+\.yml}) + watch(%r{.+\.(css|js|html)}) + # Rails Assets Pipeline + watch(%r{(app|vendor)(/assets/\w+/(.+\.(css|js|html|png|jpg))).*}) { |m| "/assets/#{m[3]}" } +end diff --git a/content/archlinux-made-simple.md b/content/archlinux-made-simple.md new file mode 100644 index 0000000..183038f --- /dev/null +++ b/content/archlinux-made-simple.md @@ -0,0 +1,262 @@ +Title: Archlinux made simple +Date: 2012-10-05 14:48 +Author: Wxcafe +Category: OSes +Slug: archlinux-made-simple + +Archlinux est réputée être une distribution Linux très complexe a +installer et a maintenir. + +Je vais tenter ici de vous convaincre que ce n'est pas le cas, et +qu'elle peut se monter très intéressante et très instructive a installer +tout autant qu'a utiliser. + +Il convient tout d'abord de rappeler a quels principes obéit Arch: + +1. Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des + programmes simples et utilisables par tous. Avec comme base de + simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu + de bonne volonté, la configuration n'est pas si compliquée! + +2. La philosophie UNIX : chaque programme est prévu pour ne remplir + qu'une seule tâche. Bien entendu, cela ne concerne que les programmes + conçus pour s’insérer dans la philosophie UNIX, et les installations de + dépendances avec le gestionnaire de paquet d'Arch fonctionnent + superbement bien. + +De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle +pacman, et les commandes de base sont : + +- recherche d'un paquet : + + pacman -Ss paquet + +- installation d'un paquet : + + sudo pacman -S paquet + +- désinstallation d'un paquet : + + sudo pacman -R paquet + +- mise a jour de tous les paquets installés : + + sudo pacman -Syu paquet + +Archlinux est une distribution dite "rolling release", ce qui signifie +qu'il n'y a pas de version a proprement dites, et que les paquets se +mettent a jour en permanence, sans jamais changer la "version" d'Arch. +Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site, +puisqu'une version plus ancienne n'aurait aucun sens. + +Arch n'offre pas d'interface graphique par défaut : après avoir installé +le système, vous n'aurez qu'une invite de commande. Heureusement, je +vais ici vous guider a travers l'installation d'une interface graphique +(mate, le fork de gnome 2) + +L'installation d'Arch se fait par le réseau, veillez a avoir une +connection WiFi ou filaire a proximité avant de suivre ce guide. + +Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous +systemd. N'ayant pas encore eu le temps d’expérimenter assez avec ce +dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt. + +Bon, passons a l'explication de l'installation proprement dite : + +Tout d'abord, téléchargeons l'iso d'arch la plus récente : + + wget http://mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso + +Ensuite, gravons cette image sur un disque USB : + + dd if=archlinux-2012.09.07-dual.iso of=/dev/sdX + +Après reboot de la machine sur l'iso en question et choix de +l'architecture, nous sommes accueillis par un shell root. + +La première chose a faire est de paramétrer le clavier : + + loadkeys fr + +Puis nous pouvons passer a l'installation proprement dite. +Partitionnement : + + cfdisk # cfdisk est suffisamment clair pour ne pas nécessiter d'explications + +formatage des partitions : + + mkfs.ext4 /dev/sda1 # partition root + + pacman -Syu btrfs-progs && mkfs.btrfs /dev/sda2 # partition home + + mkswap /dev/sda3 && swapon /dev/sda3 # partition de swap + +Montons les partitions nouvellement créées, puis installons le système : + + mount /dev/sda1 /mnt + + mkdir /mnt/home && mount /dev/sda2 /mnt/home + + dhclient eth0 # si vous utilisez une connection filaire, sinon voire http://wiki.archlinux.fr/Wifi#Configuration + + pacstrap /mnt base base-devel + + genfstab -p /mnt > /mnt/etc/fstab + +Allons prendre un café le temps que ça charge, puis installons les +quelques paquets nécessaires a notre installation et au premier +démarrage: + + pacstrap /mnt syslinux btrfs-progs wireless_tools dhclient + +Maintenant, passons sur notre install toute fraîche d'Arch : + + arch-chroot /mnt bash + +configurons les bases : + + echo HOSTNAME > /etc/hostname + + ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime + + date MMJJhhmmAAAA + + hwclock --systohc + + vim /etc/locale.gen # Décommentez les lignes correspondant au français : fr_FR.UTF-8 et fr_FR.ISO-8859-1 + + echo 'LANG="fr_FR.UTF-8"' > /etc/locale.conf + + locale-gen + + mkinitcpio -p linux + +Enfin, vérifions que syslinux est correctement configuré : + + vim /boot/syslinux/syslinux.cfg # il devrait y avoir "append root=/dev/sda1" + +Si tout est correct, installons syslinux, et paramétrons un mot de passe +root : + + syslinux-install_update /dev/sda -mia + + passwd root + +Et voila, l'installation est terminée! Plus qu'a quitter la session et a +redémarrer l'ordinateur! + + exit + umount /mnt/home + umount /mnt + reboot + +Fini! + +Prenons une petite pause. La partie suivante de ce tutoriel consister en +un paramétrage des principaux services nécessaires a l'utilisation d'un +OS, disons, moyen : + +- Installation de MATE, le gestionnaire de bureau (voir +[http://mate-desktop.org/][]) + +- Installation de sudo et de networkmanager pour faire fonctionner les +composants essentiels du système sans avoir a tout activer a la main a +chaque démarrage + +- Installation de SLiM comme gestionnaire de login graphique, pour +présenter une interface plus accueillante que la console, et +configuration de celui-ci + +- Installation des principaux logiciels utiles non inclus dans mate ni +base (yaourt, chromium, thunderbird, etc...). + +Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un +gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter +ici. + +Bon, reprenons. + +Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de +passe paramétré plus haut pour le root, puis retapez la commande +utilisée plus tôt pour vous connecter a internet. + +Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis +d'effectuer l'action en question : + + vim /etc/pacman.conf + +Ici, ajoutez les lignes suivantes : + + [mate] + Server = http://repo.mate-desktop.org/archlinux/$arch + +Installons maintenant les paquets : + + pacman -Syu mate mate-extras dbus dbus-core alsa networkmanager sudo + +Ajoutons un compte utilisateur pour utiliser les composants du système +sans tout crasher a chaque fois : + + useradd -g users -G wheel,audio,optical,lp,scanner,log,power,floppy,storage,games,video -m -s /bin/bash *votrenom* + passwd *votrenom* + su *votrenom* + +Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org +ce que l'on veut utiliser : + + echo "exec ck-launch-session mate-session" > ~/.xinitrc + +Profitons en pour ajouter les démons système au lancement : + + vim /etc/rc.conf + +Ajoutez donc `dbus, alsa. hwclock` et `networkmanager` dans la section +DAEMONS (entre les parenthèses, après crond normalement) + + DAEMONS=(syslog-ng network crond dbus alsa hwclock networkmanager) + +Pour éviter un reboot, il est ici possible de faire un + + su + +Puis un + + /etc/rc.d/dbus start && /etc/rc.d/alsa start && /etc/rc.d/networkmanager start + +Sinon, il est possible de juste redémarrer. +Une fois cela fait, profitez de ce moment pour vous autoriser vous même +a utiliser sudo. Loggez vous en root, et : + + vim /etc/sudoers + +Décommentez la ligne qui commence par \# %wheel ALL=(ALL) +Sauvegardez le fichier, puis, après un `su *votrenom*`, tentez de faire +un sudo ls / +Normalement, vous devriez avoir un listing du dossier / +Bon, maintenant, pourquoi ne pas tenter de lancer MATE? +C'est simple comme bonjour : + + startx + +Et PAF! Voila un MATE desktop flambant neuf a configurer! +Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous, +puis installez SLiM (`sudo pacman -Syu slim`). +Configurons le: + + echo "exec dbus-launch mate-session" > ~/.xinitrc && vim /etc/slim.conf + +Éditez la ligne +"`sessions xfce4,icewm-session,wmaker,blackbox`" de facon a +ce qu'elle ressemble a "`sessions mate-session`" +Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS. +Normalement, tout devrait fonctionner! +Ah oui, et pour installer thunderbird, firefox, chromium, etc... + + sudo pacman -Syu chromium thunderbird xchat firefox rhythmbox pidgin transmission-gtk vlc + +Voila! Et comme dirait [@Spartition][], c'est sale, mais qu'est-ce que c'est +bon! +A plus~ + + [@Spartition]: https://twitter.com/spartition + [http://mate-desktop.org/]: http://mate-desktop.org/ diff --git a/content/debuts-presentation-etc.md b/content/debuts-presentation-etc.md new file mode 100644 index 0000000..adce6b8 --- /dev/null +++ b/content/debuts-presentation-etc.md @@ -0,0 +1,36 @@ +Title: Débuts, présentation, etc... +Date: 2012-08-18 20:27 +Author: Wxcafe +Category: Notes +Slug: debuts-presentation-etc + +Bonjour! + +Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur +Twitter, mais aussi sur IRC (Je traîne pas mal sur +irc.freenode.net/\#\#nolife et \#debian-fr) + +J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je +fais partie de ce genre de personne qui sont capables d'investir tout +leur temps et leur énergie a s’intéresser a un sujet en particulier, et +qui ne peuvent pas vivre sans leurs passions, avec une petite différence +cependant, qui est que je m’intéresse a plusieurs choses : +l'informatique, qui est un champ tellement large qu'on peut passer une +vie a apprendre des choses dessus, et plus particulièrement à +l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres +{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les +trolls seront a partir de maintenant indiqués avec le tag [tr]] du +libre, je préfère utiliser de l'open-source si c'est possible}, +programmation en C, python et java, etc...) , mais aussi a +l’électronique. + +Dans un tout autre registre, je m’intéresse aussi +beaucoup aux différents aspects du féminisme et des égalités sexuelles +(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) , +et a la culture dite "geek" en général. + +Je tenterai de poster ici le plus souvent possible, mais j'ai de gros +problèmes en terme de régularité de post, donc ne vous inquiétez pas si +vous ne voyez rien pendant deux semaines. + +Merci beaucoup de votre attention, et a bientôt! diff --git a/content/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere.md b/content/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere.md new file mode 100644 index 0000000..6842759 --- /dev/null +++ b/content/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere.md @@ -0,0 +1,84 @@ +Title: GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère +Date: 2012-08-22 20:33 +Author: Wxcafe +Category: Teaching +Slug: gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere + +GNU/Linux est un vaste et extraordinaire territoire technologique, mais +je ne vais pas m'attarder ici sur les aspects profondément techniques de +ce territoire pour faire plutôt une sorte d'introduction a ce qu'est +vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de +connaissances en informatique. + +GNU/Linux, que j’abrégerai ici en Linux pour plus de simplicité, est un +Système d'Exploitation. Un système d'exploitation est, pour simplifier, +un ensemble d'outils informatiques qui vous permettent d'utiliser votre +ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation +de système d'exploitation (Operating System en anglais) est OS. Les 4 +principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et +Solaris. Les trois derniers sont issus d'un autre système, plus ancien, +nommé UNIX. + +De ce fait, on pourrait penser que Linux remplace complètement Windows +une fois installé, et comprend une interface graphique, et toutes sortes +d'utilitaires permettant a l'utilisateur d'utiliser le système (sous +Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer. +Pour l'interface graphique, pensez a... Pensez que votre système affiche +autre chose que des lignes de commande.) Or non, une fois installé, +Linux en lui même ne vous afficherait aucune interface graphique, et +s'il est effectivement livré avec des utilitaires, ils ne sont que des +programmes en ligne de commande. Autant les utilisateurs avancés sauront +s'en servir, et pourront argumenter que c'est plus efficace ou plus +rapide, autant les utilisateurs basiques préfèrent une interface +graphique. Alors comment en obtenir une? + +Ici, il convient de faire une précision importante. Si il n'existe +qu'une seule version de Windows, ou de Mac OS, il existe en fait +plusieurs centaines de "versions" différentes de Linux. Appelées +distributions, ces dernière sont développées par des groupes +complètement séparés, et se basent sur le fait que Linux soit +entièrement placé sous licence libre (ce qui leur permet de l'utiliser a +leur guise, a condition que leur travail soit lui aussi placé sous +licence libre). De ce fait, de nombreuses distributions existent et se +développent en parallèle. On peut ainsi citer [Debian][], qui est l'une +des distributions les plus importantes, ou encore [Ubuntu][], qui est +l'une des plus connues et des plus simples a utiliser. + +Ainsi, ces distributions intègrent une interface graphique. Cependant, +grâce a la liberté dont bénéficient les développeurs sous Linux, il +existe de nombreuses interfaces graphiques différentes : [Unity][], la +nouvelle interface d'Ubuntu; [GNOME][] , une interface qui vise a la +simplicité; ou encore [KDE][], une interface utilisateur ressemblant a +Windows 7. + +Ainsi, le choix astronomique de distributions Linux a bien un sens : +chacune d'entre elle intègre des outils différents. Par exemple, Debian +intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend +particulièrement stable. Ubuntu intègre Unity, ce qui en fait une +distribution particulièrement intuitive. Linux Mint intègre Cinnamon, +qui est une version dérivée de GNOME 3, ce qui permet encore une autre +expérience. Et Arch Linux n'intègre pas d'interface graphique du tout, +ce qui permet a l'utilisateur de choisir entre les multiples interfaces +existantes. + +Ce qu'il est important de retenir de cela, c'est que Linux est un OS +complètement libre, ce qui signifie que n'importe qui peut modifier et +utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi, +Linux est un OS qui est véritablement créé par des passionnés, pour tous +et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué +a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus. +Cependant, Linux donne la possibilité a l'utilisateur de le rendre +affreusement complexe, mais aussi de le rendre adapté a ses besoins, +quels que soient ceux ci. Et c'est la que réside l'incroyable puissance +de ce Système d'Exploitation. Il est extraordinairement adaptable. + +N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas +technophiles. Ils pourraient adorer, et peut être même le devenir :) + +A bientôt! + + [Debian]: http://debian.org + [Ubuntu]: http://ubuntu.com + [Unity]: unity.ubuntu.com + [GNOME]: gnome.org + [KDE]: http://kde.org/ diff --git a/content/introduction-a-bash-en-tant-que-language-de-programmation.md b/content/introduction-a-bash-en-tant-que-language-de-programmation.md new file mode 100644 index 0000000..17981af --- /dev/null +++ b/content/introduction-a-bash-en-tant-que-language-de-programmation.md @@ -0,0 +1,158 @@ +Title: Introduction a bash en tant que language de programmation. +Date: 2012-09-08 18:15 +Author: Wxcafe +Category: Programmation +Slug: introduction-a-bash-en-tant-que-language-de-programmation + +L’interpréteur de commandes bash (Bourne Again SHell) +est possiblement le shell le plus connu, notamment grâce a son +intégration en tant que shell par défaut dans les distributions Linux +les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva - +Mageia, etc...). + +Cependant, il n'est souvent connu qu'en tant qu’interpréteur de +commande. Alors qu'en réalité, le bash est un langage de programmation +(presque) complet! Ainsi, il intègre les structures de contrôle +habituelles ( pour mémoire, les structures de contrôle comprennent les +conditions (les ifs), les boucles (les while), et les choix (les case), +entre autres.), et est donc ce que l'on pourrait appeler un langage de +script, interprété, de la même façon que python, a la difference près +qu'il contient un prompt (un système d'entrée de commande interactif) +bien plus complet et développé que python. + +Cependant, les programmes en bash ne sont executables que dans un +environnement de type UNIX, et donc pas sous Windows (cygwin +(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous +windows. Il faut malgré tout convenir que cet environnement est bien +plus compliqué a manipuler, et globalement ne permet pas d'acceder a des +portages de qualité satisfaisante.) + +Ainsi, il est possible de créer des fichiers .sh, contenant des +instructions bash mises a la suite (de la même façon qu'un script BATCH +Windows .bat), et faisant appel autant aux commandes internes de bash, +aussi bien que les commandes externes mises en place par les programmes +installés sur le système, exactement comme dans une invite de commande. +Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit +panda roux directement dans la boite magique, tandis qu'un if +[condition] suivi d'un then (quelque chose) lancera le fameux quelque +chose suscité si la condition est vérifiée. Un peu comme en C, quoi. + +De cette façon, et avec quelques informations et connaissances, il est +facile de comprendre le fonctionnement de la programmation en bash. +Quelques exemples commentés: + + #!/bin/bash + # La ligne du dessus est très importante, c'est elle qui dit a bash quel doit être + # l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'interpréter + # lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire + # executer du python, par exemple, en mettant #!/usr/bin/python a la place. + echo "this is a test of bash as a simple script manager" # echo est une commande d'affichage de message. + echo "what's your name, user?" + read your_name # la commande read permet de demander a l'utilisateur de donner une + # information, stockée dans la variable en paramètre. + echo $your_name "is your name" # echo permet aussi d'afficher la valeur de variables. + # Ici, on renvoie la variable remplie précédemment, suivie d'un message. + exit # cet appel a exit n'est pas obligatoire, mais donne un aspect plus + # propre au code. Il ne quittera pas la session de terminal, cependant. + +Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite +d'être clair quand aux capacités et a la simplicité du bash en tant que +language de programmation. Alors en effet, nous n'avons ici absolument +pas utilisé les capacités de bash en lui même, et n'avons fait que le +renvoyer a des programmes externes (sauf read, il est vrai). Voyons +maintenant la syntaxe de bash quand il s'agit d'utiliser les structures +de contrôle: + + #!/bin/bash + echo "welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?" + read host_name + if [ $host_name == $HOSTNAME ] ## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. + then echo "you told the truth!" + fi ## le fi est la commande fermant le if, tout comme le EndIf en basic. C'est un peu vieillot, mais important en bash. + if [ $host_name != $HOSTNAME ] ## l'opérateur != est l'inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. + then echo "you lied!" + fi + exit + +Voila un petit programme permettant d'apprendre la syntaxe du if en +bash. comme vous pouvez le voir, le language est plutôt lite, et la +structure if n'est pas très difficile a prendre en main. + +Passons maintenant au while: + + #!/bin/bash + echo "what is your name?" + read name + while [ 1 < 10 ] ## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash. + do echo "i love" $name + done + exit + +Ce petit programme permet d'observer les bases de while (qui est la +boucle de base en bash). + +Le troisième opérateur de bash est case. Voyons: + + #!/bin/bash + echo "please enter a number between one and five" + read number + case $number in + 1) + echo "the choosen number was one" + ;; + 2) + echo "the choosen number was two" + ;; + 3) + echo "the choosen number was three" + ;; + 4) + echo "the choosen number was four" + ;; + 5) + echo "the choosen number was five" + ;; + *) + echo "this number is not correct" + ;; + esac + exit + +case est un opérateur plus complexe a utiliser a bon escient, et sert a +faire des ifs multiples sans avoir a taper des dizaines de lignes de +code. +(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre +que le code vérifie chacune des conditions : le 1) est validé si la +valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc.. +le \*) désigne toutes les valeurs, et est donc validé si aucune autre +valeur n'a précédemment acceptée. + +Quelques notions manquent ici: +- les nombres aléatoires sont générés par un appel a la variable +\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a +16 bits donc). il est possible de faire des invocations a des nombres +aléatoires plus grands, mais les méthodes permettant de faire cela sont +plus complexes, et je ne les aborderai donc pas ici. +- comme vous avez pu le constater, les variables sont désignées en tant +que telles par l'utilisation d'un symbole \$ au début de leur nom. +Ainsi, echo number renverra "number", tandis que echo \$number renverra +le résultat de la variable \$number. +être utilisées dans un programme bash. +- comme vous avez pu le constater, les commandes doivent tenir en +théorie en une ligne. Cependant, le caractère \\ permet de retourner a +la ligne en faisant considérer a bash qu'il s'agit de la même ligne. + +Globalement, il faut admettre que bash n'a pas vocation a être un +langage de programmation extrêmement développé. Sans framework +graphique, avec peu de manières d'utiliser de grandes variables, ou +encore une gestion de la mémoire risible, bash n'a rien d'un langage de +développement professionnel. +Cependant, le simple fait qu'il soit considéré comme un langage de +programmation a part entière font de lui un langage de script d'une +puissance incontestable, et sa simplicité et sa grande popularité font +de lui un langage de choix pour apprendre la programmation simplement et +sans trop se prendre la tête. + +J'espère que cet article aura été utile a certain-e-s, et je vous +souhaite bonne chance dans votre découverte de la programmation (n'allez +pas voir ceux qui font de l'orienté objet, c'est des méchants :3) diff --git a/content/la-cryptographie-avec-pgp-et-principalement-gnupg.md b/content/la-cryptographie-avec-pgp-et-principalement-gnupg.md new file mode 100644 index 0000000..d93b36a --- /dev/null +++ b/content/la-cryptographie-avec-pgp-et-principalement-gnupg.md @@ -0,0 +1,177 @@ +Title: La cryptographie avec PGP et principalement GnuPG +Date: 2012-11-19 00:36 +Author: Wxcafe +Category: Tutoriel +Slug: la-cryptographie-avec-pgp-et-principalement-gnupg + +PGP (pour [pretty good privacy][]) est un système de +chiffrement asymétrique (pour plus d'information sur le chiffrement +asymétrique, voir [ici][]) utilisant en général les algorithmes RSA +et/ou DSA, et pouvant servir a chiffrer tout fichier, mais aussi a +signer des emails. Le système de signature consiste a s'identifier en +tant que la personne que l'on est, en certifiant de son identité, et +repose sur un système dit de *Web of Trust*. + +Ce concept de Web of Trust est simple: si je valide le code vous +identifiant (votre clé), en certifiant que vous êtes qui vous êtes et +que je vous connais, et que d'autres personnes m'ont déjà +personnellement validé, les autres utilisateurs seront enclins a croire +que vous êtes en effet la personne que vous prétendez être. Bien +entendu, les utilisateurs validant trop de clés rapportées comme fausses +voient la valeur de leurs signatures baissée, et toutes les clés signées +par ces utilisateurs voient leur crédibilité baisser. +Inversement, les "bons utilisateurs" voient la valeur de leurs +signatures augmentée, ce qui augmente la crédibilité des clés qu'ils ont +signées. + +Ceci dit, un email peut être a la fois signé et chiffré, de façon a être +sûr, non seulement que l’expéditeur de l'email est bien celui qu'il dit +être, mais aussi que l'email n'a pas été modifié entre l'envoi et +la réception (en effet, avec un chiffrement de type RSA/DSA, une +modification du corps de l'email rend ce dernier illisible, la clé +publique ne  correspondant plus a la phrase de passe du message), ce qui +offre bien évidemment des avantages non négligeables dans un +environnement ou la protection des échanges est importante (soit a peu +près partout sur internet, si vous tenez a votre vie privée. Pensez a +[quitter Gmail][] aussi, par exemple). + +Il est cependant a noter que les clés publiques sont généralement +situées sur un serveur de clés publiques, tel pgp.mit.edu ou encore +subkeys.pgp.net (certaines personnes préfèrent garder leur clés hors des +serveurs de clés publiques, craignant une compromission de ces serveurs. +Dans le cas d'utilisateurs normaux (c'est a dire n'échangeant pas de +secrets classés secret-défense par email), la protection offerte par les +serveurs de clé publiques est suffisante) + +L'une des implémentations les plus connues et utilisées de PGP est sans +conteste GPG ([GNU Privacy Guard][]) , qui comme son nom l'indique fait +partie du projet GNU, et qui (`` de façon surprenante pour un +programme GNU``) est extrêmement efficace et claire. + +Après ces explications techniques, voici venue le +moment intéressant/utile, a savoir l'application. Le chiffrement et la +signature de mails doivent cependant attendre un petit peu, étant donné +qu'il vous faut d'abord créer votre clé et la placer sur un serveur de +clés publiques, de façon à ce que votre destinataire puisse vous +identifier lorsqu'il recevra le mail, mais aussi a configurer votre +client mail pour utiliser gpg (je baserai les explications de cet +article sur Thunderbird, mais des explications efficaces sont trouvables +facilement sur les interwebs). + +Tout d'abord, générons une clé GPG : + + gpg --gen-key + +GPG va vous demander les méthodes de chiffrement que vous voulez +utiliser, le plus sur est de laisser la valeur par défaut. La question +suivante est de savoir quelle taille votre clé doit faire, il est +préférable de choisir la taille la plus importante possible (4096). GPG +veut ensuite savoir quand votre clé doit expirer. La méthode simple est +bien évidemment de ne jamais la faire expirer, il est cependant plus +intéressant dans une logique de sécurité de régler cette durée a six +mois/un an. + +Des informations personnelles vous sont ensuite demandées, +concernant votre nom (mettez le vrai, tel qu'il apparaît sur votre carte +d'identité, si vous souhaitez utiliser votre véritable identité), votre +adresse mail (mettez la plus utilisée, vous pourrez en rajouter plus +tard), et un mot de passe pour la clé (utilisez un mot de passe +sécurisé!! Il est conseillé d'utiliser au moins 8 caractères, dont majuscules, +minuscules, caractères spéciaux et nombres (vous pouvez utiliser la +commande `makepasswd`, qui génère automatiquement un mot de +passe) + +GPG va maintenant prendre un peu de temps pour générer le couple clé +publique/clé privée, vous devriez profiter de ce temps pour effectuer +des opérations autres sur votre ordinateur : taper des textes, lancer +des films, écouter de la musique... De façon à augmenter les chances +d'obtenir un nombre bien aléatoire (le générateur d'aléatoire se base +sur la RAM pour obtenir des bits au hasard) + +Une fois cela fini, vous obtenez un couple clé publique/clé privée, que +vous ne pouvez pas visualiser entièrement pour l'instant. Il est +cependant possible (et recommandé) de les exporter pour les sauvegarder +via une commande: + + gpg --armor --export --output=pubkey.gpg + +pour la clé publique, et + + gpg --armor --export-secret-keys --output=seckey.gpg + +pour la clé privée. Il est possible et même souhaitable de copier ces +clés sur une clé USB, une carte SD, ou un autre support de stockage +résistant, de façon a avoir une solution de sauvegarde, au cas ou vous +perdiez ces clés sur ce PC. + +Cela fait, listons les informations sur votre clé publique : + + $ gpg --list-keys --fingerprint + pub 4096R/27D81AC8 2012-11-17 + Key fingerprint = 6345 A91A FF89 97E0 13D0 96A9 9E2A 1917 27D8 1AC8 + uid Clément Hertling (Wxcafe) + uid [jpeg image of size 14692] + sub 4096R/9ED7F77F 2012-11-17 + +La partie `pub` indique que c'est une clé publique, `4096R` indique que c'est +une clé RSA sur 4096 bits. La partie `27D81AC8` est +l'identifiant de la clé publique, `Key fingerprint = 6345 A91A FF89 97E0 13D0 +96A9 9E2A 1917 27D8 1AC8` est appelé fingerprint de la clé. Les champs +`uid` sont des manières d'identifier la clé et la personne associée a +celle-ci, et enfin le champ `sub` est indicateur d'une subkey, système +uniquement pris en charge par GPG et non inclus dans les premières +versions de PGP, donc non-implémentées dans nombre de clients pgp. +Passons maintenant a la mise en place de cette clé publique sur un +serveur de clés : nous utiliserons ici le serveur pgp.mit.edu. + + gpg --keyserver pgp.mit.edu --send-keys *ID de la clé a uploader* + +Maintenant que votre clé publique a été uploadée, vous pouvez l'utiliser +pour signer et chiffrer vos emails! +Installons donc l'extension Enigmail pour Thunderbird, permettant de +chiffrer/signer vos emails de façon transparente. Il conviendra de +paramétrer cette extension, via le menu OpenPGP dans Thunderbird, puis +Setup Wizard (l'option entre Help et About OpenPGP). Normalement, +Enigmail détecte votre installation de gpg automatiquement, si cependant +ce n'était pas le cas, vous pouvez utiliser la clé exportée tout a +l'heure (pubkey.gpg) en l'important (import key from file). + +Selon les options que vous avez utilisées, vos emails seront +automatiquement signés et/ou chiffrés a l'envoi. Gardez cependant a +l'esprit que si tout le monde peut lire les mails signés, il n'en est +pas de même pour les mails chiffrés, pour lesquels il est nécessaire de +posséder la clé publique du correspondant en question, et de posséder +soi même une clé privée, donc d'utiliser OpenPGP aussi. +Concernant les signatures de clés, elles fonctionnent de manière très +simple : +Vous devez télécharger la clé de votre correspondant, via un + + gpg --keyserver pgp.mit.edu --search-keys *ID de la clé de votre correspondant* + +(a noter que cette commande fonctionne aussi en cherchant une adresse +email ou un nom. Cependant, en cherchant via l'identifiant de la clé, +vous êtes sur de trouver votre correspondant. Globalement, l'email est +lui aussi assez sûr en terme de recherche de clés, tandis que le nom +donne rarement un résultat). L'étape suivante est de vérifier que votre +correspondant est bien la personne qui est spécifiée sur sa clé. Pour +cela, il convient d'avoir déjà vu physiquement cette personne et si +possible d'avoir vu une pièce d'identité lui appartenant, et d'avoir une +confirmation de cette personne que la clé que vous voyez lui appartient +bien. +Ceci fait, vous pouvez signer la clé via un + + gpg --sign *ID de la clé a signer* + +puis la renvoyer au serveur via + + gpg --keyserver pgp.mit.edu --send-key *ID de la clé a signer* + +Voila, la clé de votre correspondant est signée! + +Ce tutoriel sur PGP/GPG est terminé, et votre sécurité est améliorée +grâce a cette superbe invention qu'est la cryptographie! + + [pretty good privacy]: http://fr.wikipedia.org/wiki/Pretty_Good_Privacy + [ici]: http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique + [quitter Gmail]: http://www.hauteresolution.net/pourquoi-je-vais-quitter-gmail/ + [GNU Privacy Guard]: http://fr.wikipedia.org/wiki/GNU_Privacy_Guard diff --git a/content/la-programmation-expliquee-simplement.md b/content/la-programmation-expliquee-simplement.md new file mode 100644 index 0000000..5342b12 --- /dev/null +++ b/content/la-programmation-expliquee-simplement.md @@ -0,0 +1,75 @@ +Title: La programmation expliquée simplement +Date: 2012-08-27 00:22 +Author: Wxcafe +Category: Teaching +Slug: la-programmation-expliquee-simplement + +Salut! +Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire +récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé +pas mal de temps assez occupé. + +Enfin, après un certain temps a farfouiller au millieu des connecteurs +SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques +durs, je suis de retour pour un court article. +Du coup, je m'étais dit que j'allais reprendre sur le thème de +l'informatique expliquée au grand public, en tentant d'aller un peu plus +loin que la dernière fois sur le thème de la programmation +Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur. +Si a peu près tout le monde sait que "les ordinateurs, ils ne +comprennent que les 1 et les 0!", peu de gens savent comment cela +fonctionne en détail. + +Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà +des notions de base en informatique. Ainsi, vous savez surement que les +ordinateurs fonctionnent avec des programmes, qui sont composés de +code. +Ainsi, il faut comprendre que le code (source) est "compilé" en un +fichier "binaire". Un fichier binaire est un fichier comprenant les +instructions telles qu’exécutées par le processeur, et donc absolument +illisible pour un humain. + +La compilation est le processus qui transforme le code source en +binaire executable. Les binaires ont, sous Windows, l'extension .exe, +tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension +particulière. +Ceci étant dit, il faut comprendre que certains langages sont plus +proches que d'autres du langage processeur, les langages les plus +proches sont dits de "bas niveau". Les langages les plus éloignés sont +donc dits de haut niveau. + +Par exemple, l'assembleur est l'un des languages de plus bas niveau, +tandis que python par exemple est un langage de plus haut niveau. Les +langages de haut niveau sont souvent bien plus simples a comprendre et a +apprendre que les langages de bas niveau + +Ainsi, en C, un langage de niveau relativement bas, pour afficher +"hello world" sur l'écran, le code nécessaire est : + + #include + void main() { + printf("hello world"); + return 0; + } + +le même programme en python s'écrit : + + print "hello world" + +et n'a pas besoin d'être compilé , puisqu'il peut être intepreté +directement. + +Python utilise en effet un système similaire a Java en ayant un +interpréteur dit "runtime" ou "temps réel", qui interprète le programme +sans le compiler. Java utilise un système légèrement différent, puisque +le code a besoin d'être compilé, mais est interpreté par un interpréteur +et non par le processeur. + +Cette méthode permet le fameux "code once, run everywhere", ce qui +signifie que le même code est exécutable sur quasiment tous les systèmes +d'exploitation (en fait, tous ceux sur lesquels l’interpréteur est +disponible.) + +Voila, je vous laisse sur le fonctionnement de Java et de Python, et je +vais me coucher. +A bientôt! diff --git a/content/la-separation-des-eglises-et-de-letat-une-idee-quelle-est-bonne.md b/content/la-separation-des-eglises-et-de-letat-une-idee-quelle-est-bonne.md new file mode 100644 index 0000000..976d720 --- /dev/null +++ b/content/la-separation-des-eglises-et-de-letat-une-idee-quelle-est-bonne.md @@ -0,0 +1,108 @@ +Title: La séparation des églises et de l'état, une idée qu'elle est bonne? +Date: 2012-12-13 03:08 +Author: Wxcafe +Category: Ranting +Slug: la-separation-des-eglises-et-de-letat-une-idee-quelle-est-bonne + +Aujourd'hui, et depuis 1901 (j'ai révisé mon histoire récemment), il +existe une loi dite de séparation des églises et de l'état, qui consiste +a faire en sorte que l'état n'ait rien a voir avec les differentes +églises, pour de sombres histoires d'indépendance et de laïcité. +(principes qui sont aujourd'hui en voie de disparition, mais ce n'est +pas le propos qui nous occupe ici). Cela dit, cette bonne idée +politique, si elle a évité a ses auteurs de nombreux tracas, et leur a +surement permis de conserver une tête en état de fonctionnement bien +reliée a leur colonne vertébrale, ne vous interesse que moyennement, et +vous voudriez retourner répondre a vos mails sur Gmail et micro-blogguer +(quel mot horrible...) sur twitter? + +Ça tombe bien, vous abordez justement le sujet véritable de cet article +(non, mon blog n'est pas devenu un histoblog, désolé aux déçus...), a savoir +la centralisation qui se met progressivement en place sur internet depuis +quelques années : Twitter, Google, Facebook, Micro$oft, Apple, tous ces +acteurs du web (et pas que, pour certains...) ont commencé a prendre +pour manie de centraliser vos données : pour prendre un exemple simple, +si vous utilisez Gmail (qui depuis quelque temps, lit aussi vos mails +pour accorder la publicité, dites adieu a votre vie privée), vous avez +un compte Google Talk, probablement aussi un Google+. + +L'outil le plus pratique aujourd'hui pour aggreger des flux RSS est +Google Reader, et vous l'utilisez aussi probablement. Votre téléphone +est un android? Ah, un Nexus? Vous avez donc toutes les applications +google installées, et Chrome mobile comme navigateur par défaut, qui est +synchronisé avec la version qui tourne sur votre PC (via les serveurs de +Google, bien sur). +Depuis peu, les recherches sur le moteur de recherche +sont elles aussi ajoutées a votre profil, enregistrées a jamais par +Google (qui n'est pas touchée, en tant que société américaine, par la +"loi des 10 ans" francaise.). Vous commencez a voir le truc? Non, ne +jetez pas ce telephone, enfin! (je refuse de rembourser tout smartphone +ayant été perdu a cause de cet article) J'ai pris ici comme exemple +Google, parce que c'est celui qui propose le plus de services, mais +Apple avec iCloud, iTunes et son iPhone fait pareil, tout comme M$ avec +WP8 et Skydrive. + +Twitter et Facebook n'ont de rôle dans ce sujet qu'en ce que vous leur +fournissez des informations dont ils s'empressent de devenir seuls +propriétaires (cf les Conditions d'Utilisation de ces deux services), +puis de les revendre a des annonceurs faisant de la publicité +ciblée. Le problème est simple a apprehender, vous ne voulez pas que +l'un de ces services connaisse trop de choses sur vous (et ils recoupent +très bien les informations venant de sources differentes), car il est +évident qu'ils les vendent a des entreprises peu scrupuleuses quand +a leurs engagements de confidentialité, quand a leurs securité +aussi; mais surtout parce que depuis le 11 Septembre 2001 et le +Patriot Act, toute entreprise américaine **doit**fournir toutes ses +informations au gouvernement américain **sans aucune intervention d'un +juge, ou de quelque institution de controle que ce soit.** + +Ce qui est, comme vous pouvez le comprendre, relativement +problématique. (pour ceux qui a ce point se disent "je n'ai rien a +cacher, donc je m'en fous si le gouvernement américain sait tout de +moi", je vous conseille d'aller lire [cet article][] de Jean Marc +Manach, plein de bon sens...) Pour éviter cela, vous avez plusieurs +possibilités: utiliser des services concurrents pour tout (Facebook +Mail, Skydrive, Twitter et Google Reader par exemple), tout en vous +souvenant que comme ces entreprises sont toutes américaines, le +gouvenrnement américain détient tout de même vos informations, et que ca +lui prendra juste un peu plus de temps. + +Vous pouvez aussi n'utiliser que des entreprises francaises, +mais cela ne regle que le problème du Patriot Act, et pas celui de +la revente de vos données. Et puis essayez de trouver un service équivalent +a Google Reader et fourni par une entreprise française, on en reparlera. +Non, la véritable alternative, c'est d'héberger vos services vous +même, d'avoir votre propre serveur sur lequel vous possedez le plus +de services possibles, et d'utiliser des concurents ou des services +libres au maximum pour les autres, ceux qui ne sont pas distribuables +(par exemple, les cartes sont difficiles a mettre en commun, +or plusieurs alternatives existent: Google Maps, ``Apple +Maps``, Bing Maps, OpenStreetMaps, etc...). +Beaucoup de ces services sont cependant très facilement +décentralisables, surement parce qu'ils ont a la base étés conçus comme +des services décentralisés. Ainsi les emails, le web, le chat (via XMPP) +par exemple sont basés sur un système décentralisé. + +De plus, votre serveur peut vous servir a beaucoup d'autres des +choses que vous feriez habituellement sur votre ordinateur +personnel: conserver une présence sur IRC, compiler du code, faire +du rendu vidéo, etc... En bref, un serveur peut vous servir +a effectuer toutes les opérations que vous effectuez sur votre +ordinateur sans les inconvénients de la consommation éléctrique +ni du bruit, mais vous permet aussi de ne dépendre aucunement +d'une entreprise américaine, et cependant de disposer de tous les +services utiles offerts par ces dernières. + +Un serveur peut de plus vous permettre de controller parfaitement +tous ces services, sans aucune limitation d'aucune sorte, +voire de vous créer une page web. Bien entendu, il est bien plus +utile d'avoir un serveur si vous avez aussi un nom de domaine. +Heureusement, ils sont peu chers et souvent fournis avec le serveur. + +Dans de prochains articles, je vous expliquerai comment louer puis +configurer votre serveur pour qu'il serve de serveur mail (IMAP/SMTP), +web, base de données, et proxy. Cela dit, comme c'est un serveur sous +linux, vous pouvez l'utiliser pour a peu près n'importe quoi. +Voila, a bientôt! + + [cet article]: http://www.internetactu.net/2009/03/12/la-vie-privee-un-probleme-de-vieux-cons/ diff --git a/content/le-quenya-episode-o.md b/content/le-quenya-episode-o.md new file mode 100644 index 0000000..e854971 --- /dev/null +++ b/content/le-quenya-episode-o.md @@ -0,0 +1,44 @@ +Title: Le Quenya - Épisode ø +Date: 2012-09-18 19:07 +Author: Wxcafe +Category: Language +Slug: le-quenya-episode-o + +Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusqu’à il y +a peu...), le nom que donnait Tolkien au dialecte principal parlé par +les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des +Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte +avant de commencer cet article que l'une des œuvres les plus +impressionnantes de Tolkien, si ce n'est la plus grande, est +l'impressionnant travail linguistique passé sur les différentes langues +présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya, +la langue des nains, qui est appelé le khazalide, etc. + +En effet, a contrario des "langues" développées dans d'autres œuvres littéraires +telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot +de français (ou d'anglais) a un mot de sa "langue", les langues de +l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des +racines logiques, des systèmes de grammaire et de conjugaison propres, +une logique inhérente dans la prononciation ou l'orthographe, et ainsi +de suite. + +Un véritable rêve de linguiste donc, puisque ces langues sont +pratiquement entièrement documentées par Tolkien lui même (voir +l'appendice E du SdA, particulièrement instructif a ce sujet.) + +J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster +ici des résumés des cours que je suis ( disponibles [ici][] , une +traduction en français est disponible [la][] en pdf ), et des infos ici +toutes les deux semaines. + +Si ce sujet vous intéresse, le compte twitter @Quenya101 poste +régulièrement des informations sur le sujet, et pour plus d'infos sur le +sujet, vous pouvez en trouver [par ici][]. + +Et en tant que première leçon, vous pouvez apprendre que ce mot que vous +avez prononcé comme le Kenya tout le long de cet article se prononce en +fait [Kwenïa], ou bien Qwenya! + + [ici]: http://folk.uib.no/hnohf/qcourse.htm + [la]: http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf + [par ici]: olk.uib.no/hnohf/quenya.htm diff --git a/content/les-differentes-couches-dun-systeme-dexploitation.md b/content/les-differentes-couches-dun-systeme-dexploitation.md new file mode 100644 index 0000000..235077b --- /dev/null +++ b/content/les-differentes-couches-dun-systeme-dexploitation.md @@ -0,0 +1,94 @@ +Title: Les différentes couches d'un système d'exploitation +Date: 2012-09-06 23:29 +Author: Wxcafe +Category: Teaching +Slug: les-differentes-couches-dun-systeme-dexploitation + +Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques +années (plus ou moins, parce que j'ai toujours un Windows en dual boot, +principalement pour les jeux (possiblement plus pour longtemps, avec +l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou +moins bien mon système. Or il y a plusieurs choses a savoir sur les +systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est +le système de couches. + +Un système d'exploitation (de type UNIX, \enfin un vrai système quoi. +\) incorpore plusieurs systèmes de couches. + +Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique, +c'est a dire que tous les composants sont intégrés au kernel. Ce qui +signifie que rien ne peut être ajouté au noyau sans recompiler celui ci. +Or, quand on sait que le noyau comprend entre autres les drivers du +matériel et des systèmes de fichier, cela peut poser des problèmes quand +a la taille du kernel et a la licence libre de ce dernier. + +Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui +signifie que des modules peuvent être chargé a tout moment en cours +d’exécution, ce qui permet l'utilisation de nouveaux systèmes de +fichiers a chaud, ou l'insertion de matériel et l'installation de +drivers sans interrompre l’exécution du système (Windows utilise un +système de fausse installation de drivers pour le matériel externe, et +un système de pré-installation des drivers pour les périphériques dits +"plug and play") + +Après le noyau intervient le système. Or, au tous premiers instants du +boot, les systèmes GNU/Linux utilisent un système permettant de limiter +l'utilisation de ressources systèmes si elles ne sont pas nécessaires, +et incorpore ainsi un système dit de "runlevels" + +Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce +runlevel permet de tester le bon démarrage du système sans avoir a +effectuer de manipulation pour le ré-éteindre + +Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté +étant donné que ce runlevel donne accès a un système en étant +automatiquement loggé en tant que root, avec tous les autres +utilisateurs désactivés, de même que tous les systèmes de réseaux + +Le runlevel 2 est appelé mode multi user, et vous mets en face d'un +système classique. en ligne de commande, mais avec tous les systèmes de +réseau désactivés. + +Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux +activés. + +Le runlevel 4 n'est pas officiellement défini, et est censé être +activable en fonction des besoins de l'utilisateur. Sur la plupart des +distributions grand public, ce runlevel est lié au... + +Runlevel 5! Multi-user, networking, with working GUI! c'est le système +tel que vous le connaissez, avec l'interface graphique et le système de +login graphique. + +Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine +quand il devient le runlevel courant. + +(Il est a noter que Debian, et donc toutes les distribs qui en sont +dérivées, ne font pas de distinction entre les differents runlevels du 2 +au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login +et une interface graphique, et un mode réseau fonctionnel, bref avec des +fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.) + +Il est possible de changer de runlevel grâce a la commande runlevel +(oui, c'est évident...) + +Les systèmes Linux utilisent aussi un système dit de SandBox , qui en +informatique est un système permettant d'isoler les processus les uns +des autres. Ainsi, la pile réseau, qui est le système auquel les +différents processus envoient les différents paquets qui doivent sortir +de la machine , et qui redistribue ces paquets, est isolée du reste du +système, en cela qu'aucun des autres processus ne peuvent modifier cette +pile hors du runlevel 1 ou 2. + +De la même façon, le navigateur chrom/ium fait fonctionner tous les +onglets, ainsi que toutes les extensions, dans des processus différents. +Certaines distributions linux implémentent un système de cette sorte +pour toutes les applications, ou seulement pour certaines. ainsi Chakra +Linux a un système d'installation d'applications dans des disques +virtuels, ce qui permet une sécurité totale du processus. + +Voila, j'espère vous en avoir appris un peu sur le fonctionnement des +différentes couches de linux, et j'espère que cet article vous poussera +a tester un peu votre système et a vous amuser avec les différents +runlevels + diff --git a/content/les-systemes-de-fichiers.md b/content/les-systemes-de-fichiers.md new file mode 100644 index 0000000..7003c88 --- /dev/null +++ b/content/les-systemes-de-fichiers.md @@ -0,0 +1,123 @@ +Title: Les systèmes de fichiers +Date: 2012-09-25 10:28 +Author: Wxcafe +Category: Teaching +Slug: les-systemes-de-fichiers + +Un système de fichiers. Vous en avez surement déjà entendu parlé si vous +avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous +connaissez surement NTFS, EXT4, ou encore FAT32. + +Ces différents noms désignent en effet des systèmes de fichiers. Mais +qu'est-ce qu'un système de fichiers? + +Pour comprendre cela, il faut déjà savoir ce qu'est exactement un +fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la +plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio +([kibioctet][]), en fonction du système de fichier utilisé.), qui est +donc composé de bits, interprétés différemment en fonction du type de +fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il +n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, +ou il commence ni où il s'arrête (je schématise un peu, mais c'est +l'idée). + +Ainsi, le système de fichier donne un cadre et un standard à +l'arborescence des fichiers. Par exemple, le système de fichier ext4 +utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de +disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio +et mesurer la taille des fichiers en blocs de cette façon. Les systèmes +de fichiers nécessitent l'inclusion de drivers dans le noyau pour +pouvoir être pris en compte. + +Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, +reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu +près tout type de partition récente. + +Il convient de bien faire la différence entre le système de fichier et +l'arborescence des fichiers. Si l'arborescence des fichiers est en fait +une entité virtuelle englobant la racine / et tous les fichiers et +dossiers contenus dedans, le système de fichier permet a votre système +GNU/Linux de distinguer les différents fichiers composants cette +arborescence. + +Détaillons maintenant les types de fichiers les plus répandus: + +- FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, + soit la définition d'un système de fichier), remplissent leur rôle le + plus simplement possible. Ne permettant (historiquement) que des noms de + 8 caractères (plus extension de trois caractères), ni chiffrement, ni + système de distinction d'utilisateurs (DOS étant un système + mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, + utlisants respectivement des blocs de 16 et 32 Kio. + +- NTFS :. Le NTFS (pour New Technology File System, rapport a Windows + NT) est un système de fichier qui est apparu avec Windows XP, et qui + était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a + FAT différentes capacités dont le chiffrement, les liens symboliques, la + compression et les quotas pour les volumes, permettant de limiter la + taille maximum occupée dans une partition. + +- ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. + Ne différant pas énormément de NTFS, je le mentionne principalement + parce qu'il est prévu qu'il soit le défaut pour Windows 8. + Il apporte principalement la redondance, c'est a dire que chaque + fichier possède une somme de contrôle en 64 bits stockée dans un fichier + séparé pour éviter les corruption de disque. + +- Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers + les plus utilisés sous linux pour le grand public. (Je traiterai ici + d'ext4, puisque c'est le plus récent.) Il dispose de toutes les + fonctions que l'on peut attendre d'un système de fichiers moderne, ni + plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, + acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite + "par extent", ce qui signifie que la création d'un fichier réserve + automatiquement les zones contiguës de façon a réduire la fragmentation. + +- ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) + programmeur Hans Reiser, est a retenir pour avoir été le premier système + de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des + 4 milliards. Le but de ce système est de créer un système polyvalent, a + la fois système de fichiers et base de donnée (de part sa grande + capacité en terme de nombre de fichiers et de l'utilisation d'un + journal.) + +- Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi + l'allocation par extent, mais possède de plus un système de + sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers + montées en même temps (système pratique et utile pour faire des + snapshots de systèmes.). Il permet aussi de redimensionner a chaud la + taille des partitions, en les agrandissant ou en les rétrécissant, est + compatible avec [LVM][], a un système de checking intégré (btrfsck), et + utilise un algorithme de compression appelé LZ4, qui accélère les accès + aux fichiers compressés d'environ 30% par rapport a LZO, le système + utilisé dans ext4. + +- HFS+ : le système de fichier présent sur tous les macs a des capacités + relativement standards, et ressemble énormément a l'ext3. Il supporte + cependant les liens directs vers les dossiers, fonction rare sur les + systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau + dans les années a venir + +- ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux + et \*BSD, est, tel Btrfs, a la fois un système de fichier et un + remplaçant/compatible avec LVM, C'est un système de fichiers conçu + principalement pour les serveurs, et il intègre ainsi un système de + redondance des données pour éviter les corruptions, un mode RAID-Z + (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, + etc... + +Comme on a pu le voir, les systèmes de fichiers disponibles sont +légions. Cependant, le plus adapté a Linux et a une utilisation grand +public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier +n'est pas aujourd'hui proposé par défaut sur les distributions les plus +utilisées, au profit de l'ext4, qui commence a accuser son âge... + +Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au +fonctionnement du système, sont en fait de première importance, et ce +choix ne devrait pas être laissé au hasard, et être mis a jour +régulièrement (pour éviter les failles de sécurité...) + +Bon courage, et bon choix pour votre prochain système. + + [kibioctet]: http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s + [LVM]: http://fr.wikipedia.org/wiki/LVM diff --git a/content/linformatique-a-lecole.md b/content/linformatique-a-lecole.md new file mode 100644 index 0000000..e7bf923 --- /dev/null +++ b/content/linformatique-a-lecole.md @@ -0,0 +1,81 @@ +Title: L'informatique a l'école +Date: 2012-10-15 20:34 +Author: Wxcafe +Category: Ranting +Slug: linformatique-a-lecole + +Après avoir lu [cet article][] paru sur écrans.fr, et au vu des +nombreuses réflexions que j'ai eu sur ce sujet au cours des années, je +commence a me demander si la réponse logique ne serait pas d'enseigner +les bases de l'informatique (bases d’électronique, de programmation et +de logique formelle) dès le collège. + +En effet, l'exemple qui me revient toujours est celui des technoprêtres +de warhammer 40 000, dans un univers ou la technologie est ritualisée et +incomprise même des plus savants, qui se contentent de reproduire ce qui +existe, et parfois par chance de retrouver un schéma explicatif lisible +par une machine, et qu'ils ne comprennent pas eux mêmes, ou toute +technologie est ointe d'onguents sacrés, entourée d'encens avant d'être +péniblement actionnée par des assistants ne comprenant rien a cette +technologie (ayant lu [Hackers - Heroes of the Computer Revolution][] de +Steven Levy, c'est l'ambiance que l'on retrouve quand l'auteur décrit +l'ambiance près des machines IBM au MIT, au début de l'ouvrage), et il +me semble que de plus en plus la société se rapproche de cela. + +Cette culture de l’ingénierie, qui existait beaucoup lors des débuts de +l'informatique (telle que décrite par exemple par Steve Wozniak dans son +livre [iWoz][]) disparait pour laisser place a une culture de la +consommation et de l'utilisation de contenus existants, et même a une +certaine peur de la compréhension de la technologie. Ceux qui s'y +intéressent sont considérés comme marginaux (combien de hackers créent +des outils sur lesquels seront construits tous les systèmes du siècle a +venir, tels des Dennis Ritchie en puissance? Combien d'entre eux ne sont +pas intégrés a la société dite "normale"?), et on peut souvent observer +les réactions de peur que lancent les actions des hackers, ne serait-ce +que dans les journaux (combien de journaux 'mainstream' ont-ils parlés +des hackers en bien, c'est a dire tels qu'ils sont réellement, depuis +les années 80?) ou a la télévision. + +Ainsi, la culture et la connaissance de ces appareils que +sont les ordinateurs, qui aujourd'hui se trouvent du fond de nos +poches a dans l'espace en passant par l’intérieur des pacemakers +jusqu’à être une composante indispensable de la société, se perdent et +rendent ainsi la compréhension de ces appareils impossible (j'ai eu +la désagréable surprise récemment de voir un camarade de classe +me poser ingénument la question "Ah, mais en fait, quand tu installes +Linux, ça change le fond d'écran et les icônes?". Au-delà du niveau, +la misère de cette question est que cette personne n'avait probablement +aucune idée de la façon dont fonctionnait son ordinateur, a part +pour le fond d'écran en question et pour les fameuses icônes.) pour +le grand public, et cet évolution crée de fait une sorte d'oligarchie de +techno-comprenants, seuls capables de manier et de créer la technologie. + +C'est pour cela qu'il me semble intéressant, important, peut être même +requis, d'inclure au programme du collège puis du lycée des cours +d’électronique et d'informatique tels que décrits plus haut, de façon a +ce que les élèves comprennent le monde qui les entoure. Car c'est la le +but du cycle scolaire secondaire, me semble-t-il, et non pas de former +des futurs travailleurs. Sinon, pourquoi y aurait-il des cours de +musique, d'arts plastiques, ou encore de philosophie? Si le but du cycle +secondaire est bien d'ouvrir l'esprit des élèves sur le monde et sur ce +qui les entoure, alors les cours sur l'informatique s'imposent comme une +évidence, puisque ceux-ci nous entourent aujourd'hui bien plus que quoi +que soit d'autre... + +Ces cours seraient susceptibles de s’insérer en un mélange entre des +cours de technologie (qui aujourd'hui sont bien plus orientés physique +et machines-outils qu'informatique ou électronique, alors que la +technologie d'aujourd'hui et vraisemblablement de demain aussi est +l'informatique) et de physique, pour le côté électronique, et de façon a +donner enfin aux cours de physique un intérêt quelconque, sortir au delà +de la théorie et de l'abstraction complète que sont actuellement ces +cours et passer un peu dans la réalisation, avec des arduinos par +exemple. + +Vous aussi, intéressez vous a cela, de façon a ce que les jeunes ne +finissent pas par ne rien comprendre a ce qui est aujourd'hui l'une des +composante les plus importantes du monde tel qu'il est programmé. + + [cet article]: http://t.co/5PTfe6zu + [Hackers - Heroes of the Computer Revolution]: http://en.wikipedia.org/wiki/Hackers:_Heroes_of_the_Computer_Revolution + [iWoz]: http://en.wikipedia.org/wiki/IWoz diff --git a/content/update-a-propos-du-blog.md b/content/update-a-propos-du-blog.md new file mode 100644 index 0000000..2d63b13 --- /dev/null +++ b/content/update-a-propos-du-blog.md @@ -0,0 +1,34 @@ +Title: Update a propos du blog +Date: 2012-09-18 16:57 +Author: Wxcafe +Category: Notes +Slug: update-a-propos-du-blog + +Bonsoir! Un petit post pour faire un peu le point sur ce blog. +Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais +que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y +avoir un tantinet réfléchi, ceci est du a deux points principaux : + +- Tout d'abord, le manque d'inspiration, tout simplement. C'est assez +compliqué de trouver des sujets intéressants liés a l'informatique, et +qui méritent un article. Je vous invite d'ailleurs a me suggérer des +sujets via les commentaires ou twitter ([@Wxcafe][]) + +- Ensuite, le délai de 8 jours est trop court pour me permettre de faire +les recherches nécessaires, tout en manageant mes cours et mon temps +libre. + +A cause de cela, j'ai pris la décision de changer le rythme de parution +des articles a un \*minimum\* d'un post tous les 10 jours. Bien entendu, +si j'ai de l'inspiration en trop, plus de posts sont envisageables. + +Voila. A part ca, je tiens a vous remercier de me lire (c'est assez +étonnant de voir ca...), et je précise que je vais ajouter une page +About Me, qui bien entendu rassemblera des informations sur moi, ma vie, +mon oeuvre :P + +Ceci dit, je vais bosser un peu sur le prochain article. + +A plus tard! + + [@Wxcafe]: https://twitter.com/wxcafe diff --git a/output/author/wxcafe3.html b/output/author/wxcafe3.html new file mode 100644 index 0000000..8105624 --- /dev/null +++ b/output/author/wxcafe3.html @@ -0,0 +1,1271 @@ + + + + + Wxcafé - Wxcafe + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

Archlinux made simple

+
+ Date + + Fri 05 October 2012 + +
+ By + Wxcafe +
+ Category + OSes +
+ + + + +
+

Archlinux est réputée être une distribution Linux très complexe a +installer et a maintenir.

+

Je vais tenter ici de vous convaincre que ce n'est pas le cas, et +qu'elle peut se monter très intéressante et très instructive a installer +tout autant qu'a utiliser.

+

Il convient tout d'abord de rappeler a quels principes obéit Arch:

+
    +
  1. +

    Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des + programmes simples et utilisables par tous. Avec comme base de + simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu + de bonne volonté, la configuration n'est pas si compliquée!

    +
  2. +
  3. +

    La philosophie UNIX : chaque programme est prévu pour ne remplir + qu'une seule tâche. Bien entendu, cela ne concerne que les programmes + conçus pour s’insérer dans la philosophie UNIX, et les installations de + dépendances avec le gestionnaire de paquet d'Arch fonctionnent + superbement bien.

    +
  4. +
+

De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle +pacman, et les commandes de base sont :

+
    +
  • +

    recherche d'un paquet :

    +
    pacman -Ss paquet
    +
    + + +
  • +
  • +

    installation d'un paquet :

    +
    sudo pacman -S paquet
    +
    + + +
  • +
  • +

    désinstallation d'un paquet :

    +
    sudo pacman -R paquet
    +
    + + +
  • +
  • +

    mise a jour de tous les paquets installés :

    +
    sudo pacman -Syu paquet
    +
    + + +
  • +
+

Archlinux est une distribution dite "rolling release", ce qui signifie +qu'il n'y a pas de version a proprement dites, et que les paquets se +mettent a jour en permanence, sans jamais changer la "version" d'Arch. +Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site, +puisqu'une version plus ancienne n'aurait aucun sens.

+

Arch n'offre pas d'interface graphique par défaut : après avoir installé +le système, vous n'aurez qu'une invite de commande. Heureusement, je +vais ici vous guider a travers l'installation d'une interface graphique +(mate, le fork de gnome 2)

+

L'installation d'Arch se fait par le réseau, veillez a avoir une +connection WiFi ou filaire a proximité avant de suivre ce guide.

+

Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous +systemd. N'ayant pas encore eu le temps d’expérimenter assez avec ce +dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt.

+

Bon, passons a l'explication de l'installation proprement dite :

+

Tout d'abord, téléchargeons l'iso d'arch la plus récente :

+
wget http://mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso
+
+ + +

Ensuite, gravons cette image sur un disque USB :

+
dd if=archlinux-2012.09.07-dual.iso of=/dev/sdX
+
+ + +

Après reboot de la machine sur l'iso en question et choix de +l'architecture, nous sommes accueillis par un shell root.

+

La première chose a faire est de paramétrer le clavier :

+
loadkeys fr
+
+ + +

Puis nous pouvons passer a l'installation proprement dite. +Partitionnement :

+
cfdisk # cfdisk est suffisamment clair pour ne pas nécessiter d'explications
+
+ + +

formatage des partitions :

+
mkfs.ext4 /dev/sda1 # partition root
+
+pacman -Syu btrfs-progs && mkfs.btrfs /dev/sda2 # partition home
+
+mkswap /dev/sda3 && swapon /dev/sda3 # partition de swap
+
+ + +

Montons les partitions nouvellement créées, puis installons le système :

+
mount /dev/sda1 /mnt
+
+mkdir /mnt/home && mount /dev/sda2 /mnt/home
+
+dhclient eth0 # si vous utilisez une connection filaire, sinon voire http://wiki.archlinux.fr/Wifi#Configuration
+
+pacstrap /mnt base base-devel
+
+genfstab -p /mnt > /mnt/etc/fstab
+
+ + +

Allons prendre un café le temps que ça charge, puis installons les +quelques paquets nécessaires a notre installation et au premier +démarrage:

+
pacstrap /mnt syslinux btrfs-progs wireless_tools dhclient
+
+ + +

Maintenant, passons sur notre install toute fraîche d'Arch :

+
arch-chroot /mnt bash
+
+ + +

configurons les bases :

+
echo HOSTNAME > /etc/hostname
+
+ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
+
+date MMJJhhmmAAAA
+
+hwclock --systohc
+
+vim /etc/locale.gen # Décommentez les lignes correspondant au français : fr_FR.UTF-8 et fr_FR.ISO-8859-1
+
+echo  'LANG="fr_FR.UTF-8"' > /etc/locale.conf
+
+locale-gen
+
+mkinitcpio -p linux
+
+ + +

Enfin, vérifions que syslinux est correctement configuré :

+
vim /boot/syslinux/syslinux.cfg # il devrait y avoir "append root=/dev/sda1"
+
+ + +

Si tout est correct, installons syslinux, et paramétrons un mot de passe +root :

+
syslinux-install_update /dev/sda -mia
+
+passwd root
+
+ + +

Et voila, l'installation est terminée! Plus qu'a quitter la session et a +redémarrer l'ordinateur!

+
 exit
+umount /mnt/home 
+umount /mnt
+reboot
+
+ + +

Fini!

+

Prenons une petite pause. La partie suivante de ce tutoriel consister en +un paramétrage des principaux services nécessaires a l'utilisation d'un +OS, disons, moyen :

+
    +
  • +

    Installation de MATE, le gestionnaire de bureau (voir +http://mate-desktop.org/)

    +
  • +
  • +

    Installation de sudo et de networkmanager pour faire fonctionner les +composants essentiels du système sans avoir a tout activer a la main a +chaque démarrage

    +
  • +
  • +

    Installation de SLiM comme gestionnaire de login graphique, pour +présenter une interface plus accueillante que la console, et +configuration de celui-ci

    +
  • +
  • +

    Installation des principaux logiciels utiles non inclus dans mate ni +base (yaourt, chromium, thunderbird, etc...).

    +
  • +
+

Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un +gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter +ici.

+

Bon, reprenons.

+

Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de +passe paramétré plus haut pour le root, puis retapez la commande +utilisée plus tôt pour vous connecter a internet.

+

Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis +d'effectuer l'action en question :

+
vim /etc/pacman.conf
+
+ + +

Ici, ajoutez les lignes suivantes :

+
[mate]
+Server = http://repo.mate-desktop.org/archlinux/$arch
+
+ + +

Installons maintenant les paquets :

+
pacman -Syu mate mate-extras dbus dbus-core alsa networkmanager sudo
+
+ + +

Ajoutons un compte utilisateur pour utiliser les composants du système +sans tout crasher a chaque fois :

+
useradd -g users -G wheel,audio,optical,lp,scanner,log,power,floppy,storage,games,video -m -s /bin/bash *votrenom*
+passwd *votrenom*
+su *votrenom*
+
+ + +

Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org +ce que l'on veut utiliser :

+
echo "exec ck-launch-session mate-session" > ~/.xinitrc
+
+ + +

Profitons en pour ajouter les démons système au lancement :

+
vim /etc/rc.conf
+
+ + +

Ajoutez donc dbus, alsa. hwclock et networkmanager dans la section +DAEMONS (entre les parenthèses, après crond normalement)

+
DAEMONS=(syslog-ng network crond dbus alsa hwclock networkmanager)
+
+ + +

Pour éviter un reboot, il est ici possible de faire un

+
su
+
+ + +

Puis un

+
 /etc/rc.d/dbus start && /etc/rc.d/alsa start && /etc/rc.d/networkmanager start
+
+ + +

Sinon, il est possible de juste redémarrer.
+Une fois cela fait, profitez de ce moment pour vous autoriser vous même +a utiliser sudo. Loggez vous en root, et :

+
 vim /etc/sudoers
+
+ + +

Décommentez la ligne qui commence par # %wheel ALL=(ALL)
+Sauvegardez le fichier, puis, après un su *votrenom*, tentez de faire +un sudo ls /
+Normalement, vous devriez avoir un listing du dossier /
+Bon, maintenant, pourquoi ne pas tenter de lancer MATE?
+C'est simple comme bonjour :

+
 startx
+
+ + +

Et PAF! Voila un MATE desktop flambant neuf a configurer!
+Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous, +puis installez SLiM (sudo pacman -Syu slim).
+Configurons le:

+
echo "exec dbus-launch mate-session" > ~/.xinitrc && vim /etc/slim.conf
+
+ + +

Éditez la ligne +"sessions xfce4,icewm-session,wmaker,blackbox" de facon a +ce qu'elle ressemble a "sessions mate-session"
+Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS.
+Normalement, tout devrait fonctionner!
+Ah oui, et pour installer thunderbird, firefox, chromium, etc...

+
sudo pacman -Syu chromium thunderbird xchat firefox rhythmbox pidgin transmission-gtk vlc
+
+ + +

Voila! Et comme dirait @Spartition, c'est sale, mais qu'est-ce que c'est +bon!
+A plus~

+
+
+
+

Les systèmes de fichiers

+
+ Date + + Tue 25 September 2012 + +
+ By + Wxcafe +
+ Category + Teaching +
+ + + + +
+

Un système de fichiers. Vous en avez surement déjà entendu parlé si vous +avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous +connaissez surement NTFS, EXT4, ou encore FAT32.

+

Ces différents noms désignent en effet des systèmes de fichiers. Mais +qu'est-ce qu'un système de fichiers?

+

Pour comprendre cela, il faut déjà savoir ce qu'est exactement un +fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la +plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio +(kibioctet), en fonction du système de fichier utilisé.), qui est +donc composé de bits, interprétés différemment en fonction du type de +fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il +n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, +ou il commence ni où il s'arrête (je schématise un peu, mais c'est +l'idée).

+

Ainsi, le système de fichier donne un cadre et un standard à +l'arborescence des fichiers. Par exemple, le système de fichier ext4 +utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de +disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio +et mesurer la taille des fichiers en blocs de cette façon. Les systèmes +de fichiers nécessitent l'inclusion de drivers dans le noyau pour +pouvoir être pris en compte.

+

Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, +reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu +près tout type de partition récente.

+

Il convient de bien faire la différence entre le système de fichier et +l'arborescence des fichiers. Si l'arborescence des fichiers est en fait +une entité virtuelle englobant la racine / et tous les fichiers et +dossiers contenus dedans, le système de fichier permet a votre système +GNU/Linux de distinguer les différents fichiers composants cette +arborescence.

+

Détaillons maintenant les types de fichiers les plus répandus:

+
    +
  • +

    FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, + soit la définition d'un système de fichier), remplissent leur rôle le + plus simplement possible. Ne permettant (historiquement) que des noms de + 8 caractères (plus extension de trois caractères), ni chiffrement, ni + système de distinction d'utilisateurs (DOS étant un système + mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, + utlisants respectivement des blocs de 16 et 32 Kio.

    +
  • +
  • +

    NTFS :. Le NTFS (pour New Technology File System, rapport a Windows + NT) est un système de fichier qui est apparu avec Windows XP, et qui + était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a + FAT différentes capacités dont le chiffrement, les liens symboliques, la + compression et les quotas pour les volumes, permettant de limiter la + taille maximum occupée dans une partition.

    +
  • +
  • +

    ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. + Ne différant pas énormément de NTFS, je le mentionne principalement + parce qu'il est prévu qu'il soit le défaut pour Windows 8. + Il apporte principalement la redondance, c'est a dire que chaque + fichier possède une somme de contrôle en 64 bits stockée dans un fichier + séparé pour éviter les corruption de disque.

    +
  • +
  • +

    Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers + les plus utilisés sous linux pour le grand public. (Je traiterai ici + d'ext4, puisque c'est le plus récent.) Il dispose de toutes les + fonctions que l'on peut attendre d'un système de fichiers moderne, ni + plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, + acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite + "par extent", ce qui signifie que la création d'un fichier réserve + automatiquement les zones contiguës de façon a réduire la fragmentation.

    +
  • +
  • +

    ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) + programmeur Hans Reiser, est a retenir pour avoir été le premier système + de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des + 4 milliards. Le but de ce système est de créer un système polyvalent, a + la fois système de fichiers et base de donnée (de part sa grande + capacité en terme de nombre de fichiers et de l'utilisation d'un + journal.)

    +
  • +
  • +

    Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi + l'allocation par extent, mais possède de plus un système de + sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers + montées en même temps (système pratique et utile pour faire des + snapshots de systèmes.). Il permet aussi de redimensionner a chaud la + taille des partitions, en les agrandissant ou en les rétrécissant, est + compatible avec LVM, a un système de checking intégré (btrfsck), et + utilise un algorithme de compression appelé LZ4, qui accélère les accès + aux fichiers compressés d'environ 30% par rapport a LZO, le système + utilisé dans ext4.

    +
  • +
  • +

    HFS+ : le système de fichier présent sur tous les macs a des capacités + relativement standards, et ressemble énormément a l'ext3. Il supporte + cependant les liens directs vers les dossiers, fonction rare sur les + systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau + dans les années a venir

    +
  • +
  • +

    ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux + et *BSD, est, tel Btrfs, a la fois un système de fichier et un + remplaçant/compatible avec LVM, C'est un système de fichiers conçu + principalement pour les serveurs, et il intègre ainsi un système de + redondance des données pour éviter les corruptions, un mode RAID-Z + (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, + etc...

    +
  • +
+

Comme on a pu le voir, les systèmes de fichiers disponibles sont +légions. Cependant, le plus adapté a Linux et a une utilisation grand +public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier +n'est pas aujourd'hui proposé par défaut sur les distributions les plus +utilisées, au profit de l'ext4, qui commence a accuser son âge...

+

Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au +fonctionnement du système, sont en fait de première importance, et ce +choix ne devrait pas être laissé au hasard, et être mis a jour +régulièrement (pour éviter les failles de sécurité...)

+

Bon courage, et bon choix pour votre prochain système.

+
+
+
+

Le Quenya - Épisode ø

+
+ Date + + Tue 18 September 2012 + +
+ By + Wxcafe +
+ Category + Language +
+ + + + +
+

Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusqu’à il y +a peu...), le nom que donnait Tolkien au dialecte principal parlé par +les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des +Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte +avant de commencer cet article que l'une des œuvres les plus +impressionnantes de Tolkien, si ce n'est la plus grande, est +l'impressionnant travail linguistique passé sur les différentes langues +présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya, +la langue des nains, qui est appelé le khazalide, etc.

+

En effet, a contrario des "langues" développées dans d'autres œuvres littéraires +telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot +de français (ou d'anglais) a un mot de sa "langue", les langues de +l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des +racines logiques, des systèmes de grammaire et de conjugaison propres, +une logique inhérente dans la prononciation ou l'orthographe, et ainsi +de suite.

+

Un véritable rêve de linguiste donc, puisque ces langues sont +pratiquement entièrement documentées par Tolkien lui même (voir +l'appendice E du SdA, particulièrement instructif a ce sujet.)

+

J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster +ici des résumés des cours que je suis ( disponibles ici , une +traduction en français est disponible la en pdf ), et des infos ici +toutes les deux semaines.

+

Si ce sujet vous intéresse, le compte twitter @Quenya101 poste +régulièrement des informations sur le sujet, et pour plus d'infos sur le +sujet, vous pouvez en trouver par ici.

+

Et en tant que première leçon, vous pouvez apprendre que ce mot que vous +avez prononcé comme le Kenya tout le long de cet article se prononce en +fait [Kwenïa], ou bien Qwenya!

+
+
+
+

Update a propos du blog

+
+ Date + + Tue 18 September 2012 + +
+ By + Wxcafe +
+ Category + Notes +
+ + + + +
+

Bonsoir! Un petit post pour faire un peu le point sur ce blog.
+Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais +que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y +avoir un tantinet réfléchi, ceci est du a deux points principaux :

+
    +
  • +

    Tout d'abord, le manque d'inspiration, tout simplement. C'est assez +compliqué de trouver des sujets intéressants liés a l'informatique, et +qui méritent un article. Je vous invite d'ailleurs a me suggérer des +sujets via les commentaires ou twitter (@Wxcafe)

    +
  • +
  • +

    Ensuite, le délai de 8 jours est trop court pour me permettre de faire +les recherches nécessaires, tout en manageant mes cours et mon temps +libre.

    +
  • +
+

A cause de cela, j'ai pris la décision de changer le rythme de parution +des articles a un *minimum* d'un post tous les 10 jours. Bien entendu, +si j'ai de l'inspiration en trop, plus de posts sont envisageables.

+

Voila. A part ca, je tiens a vous remercier de me lire (c'est assez +étonnant de voir ca...), et je précise que je vais ajouter une page +About Me, qui bien entendu rassemblera des informations sur moi, ma vie, +mon oeuvre :P

+

Ceci dit, je vais bosser un peu sur le prochain article.

+

A plus tard!

+
+
+
+

Introduction a bash en tant que language de programmation.

+
+

L’interpréteur de commandes bash (Bourne Again SHell) +est possiblement le shell le plus connu, notamment grâce a son +intégration en tant que shell par défaut dans les distributions Linux +les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva - +Mageia, etc...).

+

Cependant, il n'est souvent connu qu'en tant qu’interpréteur de +commande. Alors qu'en réalité, le bash est un langage de programmation +(presque) complet! Ainsi, il intègre les structures de contrôle +habituelles ( pour mémoire, les structures de contrôle comprennent les +conditions (les ifs), les boucles (les while), et les choix (les case), +entre autres.), et est donc ce que l'on pourrait appeler un langage de +script, interprété, de la même façon que python, a la difference près +qu'il contient un prompt (un système d'entrée de commande interactif) +bien plus complet et développé que python.

+

Cependant, les programmes en bash ne sont executables que dans un +environnement de type UNIX, et donc pas sous Windows (cygwin +(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous +windows. Il faut malgré tout convenir que cet environnement est bien +plus compliqué a manipuler, et globalement ne permet pas d'acceder a des +portages de qualité satisfaisante.)

+

Ainsi, il est possible de créer des fichiers .sh, contenant des +instructions bash mises a la suite (de la même façon qu'un script BATCH +Windows .bat), et faisant appel autant aux commandes internes de bash, +aussi bien que les commandes externes mises en place par les programmes +installés sur le système, exactement comme dans une invite de commande. +Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit +panda roux directement dans la boite magique, tandis qu'un if +[condition] suivi d'un then (quelque chose) lancera le fameux quelque +chose suscité si la condition est vérifiée. Un peu comme en C, quoi.

+

De cette façon, et avec quelques informations et connaissances, il est +facile de comprendre le fonctionnement de la programmation en bash. +Quelques exemples commentés:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
#!/bin/bash 
+# La ligne du dessus est très importante, c'est elle qui dit a bash quel doit être 
+# l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'interpréter 
+# lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire 
+# executer du python, par exemple, en mettant #!/usr/bin/python a la place.
+echo "this is a test of bash as a simple script manager" # echo est une commande d'affichage de message.
+echo "what's your name, user?" 
+read your_name # la commande read permet de demander a l'utilisateur de donner une 
+# information, stockée dans la variable en paramètre. 
+echo $your_name "is your name" # echo permet aussi d'afficher la valeur de variables. 
+# Ici, on renvoie la variable remplie précédemment, suivie d'un message. 
+exit # cet appel a exit n'est pas obligatoire, mais donne un aspect plus 
+# propre au code. Il ne quittera pas la session de terminal, cependant.
+
+
+ +

Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite +d'être clair quand aux capacités et a la simplicité du bash en tant que +language de programmation. Alors en effet, nous n'avons ici absolument +pas utilisé les capacités de bash en lui même, et n'avons fait que le +renvoyer a des programmes externes (sauf read, il est vrai). Voyons +maintenant la syntaxe de bash quand il s'agit d'utiliser les structures +de contrôle:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
#!/bin/bash 
+echo "welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?" 
+read host_name 
+if [ $host_name == $HOSTNAME ] ## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. 
+then echo "you told the truth!" 
+fi ## le fi est la commande fermant le if, tout comme le EndIf en basic. C'est un peu vieillot, mais important en bash. 
+if [ $host_name != $HOSTNAME ] ## l'opérateur != est l'inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. 
+then echo "you lied!" 
+fi 
+exit
+
+
+ +

Voila un petit programme permettant d'apprendre la syntaxe du if en +bash. comme vous pouvez le voir, le language est plutôt lite, et la +structure if n'est pas très difficile a prendre en main.

+

Passons maintenant au while:

+
1
+2
+3
+4
+5
+6
+7
#!/bin/bash
+echo "what is your name?"
+read name
+while [ 1 < 10 ]    ## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.
+do echo "i love" $name
+done
+exit
+
+
+ +

Ce petit programme permet d'observer les bases de while (qui est la +boucle de base en bash).

+

Le troisième opérateur de bash est case. Voyons:

+
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
#!/bin/bash
+echo "please enter a number between one and five"
+read number
+case $number in 
+1)
+echo "the choosen number was one"
+;;
+2)
+echo "the choosen number was two"
+;;
+3)
+echo "the choosen number was three"
+;;
+4)
+echo "the choosen number was four"
+;;
+5)
+echo "the choosen number was five"
+;;
+*)
+echo "this number is not correct"
+;; 
+esac
+exit
+
+
+ +

case est un opérateur plus complexe a utiliser a bon escient, et sert a +faire des ifs multiples sans avoir a taper des dizaines de lignes de +code.
+(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre +que le code vérifie chacune des conditions : le 1) est validé si la +valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc.. +le *) désigne toutes les valeurs, et est donc validé si aucune autre +valeur n'a précédemment acceptée.

+

Quelques notions manquent ici:
+- les nombres aléatoires sont générés par un appel a la variable +\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a +16 bits donc). il est possible de faire des invocations a des nombres +aléatoires plus grands, mais les méthodes permettant de faire cela sont +plus complexes, et je ne les aborderai donc pas ici.
+- comme vous avez pu le constater, les variables sont désignées en tant +que telles par l'utilisation d'un symbole \$ au début de leur nom. +Ainsi, echo number renverra "number", tandis que echo \$number renverra +le résultat de la variable \$number.
+être utilisées dans un programme bash.
+- comme vous avez pu le constater, les commandes doivent tenir en +théorie en une ligne. Cependant, le caractère \ permet de retourner a +la ligne en faisant considérer a bash qu'il s'agit de la même ligne.

+

Globalement, il faut admettre que bash n'a pas vocation a être un +langage de programmation extrêmement développé. Sans framework +graphique, avec peu de manières d'utiliser de grandes variables, ou +encore une gestion de la mémoire risible, bash n'a rien d'un langage de +développement professionnel.
+Cependant, le simple fait qu'il soit considéré comme un langage de +programmation a part entière font de lui un langage de script d'une +puissance incontestable, et sa simplicité et sa grande popularité font +de lui un langage de choix pour apprendre la programmation simplement et +sans trop se prendre la tête.

+

J'espère que cet article aura été utile a certain-e-s, et je vous +souhaite bonne chance dans votre découverte de la programmation (n'allez +pas voir ceux qui font de l'orienté objet, c'est des méchants :3)

+
+
+
+

Les différentes couches d'un système d'exploitation

+
+ Date + + Thu 06 September 2012 + +
+ By + Wxcafe +
+ Category + Teaching +
+ + + + +
+

Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques +années (plus ou moins, parce que j'ai toujours un Windows en dual boot, +principalement pour les jeux (possiblement plus pour longtemps, avec +l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou +moins bien mon système. Or il y a plusieurs choses a savoir sur les +systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est +le système de couches.

+

Un système d'exploitation (de type UNIX, \<troll>enfin un vrai système quoi. +\</troll>) incorpore plusieurs systèmes de couches.

+

Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique, +c'est a dire que tous les composants sont intégrés au kernel. Ce qui +signifie que rien ne peut être ajouté au noyau sans recompiler celui ci. +Or, quand on sait que le noyau comprend entre autres les drivers du +matériel et des systèmes de fichier, cela peut poser des problèmes quand +a la taille du kernel et a la licence libre de ce dernier.

+

Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui +signifie que des modules peuvent être chargé a tout moment en cours +d’exécution, ce qui permet l'utilisation de nouveaux systèmes de +fichiers a chaud, ou l'insertion de matériel et l'installation de +drivers sans interrompre l’exécution du système (Windows utilise un +système de fausse installation de drivers pour le matériel externe, et +un système de pré-installation des drivers pour les périphériques dits +"plug and play")

+

Après le noyau intervient le système. Or, au tous premiers instants du +boot, les systèmes GNU/Linux utilisent un système permettant de limiter +l'utilisation de ressources systèmes si elles ne sont pas nécessaires, +et incorpore ainsi un système dit de "runlevels"

+

Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce +runlevel permet de tester le bon démarrage du système sans avoir a +effectuer de manipulation pour le ré-éteindre

+

Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté +étant donné que ce runlevel donne accès a un système en étant +automatiquement loggé en tant que root, avec tous les autres +utilisateurs désactivés, de même que tous les systèmes de réseaux

+

Le runlevel 2 est appelé mode multi user, et vous mets en face d'un +système classique. en ligne de commande, mais avec tous les systèmes de +réseau désactivés.

+

Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux +activés.

+

Le runlevel 4 n'est pas officiellement défini, et est censé être +activable en fonction des besoins de l'utilisateur. Sur la plupart des +distributions grand public, ce runlevel est lié au...

+

Runlevel 5! Multi-user, networking, with working GUI! c'est le système +tel que vous le connaissez, avec l'interface graphique et le système de +login graphique.

+

Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine +quand il devient le runlevel courant.

+

(Il est a noter que Debian, et donc toutes les distribs qui en sont +dérivées, ne font pas de distinction entre les differents runlevels du 2 +au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login +et une interface graphique, et un mode réseau fonctionnel, bref avec des +fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)

+

Il est possible de changer de runlevel grâce a la commande runlevel +(oui, c'est évident...)

+

Les systèmes Linux utilisent aussi un système dit de SandBox , qui en +informatique est un système permettant d'isoler les processus les uns +des autres. Ainsi, la pile réseau, qui est le système auquel les +différents processus envoient les différents paquets qui doivent sortir +de la machine , et qui redistribue ces paquets, est isolée du reste du +système, en cela qu'aucun des autres processus ne peuvent modifier cette +pile hors du runlevel 1 ou 2.

+

De la même façon, le navigateur chrom/ium fait fonctionner tous les +onglets, ainsi que toutes les extensions, dans des processus différents. +Certaines distributions linux implémentent un système de cette sorte +pour toutes les applications, ou seulement pour certaines. ainsi Chakra +Linux a un système d'installation d'applications dans des disques +virtuels, ce qui permet une sécurité totale du processus.

+

Voila, j'espère vous en avoir appris un peu sur le fonctionnement des +différentes couches de linux, et j'espère que cet article vous poussera +a tester un peu votre système et a vous amuser avec les différents +runlevels

+
+
+
+

La programmation expliquée simplement

+
+ Date + + Mon 27 August 2012 + +
+ By + Wxcafe +
+ Category + Teaching +
+ + + + +
+

Salut!
+Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire +récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé +pas mal de temps assez occupé.

+

Enfin, après un certain temps a farfouiller au millieu des connecteurs +SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques +durs, je suis de retour pour un court article.
+Du coup, je m'étais dit que j'allais reprendre sur le thème de +l'informatique expliquée au grand public, en tentant d'aller un peu plus +loin que la dernière fois sur le thème de la programmation
+Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur. +Si a peu près tout le monde sait que "les ordinateurs, ils ne +comprennent que les 1 et les 0!", peu de gens savent comment cela +fonctionne en détail.

+

Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà +des notions de base en informatique. Ainsi, vous savez surement que les +ordinateurs fonctionnent avec des programmes, qui sont composés de +code.
+Ainsi, il faut comprendre que le code (source) est "compilé" en un +fichier "binaire". Un fichier binaire est un fichier comprenant les +instructions telles qu’exécutées par le processeur, et donc absolument +illisible pour un humain.

+

La compilation est le processus qui transforme le code source en +binaire executable. Les binaires ont, sous Windows, l'extension .exe, +tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension +particulière.
+Ceci étant dit, il faut comprendre que certains langages sont plus +proches que d'autres du langage processeur, les langages les plus +proches sont dits de "bas niveau". Les langages les plus éloignés sont +donc dits de haut niveau.

+

Par exemple, l'assembleur est l'un des languages de plus bas niveau, +tandis que python par exemple est un langage de plus haut niveau. Les +langages de haut niveau sont souvent bien plus simples a comprendre et a +apprendre que les langages de bas niveau

+

Ainsi, en C, un langage de niveau relativement bas, pour afficher +"hello world" sur l'écran, le code nécessaire est :

+
#include 
+void main() {
+printf("hello world");
+return 0;
+}
+
+ + +

le même programme en python s'écrit :

+
print "hello world"
+
+ + +

et n'a pas besoin d'être compilé , puisqu'il peut être intepreté +directement.

+

Python utilise en effet un système similaire a Java en ayant un +interpréteur dit "runtime" ou "temps réel", qui interprète le programme +sans le compiler. Java utilise un système légèrement différent, puisque +le code a besoin d'être compilé, mais est interpreté par un interpréteur +et non par le processeur.

+

Cette méthode permet le fameux "code once, run everywhere", ce qui +signifie que le même code est exécutable sur quasiment tous les systèmes +d'exploitation (en fait, tous ceux sur lesquels l’interpréteur est +disponible.)

+

Voila, je vous laisse sur le fonctionnement de Java et de Python, et je +vais me coucher.
+A bientôt!

+
+
+
+

GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère

+
+ Date + + Wed 22 August 2012 + +
+ By + Wxcafe +
+ Category + Teaching +
+ + + + +
+

GNU/Linux est un vaste et extraordinaire territoire technologique, mais +je ne vais pas m'attarder ici sur les aspects profondément techniques de +ce territoire pour faire plutôt une sorte d'introduction a ce qu'est +vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de +connaissances en informatique.

+

GNU/Linux, que j’abrégerai ici en Linux pour plus de simplicité, est un +Système d'Exploitation. Un système d'exploitation est, pour simplifier, +un ensemble d'outils informatiques qui vous permettent d'utiliser votre +ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation +de système d'exploitation (Operating System en anglais) est OS. Les 4 +principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et +Solaris. Les trois derniers sont issus d'un autre système, plus ancien, +nommé UNIX.

+

De ce fait, on pourrait penser que Linux remplace complètement Windows +une fois installé, et comprend une interface graphique, et toutes sortes +d'utilitaires permettant a l'utilisateur d'utiliser le système (sous +Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer. +Pour l'interface graphique, pensez a... Pensez que votre système affiche +autre chose que des lignes de commande.) Or non, une fois installé, +Linux en lui même ne vous afficherait aucune interface graphique, et +s'il est effectivement livré avec des utilitaires, ils ne sont que des +programmes en ligne de commande. Autant les utilisateurs avancés sauront +s'en servir, et pourront argumenter que c'est plus efficace ou plus +rapide, autant les utilisateurs basiques préfèrent une interface +graphique. Alors comment en obtenir une?

+

Ici, il convient de faire une précision importante. Si il n'existe +qu'une seule version de Windows, ou de Mac OS, il existe en fait +plusieurs centaines de "versions" différentes de Linux. Appelées +distributions, ces dernière sont développées par des groupes +complètement séparés, et se basent sur le fait que Linux soit +entièrement placé sous licence libre (ce qui leur permet de l'utiliser a +leur guise, a condition que leur travail soit lui aussi placé sous +licence libre). De ce fait, de nombreuses distributions existent et se +développent en parallèle. On peut ainsi citer Debian, qui est l'une +des distributions les plus importantes, ou encore Ubuntu, qui est +l'une des plus connues et des plus simples a utiliser.

+

Ainsi, ces distributions intègrent une interface graphique. Cependant, +grâce a la liberté dont bénéficient les développeurs sous Linux, il +existe de nombreuses interfaces graphiques différentes : Unity, la +nouvelle interface d'Ubuntu; GNOME , une interface qui vise a la +simplicité; ou encore KDE, une interface utilisateur ressemblant a +Windows 7.

+

Ainsi, le choix astronomique de distributions Linux a bien un sens : +chacune d'entre elle intègre des outils différents. Par exemple, Debian +intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend +particulièrement stable. Ubuntu intègre Unity, ce qui en fait une +distribution particulièrement intuitive. Linux Mint intègre Cinnamon, +qui est une version dérivée de GNOME 3, ce qui permet encore une autre +expérience. Et Arch Linux n'intègre pas d'interface graphique du tout, +ce qui permet a l'utilisateur de choisir entre les multiples interfaces +existantes.

+

Ce qu'il est important de retenir de cela, c'est que Linux est un OS +complètement libre, ce qui signifie que n'importe qui peut modifier et +utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi, +Linux est un OS qui est véritablement créé par des passionnés, pour tous +et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué +a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus. +Cependant, Linux donne la possibilité a l'utilisateur de le rendre +affreusement complexe, mais aussi de le rendre adapté a ses besoins, +quels que soient ceux ci. Et c'est la que réside l'incroyable puissance +de ce Système d'Exploitation. Il est extraordinairement adaptable.

+

N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas +technophiles. Ils pourraient adorer, et peut être même le devenir :)

+

A bientôt!

+
+
+
+

Débuts, présentation, etc...

+
+ Date + + Sat 18 August 2012 + +
+ By + Wxcafe +
+ Category + Notes +
+ + + + +
+

Bonjour!

+

Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur +Twitter, mais aussi sur IRC (Je traîne pas mal sur +irc.freenode.net/##nolife et #debian-fr)

+

J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je +fais partie de ce genre de personne qui sont capables d'investir tout +leur temps et leur énergie a s’intéresser a un sujet en particulier, et +qui ne peuvent pas vivre sans leurs passions, avec une petite différence +cependant, qui est que je m’intéresse a plusieurs choses : +l'informatique, qui est un champ tellement large qu'on peut passer une +vie a apprendre des choses dessus, et plus particulièrement à +l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres +{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les +trolls seront a partir de maintenant indiqués avec le tag [tr]] du +libre, je préfère utiliser de l'open-source si c'est possible}, +programmation en C, python et java, etc...) , mais aussi a +l’électronique.

+

Dans un tout autre registre, je m’intéresse aussi +beaucoup aux différents aspects du féminisme et des égalités sexuelles +(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) , +et a la culture dite "geek" en général.

+

Je tenterai de poster ici le plus souvent possible, mais j'ai de gros +problèmes en terme de régularité de post, donc ne vous inquiétez pas si +vous ne voyez rien pendant deux semaines.

+

Merci beaucoup de votre attention, et a bientôt!

+
+
+ +
+ +
+
+ +
+ + \ No newline at end of file diff --git a/output/category/language/index.html b/output/category/language/index.html new file mode 100644 index 0000000..5206d73 --- /dev/null +++ b/output/category/language/index.html @@ -0,0 +1,244 @@ + + + + + Wxcafé - Language + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

Le Quenya - Épisode ø

+
+ Date + + Tue 18 September 2012 + +
+ By + Wxcafe +
+ Category + Language +
+ + + + +
+

Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusqu’à il y +a peu...), le nom que donnait Tolkien au dialecte principal parlé par +les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des +Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte +avant de commencer cet article que l'une des œuvres les plus +impressionnantes de Tolkien, si ce n'est la plus grande, est +l'impressionnant travail linguistique passé sur les différentes langues +présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya, +la langue des nains, qui est appelé le khazalide, etc.

+

En effet, a contrario des "langues" développées dans d'autres œuvres littéraires +telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot +de français (ou d'anglais) a un mot de sa "langue", les langues de +l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des +racines logiques, des systèmes de grammaire et de conjugaison propres, +une logique inhérente dans la prononciation ou l'orthographe, et ainsi +de suite.

+

Un véritable rêve de linguiste donc, puisque ces langues sont +pratiquement entièrement documentées par Tolkien lui même (voir +l'appendice E du SdA, particulièrement instructif a ce sujet.)

+

J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster +ici des résumés des cours que je suis ( disponibles ici , une +traduction en français est disponible la en pdf ), et des infos ici +toutes les deux semaines.

+

Si ce sujet vous intéresse, le compte twitter @Quenya101 poste +régulièrement des informations sur le sujet, et pour plus d'infos sur le +sujet, vous pouvez en trouver par ici.

+

Et en tant que première leçon, vous pouvez apprendre que ce mot que vous +avez prononcé comme le Kenya tout le long de cet article se prononce en +fait [Kwenïa], ou bien Qwenya!

+
+
+
+

Pages

+
  • A propos
  • +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/category/notes/index.html b/output/category/notes/index.html new file mode 100644 index 0000000..0b57020 --- /dev/null +++ b/output/category/notes/index.html @@ -0,0 +1,567 @@ + + + + + Wxcafé - Notes + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +

    SSL ou la sécurité sur l'internet

    +
    + Date + + Fri 30 May 2014 + +
    + By + Wxcafe +
    + Category + Notes +
    + + + + +
    +

    Disclaimer: Ce billet est écrit après le visionnage de la conférence de Moxie +Marlinspike suivante: More Tricks for Defeating SSL, +présentée a la DefCon 17 (en 2011), et la lecture du billet suivant: +A Critique of Lavabit, +ce qui peut avoir l'effet de rendre légèrement parano. Si vous considérez que +c'est le cas ici, veuillez ne pas tenir compte de ce billet (et vous pouvez dès +a présent dire coucou aux différentes personnes qui écoutent votre connection)

    +

    Si vous venez ici souvent (vous devriez), et que vous utilisez SSL pour vous +connecter a ce site (vous devriez, vraiment, dans ce cas), vous avez peut être +remarqué quelque chose récemment : il se trouve que le certificat qui permet de +desservir ce site a changé.

    +

    Cela fait suite aux évènements évoqués dans le Disclaimer, mais aussi a des +doigts sortis d'un endroit particulier du corps de l'admin/auteur de ce "blog", +qui a pris enfin les 5 minutes nécessaires a la compréhension superficielle +du fonctionnement de SSL, et les 10 nécessaires a la mise en place d'un système +fonctionnel utilisant cette compréhension récemment acquise.

    +

    Bref, le certificat a changé. Mais de quelle façon, vous demandez vous peut +être (ou pas, mais bon, je vais expliquer de toute façon). Et bien c'est très +simple : il existait auparavant un certificat pour wxcafe.net, un pour +paste.wxcafe.net, un pour mail.wxcafe.net, etc... Bref, un certificat +différent pour chaque sous-domaine.

    +

    Il s'avère que c'est a la fois très peu pratique a utiliser (les utilisateurs +doivent ajouter chaque certificat a leur navigateur séparément, chaque +changement de sous-domaine conduit a un message d'erreur, etc) et pas plus +sécurisé que d'avoir un seul certificat wildcard. J'ai donc généré un certificat +pour *.wxcafe.net hier, et il sera dorénavant utilisé pour tous les +sous-domaine de wxcafe.net; et un certificat pour wxcafe.net, qui ne matche +pas *.wxcafe.net, et qui sera donc utilisé... bah pour wxcafe.net.

    +

    Il serait préférable de faire des redirections automatiques des adresses http +vers les adresses https, cependant, étant donné que le certificat est +self-signed, il me semble préférable que l'arrivée sur le site ne commence pas +par une page firefox disant "Something's Wrong!", et ces redirections ne seront +donc pas mises en place.

    +

    De plus, après la lecture de l'article de blog sur Lavabit dont le lien est plus +haut, il semble intéressant (et assez important) de faire en sorte que le +serveur utilise en priorité (et si possible, uniquement) des ciphers supportant +PFS, soit EDH et EECDH (Ephemeral Diffie-Helmann et la version Elliptic Curves +de ce même algorithme). Cela permet de faire en sorte que toutes les +communications avec ce serveur soient future-proof, c'est a dire que, même si +quelqu'un récupérait la clé privée, elle ne serait pas utile pour déchiffrer les +communications passées.

    +

    Bon, maintenant que les explications basiques sont faites, voyons +l'implémentation :
    +Pour générer la clé, tout d'abord, il convient d'utiliser les commandes +suivantes:

    +
    sudo openssl genrsa -out example.key 4096
    +# nous utilisons ici une clé de 4096 bits, la taille est laissée a votre appréciation
    +sudo openssl req -new -key example.key -out example.csr
    +# OpenSSL va ici vous demander de nombreuses informations, "Common Name" devant contenir le FQDN
    +sudo openssl X509 -req -days 1095 -in example.csr -signkey example.key -out example.crt
    +# enfin, nous générons la clé, d'une durée de vie de 3 ans
    +
    + + +

    Bien entendu, si vous voulez utiliser une clé wildcard, il vous faut préciser +*.example.com comme common name. +Une fois la clé générée, il faut dire aux différents services de l'utiliser, et +de n'utiliser que des ciphers PFS. La méthode dépend donc du service. +Je vais lister ici les methodes pour quelques services que j'utilise :

    +

    apache :

    +
    # /etc/apache2/mods_enabled/ssl.conf
    +# [...]
    +SSLProtocol all -SSLv2 -SSLv3
    +SSLHonorCipherOrder on
    +SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
    +  EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
    +  EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
    +# [...]
    +# /etc/apache2/sites-enabled/default-ssl
    +# [...]
    +SSLEngine on
    +SSLCertificateFile /etc/certs/example.com.crt
    +SSLCertificateKeyFile /etc/certs/example.com.key
    +# [...]
    +
    + + +

    nginx :

    +
    # /etc/nginx/nginx.conf 
    +# [...]
    +ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    +ssl_prefer_server_ciphers on;
    +ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
    +  EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
    +  EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
    +# [...]
    +# /etc/nginx/sites-enabled/default-ssl
    +# [...]
    +ssl on;
    +ssl_certificate /etc/certs/example.com.crt
    +ssl_certificate_key /etc/certs/example.com.key
    +# [...]
    +
    + + +

    prosody (jabber) :

    +
    # tout d'abord, lancez la commande suivante :
    +sudo openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048
    +# ensuite, pour chaque VirtualHost dans /etc/prosody/prosody.conf :
    +ssl = {
    +  dhparam = "/etc/prosody/certs/dh-2048.pem";
    +  key = "/etc/certs/example.com.key";
    +  certificate = "/etc/certs/example.com.crt";
    +}
    +# la cipher suite de prosody utilise par défaut EDH et EECDH
    +
    + + +

    postfix (email) :

    +
    # /etc/postfix/main.cf
    +# [...]
    +smtpd_tls_cert_file = /etc/certs/example.com.crt
    +smtpd_tls_key_file = /etc/certs/example.com.key
    +tls_preempt_cipherlist = yes
    +smtpd_tls_eecdh_grade = strong
    +smtdp_tls_mandatory_ciphers = high
    +smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, MD5, LOW, 3DES, EXP, PSK, SRP, DSS
    +smtpd_tls_security_level = encrypt
    +smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
    +smtpd_use_tls = yes
    +# [...]
    +
    + + +

    dovecot (imap) :

    +
    # /etc/dovecot/dovecot.conf 
    +# [...]
    +ssl_cert = </etc/certs/example.com.crt
    +ssl_key = </etc/certs/example.com.key
    +ssl_cipher_list = HIGH+kEDH:HIGH+kEECDH:HIGH:!PSK:!SRP:!3DES:!aNULL
    +
    + + +

    Voila. Pour d'autres protocoles/services, je vous invite a RTFM^W vous reporter +au manuel approprié.

    +

    Cela étant dit, je conseille a tout le monde d'aller voir la conférence dans le +disclaimer, et tant qu'a faire la conférence du même hacker SSL and the future +of Authenticity qui parle de son +implémentation d'une technologie "remplaçant" le système de CAs qui existe +actuellement.

    +
    +
    +
    +

    Redesign du blog, etc

    +
    + Date + + Wed 12 June 2013 + +
    + By + wxcafe +
    + Category + Notes +
    + + + + +
    +

    Comme vous avez pu le remarquer, ce blog a "un peu" changé récemment.

    +

    Du coup, expliquons. J'ai récemment monté serverporn, et ai par la même +occasion découvert pelican. J'ai tout de suite accroché a ce générateur de +site statique en python, du fait de son efficacité, de sa facilité d'utilisation +et de sa grande customisation. En gros, pelican est un logiciel qui prend des +fichiers markdown ou reStructuredText, les passe a la moulinette d'un "thème" +constitué de templates pour les fichiers html et l'organisation du projet et +d'une partie "statique" contenant le css, et les autres fichiers nécessaires au +projet, et en fait des pages html.

    +

    Globalement, un thème est constitué ainsi :

    +
    thème
    +├── static
    +   ├─ css
    +     └─ [css files]
    +   ├─ img
    +     └─ [image files]
    +   └─ js
    +      └─ [javascript files]
    +└── template
    +    ├─ base.html
    +    ├─ index.html
    +    ├─ page.html
    +    ├─ [...]
    +    └─ article.html
    +
    + + +

    Sachant que les fichiers .html sont en réalité des fichiers suivant la syntaxe +django, et utilisent des variables particulières telles {{ article.content }}, +par exemple. La syntaxe complète est très bien documentée dans la doc de +pelican.

    +

    L'un des grands avantages de pelican est aussi la facilité qu'il offre quand a +la mise a jour du blog.
    +En effet, il offre un système de Makefiles permettant, grâce a de nombreuses +cibles de compilation, de régénérer le site entier, de ne générer que les +fichiers modifiés depuis la dernière génération, de générer uniquement les +fichiers n'existant pas la dernière fois, etc... +La gestion du projet en devient donc très simple, puisque après avoir écrit un +article, il suffit de faire un make html pour mettre a jour le blog.

    +

    De plus, le système de wordpress commençait a ne plus me convenir, du fait du +manque de customisation, du fait que ça soit du PHP (beurk), etc. La, avec +pelican, je contrôle bien plus ce qui est mis sur le serveur (puisque c'est moi +qui ait modifié les templates et le css), c'est lisible (puisque c'est du +python, par opposition au PHP...), et c'est plus "efficace". Le markdown est +très pratique, je peux utiliser mon éditeur de texte de prédilection pour faire +les articles, je n'ai pas besoin d'un accès continu au net, bref, c'est plus +efficace.

    +

    En ce qui concerne les points négatifs :

    +
      +
    • +

      Perte des commentaires: + Je vous propose de vous référer a l'article de Gordontesos ici quand a + mon avis sur ce sujet.

      +
    • +
    • +

      Perte du bouton flattr: + Il va bientôt être remis, c'est juste un manque de temps de ma part, mais vu + que toutes les pages passent par les mêmes templates, c'est assez facile a + faire.

      +
    • +
    • +

      Perte du spam: + Pourquoi c'est dans les points négatifs, ca?

      +
    • +
    • +

      Temps d'adaptation et d'appréhension du système: + Oui, pendant encore un certain temps, il y aura des glitchs plus ou moins + réguliers sur le blog, c'est parce que j'apprend a me servir de ce système + et que j'apprend du css et du html. Ca arrive, ca passera, mais dans tous + les cas ca me permet d'apprendre plein de choses, donc je mets plutôt ca + dans la catëgorie positive.

      +
    • +
    +

    Voila, c'est mon retour d'expérience sur pelican. A plus.

    +
    +
    +
    +

    Update

    +
    + Date + + Sat 05 January 2013 + +
    + By + Wxcafe +
    + Category + Notes +
    + + + + +
    +

    Juste une petite note pour annoncer le prochain article, consacré a la +fabrication d'une PirateBox basée sur un Raspberry Pi. Voila, a bientôt +sur le blog!

    +
    +
    +
    +

    Update a propos du blog

    +
    + Date + + Tue 18 September 2012 + +
    + By + Wxcafe +
    + Category + Notes +
    + + + + +
    +

    Bonsoir! Un petit post pour faire un peu le point sur ce blog.
    +Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais +que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y +avoir un tantinet réfléchi, ceci est du a deux points principaux :

    +
      +
    • +

      Tout d'abord, le manque d'inspiration, tout simplement. C'est assez +compliqué de trouver des sujets intéressants liés a l'informatique, et +qui méritent un article. Je vous invite d'ailleurs a me suggérer des +sujets via les commentaires ou twitter (@Wxcafe)

      +
    • +
    • +

      Ensuite, le délai de 8 jours est trop court pour me permettre de faire +les recherches nécessaires, tout en manageant mes cours et mon temps +libre.

      +
    • +
    +

    A cause de cela, j'ai pris la décision de changer le rythme de parution +des articles a un *minimum* d'un post tous les 10 jours. Bien entendu, +si j'ai de l'inspiration en trop, plus de posts sont envisageables.

    +

    Voila. A part ca, je tiens a vous remercier de me lire (c'est assez +étonnant de voir ca...), et je précise que je vais ajouter une page +About Me, qui bien entendu rassemblera des informations sur moi, ma vie, +mon oeuvre :P

    +

    Ceci dit, je vais bosser un peu sur le prochain article.

    +

    A plus tard!

    +
    +
    +
    +

    Débuts, présentation, etc...

    +
    + Date + + Sat 18 August 2012 + +
    + By + Wxcafe +
    + Category + Notes +
    + + + + +
    +

    Bonjour!

    +

    Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur +Twitter, mais aussi sur IRC (Je traîne pas mal sur +irc.freenode.net/##nolife et #debian-fr)

    +

    J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je +fais partie de ce genre de personne qui sont capables d'investir tout +leur temps et leur énergie a s’intéresser a un sujet en particulier, et +qui ne peuvent pas vivre sans leurs passions, avec une petite différence +cependant, qui est que je m’intéresse a plusieurs choses : +l'informatique, qui est un champ tellement large qu'on peut passer une +vie a apprendre des choses dessus, et plus particulièrement à +l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres +{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les +trolls seront a partir de maintenant indiqués avec le tag [tr]] du +libre, je préfère utiliser de l'open-source si c'est possible}, +programmation en C, python et java, etc...) , mais aussi a +l’électronique.

    +

    Dans un tout autre registre, je m’intéresse aussi +beaucoup aux différents aspects du féminisme et des égalités sexuelles +(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) , +et a la culture dite "geek" en général.

    +

    Je tenterai de poster ici le plus souvent possible, mais j'ai de gros +problèmes en terme de régularité de post, donc ne vous inquiétez pas si +vous ne voyez rien pendant deux semaines.

    +

    Merci beaucoup de votre attention, et a bientôt!

    +
    +
    +
    +

    Pages

    +
  • A propos
  • +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/category/programmation/index.html b/output/category/programmation/index.html new file mode 100644 index 0000000..6cdd42d --- /dev/null +++ b/output/category/programmation/index.html @@ -0,0 +1,412 @@ + + + + + Wxcafé - Programmation + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +

    Introduction a bash en tant que language de programmation.

    +
    +

    L’interpréteur de commandes bash (Bourne Again SHell) +est possiblement le shell le plus connu, notamment grâce a son +intégration en tant que shell par défaut dans les distributions Linux +les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva - +Mageia, etc...).

    +

    Cependant, il n'est souvent connu qu'en tant qu’interpréteur de +commande. Alors qu'en réalité, le bash est un langage de programmation +(presque) complet! Ainsi, il intègre les structures de contrôle +habituelles ( pour mémoire, les structures de contrôle comprennent les +conditions (les ifs), les boucles (les while), et les choix (les case), +entre autres.), et est donc ce que l'on pourrait appeler un langage de +script, interprété, de la même façon que python, a la difference près +qu'il contient un prompt (un système d'entrée de commande interactif) +bien plus complet et développé que python.

    +

    Cependant, les programmes en bash ne sont executables que dans un +environnement de type UNIX, et donc pas sous Windows (cygwin +(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous +windows. Il faut malgré tout convenir que cet environnement est bien +plus compliqué a manipuler, et globalement ne permet pas d'acceder a des +portages de qualité satisfaisante.)

    +

    Ainsi, il est possible de créer des fichiers .sh, contenant des +instructions bash mises a la suite (de la même façon qu'un script BATCH +Windows .bat), et faisant appel autant aux commandes internes de bash, +aussi bien que les commandes externes mises en place par les programmes +installés sur le système, exactement comme dans une invite de commande. +Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit +panda roux directement dans la boite magique, tandis qu'un if +[condition] suivi d'un then (quelque chose) lancera le fameux quelque +chose suscité si la condition est vérifiée. Un peu comme en C, quoi.

    +

    De cette façon, et avec quelques informations et connaissances, il est +facile de comprendre le fonctionnement de la programmation en bash. +Quelques exemples commentés:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    #!/bin/bash 
    +# La ligne du dessus est très importante, c'est elle qui dit a bash quel doit être 
    +# l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'interpréter 
    +# lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire 
    +# executer du python, par exemple, en mettant #!/usr/bin/python a la place.
    +echo "this is a test of bash as a simple script manager" # echo est une commande d'affichage de message.
    +echo "what's your name, user?" 
    +read your_name # la commande read permet de demander a l'utilisateur de donner une 
    +# information, stockée dans la variable en paramètre. 
    +echo $your_name "is your name" # echo permet aussi d'afficher la valeur de variables. 
    +# Ici, on renvoie la variable remplie précédemment, suivie d'un message. 
    +exit # cet appel a exit n'est pas obligatoire, mais donne un aspect plus 
    +# propre au code. Il ne quittera pas la session de terminal, cependant.
    +
    +
    + +

    Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite +d'être clair quand aux capacités et a la simplicité du bash en tant que +language de programmation. Alors en effet, nous n'avons ici absolument +pas utilisé les capacités de bash en lui même, et n'avons fait que le +renvoyer a des programmes externes (sauf read, il est vrai). Voyons +maintenant la syntaxe de bash quand il s'agit d'utiliser les structures +de contrôle:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    #!/bin/bash 
    +echo "welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?" 
    +read host_name 
    +if [ $host_name == $HOSTNAME ] ## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. 
    +then echo "you told the truth!" 
    +fi ## le fi est la commande fermant le if, tout comme le EndIf en basic. C'est un peu vieillot, mais important en bash. 
    +if [ $host_name != $HOSTNAME ] ## l'opérateur != est l'inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. 
    +then echo "you lied!" 
    +fi 
    +exit
    +
    +
    + +

    Voila un petit programme permettant d'apprendre la syntaxe du if en +bash. comme vous pouvez le voir, le language est plutôt lite, et la +structure if n'est pas très difficile a prendre en main.

    +

    Passons maintenant au while:

    +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    #!/bin/bash
    +echo "what is your name?"
    +read name
    +while [ 1 < 10 ]    ## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.
    +do echo "i love" $name
    +done
    +exit
    +
    +
    + +

    Ce petit programme permet d'observer les bases de while (qui est la +boucle de base en bash).

    +

    Le troisième opérateur de bash est case. Voyons:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    #!/bin/bash
    +echo "please enter a number between one and five"
    +read number
    +case $number in 
    +1)
    +echo "the choosen number was one"
    +;;
    +2)
    +echo "the choosen number was two"
    +;;
    +3)
    +echo "the choosen number was three"
    +;;
    +4)
    +echo "the choosen number was four"
    +;;
    +5)
    +echo "the choosen number was five"
    +;;
    +*)
    +echo "this number is not correct"
    +;; 
    +esac
    +exit
    +
    +
    + +

    case est un opérateur plus complexe a utiliser a bon escient, et sert a +faire des ifs multiples sans avoir a taper des dizaines de lignes de +code.
    +(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre +que le code vérifie chacune des conditions : le 1) est validé si la +valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc.. +le *) désigne toutes les valeurs, et est donc validé si aucune autre +valeur n'a précédemment acceptée.

    +

    Quelques notions manquent ici:
    +- les nombres aléatoires sont générés par un appel a la variable +\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a +16 bits donc). il est possible de faire des invocations a des nombres +aléatoires plus grands, mais les méthodes permettant de faire cela sont +plus complexes, et je ne les aborderai donc pas ici.
    +- comme vous avez pu le constater, les variables sont désignées en tant +que telles par l'utilisation d'un symbole \$ au début de leur nom. +Ainsi, echo number renverra "number", tandis que echo \$number renverra +le résultat de la variable \$number.
    +être utilisées dans un programme bash.
    +- comme vous avez pu le constater, les commandes doivent tenir en +théorie en une ligne. Cependant, le caractère \ permet de retourner a +la ligne en faisant considérer a bash qu'il s'agit de la même ligne.

    +

    Globalement, il faut admettre que bash n'a pas vocation a être un +langage de programmation extrêmement développé. Sans framework +graphique, avec peu de manières d'utiliser de grandes variables, ou +encore une gestion de la mémoire risible, bash n'a rien d'un langage de +développement professionnel.
    +Cependant, le simple fait qu'il soit considéré comme un langage de +programmation a part entière font de lui un langage de script d'une +puissance incontestable, et sa simplicité et sa grande popularité font +de lui un langage de choix pour apprendre la programmation simplement et +sans trop se prendre la tête.

    +

    J'espère que cet article aura été utile a certain-e-s, et je vous +souhaite bonne chance dans votre découverte de la programmation (n'allez +pas voir ceux qui font de l'orienté objet, c'est des méchants :3)

    +
    +
    +
    +

    Pages

    +
  • A propos
  • +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/category/teaching/index.html b/output/category/teaching/index.html new file mode 100644 index 0000000..ca69a7d --- /dev/null +++ b/output/category/teaching/index.html @@ -0,0 +1,646 @@ + + + + + Wxcafé - Teaching + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +

    SSL - STARTTLS

    +
    + Date + + Sat 16 May 2015 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Le chiffrement SSL pour les services en ligne est un problème relativement +récent, par rapport a l’histoire d’Internet. Sa mise en place pose +problème : les protocoles existants ne s’accommodent qu’assez mal de recevoir +soudainement un flot de données chiffrées, mais développer de nouveaux +protocoles est complexe et n’apporte rien d’intéressant. Pour palier a ce +problème, deux solutions sont apparues.

    +

    Le première consiste à faire écouter les services sur un +autre port, dans un tunnel SSL. De cette façon, le service existant écoute +normalement, mais il ne répond pas directement aux requêtes. A la place, un +tunnel SSL est mis en place, et les requêtes et les réponses passent dans le +tunnel (ou elles apparaissent donc chiffrées pour l’extérieur). Cela permet de +proposer un service chiffré en modifiant de façon minimale le programme, au prix +de devoir aussi changer tous les clients, et de devoir les orienter sur un autre +port.

    +

    L’autre approche qui a été utilisée est une approche d’upgrade. La +communication commence en mode non chiffré, puis le client demande l’upgrade de +la connexion vers le mode chiffré s’il le supporte, les deux machines +machines font un handshake SSL et la communication continue a travers le +tunnel SSL. Le service peut continuer a écouter sur son port habituel, et seuls +les clients capables de passer en SSL le feront, ce qui permet de faire la “mise +a jour” en douceur.

    +

    Il est souvent demandé quelle est la meilleure méthode pour mettre en place un +service – laisser un port pour le SSL et un pour le trafic non chiffré, ou bien +un seul, avec STARTTLS, qui upgrade les connexions si nécessaire.
    +La réponse est que STARTTLS est plus interessant, pour plusieurs raisons. Tout +d’abord, il permet de n’utiliser qu’un seul port : ça permet de simplifier la +configuration du firewall. En plus de ça, il permet aux clients “anciens” (ceux +qui ne supportent pas SSL, donc ceux qui devraient être changés) de toujours se +connecter, même si cela signifie que leurs informations seront transmises en +clair. Surtout, il permet d’éviter aux utilisateurs d’avoir a configurer leurs +clients. Si le client supporte le chiffrement, il l’activera de lui même s’il +voit qu’il est disponible.
    +Bref, mettez en place du STARTTLS, et pas du SSL. C’est mieux pour la sécurité +de tout le monde.

    +
    +
    +
    +

    Les systèmes de fichiers

    +
    + Date + + Tue 25 September 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Un système de fichiers. Vous en avez surement déjà entendu parlé si vous +avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous +connaissez surement NTFS, EXT4, ou encore FAT32.

    +

    Ces différents noms désignent en effet des systèmes de fichiers. Mais +qu'est-ce qu'un système de fichiers?

    +

    Pour comprendre cela, il faut déjà savoir ce qu'est exactement un +fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la +plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio +(kibioctet), en fonction du système de fichier utilisé.), qui est +donc composé de bits, interprétés différemment en fonction du type de +fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il +n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, +ou il commence ni où il s'arrête (je schématise un peu, mais c'est +l'idée).

    +

    Ainsi, le système de fichier donne un cadre et un standard à +l'arborescence des fichiers. Par exemple, le système de fichier ext4 +utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de +disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio +et mesurer la taille des fichiers en blocs de cette façon. Les systèmes +de fichiers nécessitent l'inclusion de drivers dans le noyau pour +pouvoir être pris en compte.

    +

    Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, +reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu +près tout type de partition récente.

    +

    Il convient de bien faire la différence entre le système de fichier et +l'arborescence des fichiers. Si l'arborescence des fichiers est en fait +une entité virtuelle englobant la racine / et tous les fichiers et +dossiers contenus dedans, le système de fichier permet a votre système +GNU/Linux de distinguer les différents fichiers composants cette +arborescence.

    +

    Détaillons maintenant les types de fichiers les plus répandus:

    +
      +
    • +

      FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, + soit la définition d'un système de fichier), remplissent leur rôle le + plus simplement possible. Ne permettant (historiquement) que des noms de + 8 caractères (plus extension de trois caractères), ni chiffrement, ni + système de distinction d'utilisateurs (DOS étant un système + mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, + utlisants respectivement des blocs de 16 et 32 Kio.

      +
    • +
    • +

      NTFS :. Le NTFS (pour New Technology File System, rapport a Windows + NT) est un système de fichier qui est apparu avec Windows XP, et qui + était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a + FAT différentes capacités dont le chiffrement, les liens symboliques, la + compression et les quotas pour les volumes, permettant de limiter la + taille maximum occupée dans une partition.

      +
    • +
    • +

      ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. + Ne différant pas énormément de NTFS, je le mentionne principalement + parce qu'il est prévu qu'il soit le défaut pour Windows 8. + Il apporte principalement la redondance, c'est a dire que chaque + fichier possède une somme de contrôle en 64 bits stockée dans un fichier + séparé pour éviter les corruption de disque.

      +
    • +
    • +

      Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers + les plus utilisés sous linux pour le grand public. (Je traiterai ici + d'ext4, puisque c'est le plus récent.) Il dispose de toutes les + fonctions que l'on peut attendre d'un système de fichiers moderne, ni + plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, + acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite + "par extent", ce qui signifie que la création d'un fichier réserve + automatiquement les zones contiguës de façon a réduire la fragmentation.

      +
    • +
    • +

      ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) + programmeur Hans Reiser, est a retenir pour avoir été le premier système + de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des + 4 milliards. Le but de ce système est de créer un système polyvalent, a + la fois système de fichiers et base de donnée (de part sa grande + capacité en terme de nombre de fichiers et de l'utilisation d'un + journal.)

      +
    • +
    • +

      Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi + l'allocation par extent, mais possède de plus un système de + sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers + montées en même temps (système pratique et utile pour faire des + snapshots de systèmes.). Il permet aussi de redimensionner a chaud la + taille des partitions, en les agrandissant ou en les rétrécissant, est + compatible avec LVM, a un système de checking intégré (btrfsck), et + utilise un algorithme de compression appelé LZ4, qui accélère les accès + aux fichiers compressés d'environ 30% par rapport a LZO, le système + utilisé dans ext4.

      +
    • +
    • +

      HFS+ : le système de fichier présent sur tous les macs a des capacités + relativement standards, et ressemble énormément a l'ext3. Il supporte + cependant les liens directs vers les dossiers, fonction rare sur les + systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau + dans les années a venir

      +
    • +
    • +

      ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux + et *BSD, est, tel Btrfs, a la fois un système de fichier et un + remplaçant/compatible avec LVM, C'est un système de fichiers conçu + principalement pour les serveurs, et il intègre ainsi un système de + redondance des données pour éviter les corruptions, un mode RAID-Z + (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, + etc...

      +
    • +
    +

    Comme on a pu le voir, les systèmes de fichiers disponibles sont +légions. Cependant, le plus adapté a Linux et a une utilisation grand +public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier +n'est pas aujourd'hui proposé par défaut sur les distributions les plus +utilisées, au profit de l'ext4, qui commence a accuser son âge...

    +

    Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au +fonctionnement du système, sont en fait de première importance, et ce +choix ne devrait pas être laissé au hasard, et être mis a jour +régulièrement (pour éviter les failles de sécurité...)

    +

    Bon courage, et bon choix pour votre prochain système.

    +
    +
    +
    +

    Les différentes couches d'un système d'exploitation

    +
    + Date + + Thu 06 September 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques +années (plus ou moins, parce que j'ai toujours un Windows en dual boot, +principalement pour les jeux (possiblement plus pour longtemps, avec +l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou +moins bien mon système. Or il y a plusieurs choses a savoir sur les +systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est +le système de couches.

    +

    Un système d'exploitation (de type UNIX, \<troll>enfin un vrai système quoi. +\</troll>) incorpore plusieurs systèmes de couches.

    +

    Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique, +c'est a dire que tous les composants sont intégrés au kernel. Ce qui +signifie que rien ne peut être ajouté au noyau sans recompiler celui ci. +Or, quand on sait que le noyau comprend entre autres les drivers du +matériel et des systèmes de fichier, cela peut poser des problèmes quand +a la taille du kernel et a la licence libre de ce dernier.

    +

    Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui +signifie que des modules peuvent être chargé a tout moment en cours +d’exécution, ce qui permet l'utilisation de nouveaux systèmes de +fichiers a chaud, ou l'insertion de matériel et l'installation de +drivers sans interrompre l’exécution du système (Windows utilise un +système de fausse installation de drivers pour le matériel externe, et +un système de pré-installation des drivers pour les périphériques dits +"plug and play")

    +

    Après le noyau intervient le système. Or, au tous premiers instants du +boot, les systèmes GNU/Linux utilisent un système permettant de limiter +l'utilisation de ressources systèmes si elles ne sont pas nécessaires, +et incorpore ainsi un système dit de "runlevels"

    +

    Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce +runlevel permet de tester le bon démarrage du système sans avoir a +effectuer de manipulation pour le ré-éteindre

    +

    Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté +étant donné que ce runlevel donne accès a un système en étant +automatiquement loggé en tant que root, avec tous les autres +utilisateurs désactivés, de même que tous les systèmes de réseaux

    +

    Le runlevel 2 est appelé mode multi user, et vous mets en face d'un +système classique. en ligne de commande, mais avec tous les systèmes de +réseau désactivés.

    +

    Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux +activés.

    +

    Le runlevel 4 n'est pas officiellement défini, et est censé être +activable en fonction des besoins de l'utilisateur. Sur la plupart des +distributions grand public, ce runlevel est lié au...

    +

    Runlevel 5! Multi-user, networking, with working GUI! c'est le système +tel que vous le connaissez, avec l'interface graphique et le système de +login graphique.

    +

    Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine +quand il devient le runlevel courant.

    +

    (Il est a noter que Debian, et donc toutes les distribs qui en sont +dérivées, ne font pas de distinction entre les differents runlevels du 2 +au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login +et une interface graphique, et un mode réseau fonctionnel, bref avec des +fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)

    +

    Il est possible de changer de runlevel grâce a la commande runlevel +(oui, c'est évident...)

    +

    Les systèmes Linux utilisent aussi un système dit de SandBox , qui en +informatique est un système permettant d'isoler les processus les uns +des autres. Ainsi, la pile réseau, qui est le système auquel les +différents processus envoient les différents paquets qui doivent sortir +de la machine , et qui redistribue ces paquets, est isolée du reste du +système, en cela qu'aucun des autres processus ne peuvent modifier cette +pile hors du runlevel 1 ou 2.

    +

    De la même façon, le navigateur chrom/ium fait fonctionner tous les +onglets, ainsi que toutes les extensions, dans des processus différents. +Certaines distributions linux implémentent un système de cette sorte +pour toutes les applications, ou seulement pour certaines. ainsi Chakra +Linux a un système d'installation d'applications dans des disques +virtuels, ce qui permet une sécurité totale du processus.

    +

    Voila, j'espère vous en avoir appris un peu sur le fonctionnement des +différentes couches de linux, et j'espère que cet article vous poussera +a tester un peu votre système et a vous amuser avec les différents +runlevels

    +
    +
    +
    +

    La programmation expliquée simplement

    +
    + Date + + Mon 27 August 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Salut!
    +Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire +récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé +pas mal de temps assez occupé.

    +

    Enfin, après un certain temps a farfouiller au millieu des connecteurs +SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques +durs, je suis de retour pour un court article.
    +Du coup, je m'étais dit que j'allais reprendre sur le thème de +l'informatique expliquée au grand public, en tentant d'aller un peu plus +loin que la dernière fois sur le thème de la programmation
    +Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur. +Si a peu près tout le monde sait que "les ordinateurs, ils ne +comprennent que les 1 et les 0!", peu de gens savent comment cela +fonctionne en détail.

    +

    Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà +des notions de base en informatique. Ainsi, vous savez surement que les +ordinateurs fonctionnent avec des programmes, qui sont composés de +code.
    +Ainsi, il faut comprendre que le code (source) est "compilé" en un +fichier "binaire". Un fichier binaire est un fichier comprenant les +instructions telles qu’exécutées par le processeur, et donc absolument +illisible pour un humain.

    +

    La compilation est le processus qui transforme le code source en +binaire executable. Les binaires ont, sous Windows, l'extension .exe, +tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension +particulière.
    +Ceci étant dit, il faut comprendre que certains langages sont plus +proches que d'autres du langage processeur, les langages les plus +proches sont dits de "bas niveau". Les langages les plus éloignés sont +donc dits de haut niveau.

    +

    Par exemple, l'assembleur est l'un des languages de plus bas niveau, +tandis que python par exemple est un langage de plus haut niveau. Les +langages de haut niveau sont souvent bien plus simples a comprendre et a +apprendre que les langages de bas niveau

    +

    Ainsi, en C, un langage de niveau relativement bas, pour afficher +"hello world" sur l'écran, le code nécessaire est :

    +
    #include 
    +void main() {
    +printf("hello world");
    +return 0;
    +}
    +
    + + +

    le même programme en python s'écrit :

    +
    print "hello world"
    +
    + + +

    et n'a pas besoin d'être compilé , puisqu'il peut être intepreté +directement.

    +

    Python utilise en effet un système similaire a Java en ayant un +interpréteur dit "runtime" ou "temps réel", qui interprète le programme +sans le compiler. Java utilise un système légèrement différent, puisque +le code a besoin d'être compilé, mais est interpreté par un interpréteur +et non par le processeur.

    +

    Cette méthode permet le fameux "code once, run everywhere", ce qui +signifie que le même code est exécutable sur quasiment tous les systèmes +d'exploitation (en fait, tous ceux sur lesquels l’interpréteur est +disponible.)

    +

    Voila, je vous laisse sur le fonctionnement de Java et de Python, et je +vais me coucher.
    +A bientôt!

    +
    +
    +
    +

    GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère

    +
    + Date + + Wed 22 August 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    GNU/Linux est un vaste et extraordinaire territoire technologique, mais +je ne vais pas m'attarder ici sur les aspects profondément techniques de +ce territoire pour faire plutôt une sorte d'introduction a ce qu'est +vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de +connaissances en informatique.

    +

    GNU/Linux, que j’abrégerai ici en Linux pour plus de simplicité, est un +Système d'Exploitation. Un système d'exploitation est, pour simplifier, +un ensemble d'outils informatiques qui vous permettent d'utiliser votre +ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation +de système d'exploitation (Operating System en anglais) est OS. Les 4 +principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et +Solaris. Les trois derniers sont issus d'un autre système, plus ancien, +nommé UNIX.

    +

    De ce fait, on pourrait penser que Linux remplace complètement Windows +une fois installé, et comprend une interface graphique, et toutes sortes +d'utilitaires permettant a l'utilisateur d'utiliser le système (sous +Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer. +Pour l'interface graphique, pensez a... Pensez que votre système affiche +autre chose que des lignes de commande.) Or non, une fois installé, +Linux en lui même ne vous afficherait aucune interface graphique, et +s'il est effectivement livré avec des utilitaires, ils ne sont que des +programmes en ligne de commande. Autant les utilisateurs avancés sauront +s'en servir, et pourront argumenter que c'est plus efficace ou plus +rapide, autant les utilisateurs basiques préfèrent une interface +graphique. Alors comment en obtenir une?

    +

    Ici, il convient de faire une précision importante. Si il n'existe +qu'une seule version de Windows, ou de Mac OS, il existe en fait +plusieurs centaines de "versions" différentes de Linux. Appelées +distributions, ces dernière sont développées par des groupes +complètement séparés, et se basent sur le fait que Linux soit +entièrement placé sous licence libre (ce qui leur permet de l'utiliser a +leur guise, a condition que leur travail soit lui aussi placé sous +licence libre). De ce fait, de nombreuses distributions existent et se +développent en parallèle. On peut ainsi citer Debian, qui est l'une +des distributions les plus importantes, ou encore Ubuntu, qui est +l'une des plus connues et des plus simples a utiliser.

    +

    Ainsi, ces distributions intègrent une interface graphique. Cependant, +grâce a la liberté dont bénéficient les développeurs sous Linux, il +existe de nombreuses interfaces graphiques différentes : Unity, la +nouvelle interface d'Ubuntu; GNOME , une interface qui vise a la +simplicité; ou encore KDE, une interface utilisateur ressemblant a +Windows 7.

    +

    Ainsi, le choix astronomique de distributions Linux a bien un sens : +chacune d'entre elle intègre des outils différents. Par exemple, Debian +intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend +particulièrement stable. Ubuntu intègre Unity, ce qui en fait une +distribution particulièrement intuitive. Linux Mint intègre Cinnamon, +qui est une version dérivée de GNOME 3, ce qui permet encore une autre +expérience. Et Arch Linux n'intègre pas d'interface graphique du tout, +ce qui permet a l'utilisateur de choisir entre les multiples interfaces +existantes.

    +

    Ce qu'il est important de retenir de cela, c'est que Linux est un OS +complètement libre, ce qui signifie que n'importe qui peut modifier et +utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi, +Linux est un OS qui est véritablement créé par des passionnés, pour tous +et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué +a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus. +Cependant, Linux donne la possibilité a l'utilisateur de le rendre +affreusement complexe, mais aussi de le rendre adapté a ses besoins, +quels que soient ceux ci. Et c'est la que réside l'incroyable puissance +de ce Système d'Exploitation. Il est extraordinairement adaptable.

    +

    N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas +technophiles. Ils pourraient adorer, et peut être même le devenir :)

    +

    A bientôt!

    +
    +
    +
    +

    Pages

    +
  • A propos
  • +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/category/tutorial/index.html b/output/category/tutorial/index.html new file mode 100644 index 0000000..20bb4dd --- /dev/null +++ b/output/category/tutorial/index.html @@ -0,0 +1,582 @@ + + + + + Wxcafé - Tutorial + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +

    OpenSMTPd comme serveur mail sous debian

    +
    + Date + + Fri 07 November 2014 + +
    + By + Wxcafé +
    + Category + Tutorial +
    + + + + +
    +

    J'avais dit il y a un certain temps que j'allais écrire un tutoriel expliquant +comment gérer ses mails soi-même. Il se trouve que j'ai récemment décidé de +changer le serveur qui héberge (entre autres) ce blog, et que ce dernier héberge +aussi mes emails. J'ai donc totalement changé d'infrastructure quand a la +gestion de mon système de mails.

    +

    Ainsi, j'ai décidé de passer de Postfix a OpenSMTPd, changement que je voulais +effectuer depuis un certain temps. OpenSMTPd est un +projet originaire d'OpenBSD qui a pour but de fournir un +serveur SMTP fiable, simple, rapide, et surtout sécurisé (les même buts que ceux +qu'a le projet OpenBSD, globalement).

    +

    Pour rappel, le système d'emails fonctionne d'une façon très simple : votre MUA +(Mail User Agent, ou client email) contacte le MTA (Mail Transport Agent, ou +serveur SMTP) de votre fournisseur email, qui contacte le MTA du fournisseur du +destinataire, qui lui même contacte le MDA (Mail Delivery Agent) qui délivre le +mail au destinataire.

    +

    Si vous avez bien suivi, vous pouvez voir que je n'ai pas parlé de récupération +ni de lecture des mails. C'est pour une raison simple, qui est que ces taches +sont remplies par d'autres services encore (IMAP/POP pour la récupération depuis +le serveur, des yeux pour la lecture).

    +

    Or ce qui nous intéresse ici, ce n'est pas simplement d'envoyer et de recevoir +des emails mais bien aussi de pouvoir les récupérer et les lire, et c'est pour +ça que ce tutoriel ne parlera pas que d'OpenSMTPd mais aussi de +Dovecot qui fait office de serveur IMAP et +amavis/spamassassin +pour filtrer les mails entrants et sortants. +Le schéma suivant explique la façon dont les mails sont gérés sur le système

    +
                ╭────────────────╮                    ╭──────────╮
    +            │╭──────────────>│────> to filter ───>│─╮        
    +  mail in   ││                                     amavis 
    +───────────>│╯ OpenSMTPd  ╭──│<─── from filter<───│<        
    +                                               ╰──────────╯
    +  mail out                                     ╭──────────╮
    +<───────────│<────────────┴─>│─────> to MDA ─────>│─────────>│──> to user's
    +                                                 dovecot       mailbox
    +            ╰────────────────╯                    ╰──────────╯
    +
    + + +

    Normalement, ceci devrait être a peu près clair. +Pour expliquer vite fait, les emails entrants (venant des utilisateurs mais +aussi d'autres correspondants) sont transmis a OpenSMTPd, qui envoie tout a +amavis, qui vérifie a la fois les spams et les malwares pour les mails +venants de l'exterieur, et qui signe avec DKIM pour les mails venants de +nos utilisateurs, puis qui rentransmet les mails filtrés/signés a OpenSMTPd, +qui a ce moment-ci trie en fonction de la destination : les mails gérés +par le domaine vont via dovecot dans les boites mail des destinataires +locaux, les mails exterieurs vont directement vers le MTA du serveur +distant.

    +

    Voyons comment mettre cela en place. Tout d'abord, il faut décider de la façon +dont les différents services vont communiquer.

    +

    Déjà, amavis étant configuré par défaut pour écouter (en SMTP) sur le port +10024 et répondre sur le port 10025 quand il s'agit de filtrer et +écouter sur le port 10026 et répondre sur le port 10027 quand il s'agit de +signer, nous allons profiter de cette configuration et donc lui parler en SMTP +sur ces ports.

    +

    Quand a Dovecot, nous allons lui transmettre les emails en LMTP (Local Mail +Transfer Protocol), non pas sur un port mais via un socket (dans ce cas précis, +/var/run/dovecot/lmtp).

    +

    Ainsi, pour reprendre le schéma présenté plus haut :

    +
                ╭───────────────╮                    ╭───────────╮
    +            │╭─────────────>│──> SMTP (10026) ──>│─╮         
    +  SMTP in   ││                                    amavis  
    +────────> 25│╯ OpenSMTPd ╭──│<── SMTP (10027) <──│< (sign)  
    +                                              ╰───────────╯
    +  SMTP out                
    +25 <────────│<───────────╯  
    +            ╰───────────────╯
    +
    + + +

    Pour les mails sortants; et

    +
                ╭───────────────╮                    ╭────────────╮
    +            │╭─────────────>│──> SMTP (10024) ──>│─╮          
    +  SMTP in   ││                                    amavis   
    +────────> 25│╯ OpenSMTPd ╭──│<── SMTP (10025) <──│<(filter)  
    +                                              ╰────────────╯
    +                                              ╭────────────╮
    +                        ╰─>│──> LMTP (socket) >│───────────>│──> to user's
    +                                                 dovecot        mailbox
    +            ╰───────────────╯                    ╰────────────╯
    +
    + + +

    Pour les mails entrants.

    +

    Maintenant que la théorie est claire, mettons en place tout cela. Je me baserai +ici sur le fait que vous utilisiez une plateforme Debian ou OpenBSD. Pour +d'autres plateformes, la configuration devrait être sensiblement la même

    +

    (Vous aurez besoin de certificats SSL pour ce guide, même self-signés. +Si vous ne savez pas comment en créer, vous pouvez aller voir ce +post)

    +

    Tout d'abord, commençons par installer les programmes nécessaires :

    +
    sudo apt-get install opensmtpd dovecot dovecot-pigeonhole amavisd-new dovecot-managesieved
    +sudo pkg_add dovecot dovecot-pigeonhole amavisd-new
    +
    + + +

    Continuons en configurant OpenSMTPd tel que nous avons vu plus haut :

    +

    /etc/smtpd.conf

    +
    # This is the smtpd server system-wide configuration file.
    +# See smtpd.conf(5) for more information.
    +
    +## Certs
    +pki exem.pl certificate "/etc/certs/exem.pl.crt"
    +pki exem.pl key         "/etc/certs/exem.pl.key"
    +
    +## Ports to listen on, and how to listen on them
    +listen on eth0 port 25 tls pki exem.pl hostname exem.pl auth-optional
    +listen on eth0 port 465 tls-require pki exem.pl hostname exem.pl auth mask-source
    +listen on eth0 port 587 tls-require pki exem.pl hostname exem.pl auth mask-source
    +
    +## Aliases
    +table aliases file:/etc/aliases
    +
    +# coming from amavisd, checked for spam/malware
    +listen on lo port 10025 tag Filtered
    +# coming from amavisd, signed with DKIM
    +listen on lo port 10027 tag Signed
    +
    +## Receiving
    +# if the (incoming) mail has been through amavisd, then we can deliver it
    +accept tagged Filtered for any alias <aliases> deliver to lmtp "/var/run/dovecot/lmtp"
    +# we directly tranfer incoming mail to amavisd to be checked 
    +accept from any for domain "exem.pl" relay via "smtp://localhost:10024"
    +# we have to put these lines in this order to avoid infinite loops
    +
    +## Sending
    +# if the (outgoint) mail has been through amavisd, then we can deliver it
    +accept tagged Signed for any relay
    +# we tranfer the outgoing mail to amavisd to be signed
    +accept for any relay via "smtp://localhost:10026"
    +# same, we have to put these lines in this order or infinite loops...
    +
    + + +

    Expliquons un peu ce fichier de configuration :

    +
      +
    • Tout d'abord, le paragraphe nommé "Certs" contient les déclaration + d'emplacement des certificats SSL.
    • +
    • Ensuite, le paragraphe contenant les ports externes sur lesquels nous écoutons : + port 25 avec TLS optionel et ports 465 et 587 avec TLS obligatoire
    • +
    • Les alias sont définis juste après
    • +
    • Le paragraphe suivant contient les ports locaux sur lesquels nous écoutons : + 10025 (port de sortie du filtre de amavis) dont on taggue les mails sortants + comme "Filtered" et 10027 (port de sortie des mails signés par amavis) dont on + taggue les mails sortants comme "Signed"
    • +
    • Nous avons ensuite le paragraphe qui traite les mails rentrants. Si le mail + traité est taggué comme Filtered, alors il a été vérifié par amavis, et on + peut donc le transmettre au destinataire. Sinon, c'est qu'il n'a pas encore + été vérifié par amavis, donc on lui transmet pour analyse (sur le port 10024 + donc). Il est important de mettre les déclarations dans ce sens, car la + première règle qui matche l'état du paquet est appliquée. Ici, la deuxième + ligne matchant tous les mails arrivant et la première seulement ceux filtrés, + inverser leur sens voudrait dire que les mails seraient toujours renvoyés a + amavis
    • +
    • Enfin, le dernier paragraphe traite les mails sortants. De la même façon que + pour le paragraphe précédent, si le mail sortant est déjà taggué comme Signed + on le transmet au MTA du destinataire, sinon il n'a pas encore été signé par + DKIM par amavis et on le transmet donc a amavis pour qu'il le signe. Le + problème de l'ordre des lignes se pose encore, pour la même raison qu'au + dessus.
    • +
    +

    Nous allons maintenant configurer dovecot. Comme nous l'avons vu, dovecot doit +écouter en LMTP via la socket /var/run/dovecot/lmtp et transmettre les +emails a la boite email de l'utilisateur. Il serait aussi interessant +qu'il nous permette de récuperer les mails. Pour cette configuration, on ne +mettra en place que du IMAPS. Cependant, si vous voulez mettre en place du +POP3[s], différents guides sont trouvables facilement sur internet.

    +

    /etc/dovecot/dovecot.conf

    +
    ## Dovecot configuration file
    +
    +# basic config
    +info_log_path = /var/log/dovecot-info.log
    +log_path = /var/log/dovecot.log
    +log_timestamp = "%Y-%m-%d %H:%M:%S "
    +mail_location = maildir:%h/mail
    +
    +# authentication
    +passdb {
    +    driver = pam
    +}
    +userdb {
    +    driver = passwd
    +}
    +
    +# the protocols we use
    +protocols = imap lmtp sieve
    +
    +# ssl config
    +ssl_cert = </etc/certs/exem.pl.cert
    +ssl_key = </etc/certs/exem.pl.key
    +ssl_cipher_list = HIGH+kEDH:HIGH+kEECDH:HIGH:!PSK:!SRP:!3DES:!aNULL
    +ssl = yes
    +
    +## configuring services 
    +# disables imap login without SSL (yes dovecot is dumb that way)
    +service imap-login {
    +    inet_listener imap {
    +        port=0 
    +    }
    +}
    +
    +service lmtp {
    +    unix_listener lmtp {
    +        mode = 0666
    +    }
    +}
    +
    +## configuring protocols
    +# the dovecot lda, we set it to use sieve
    +protocol lda {
    +    mail_plugins = $mail_plugins sieve
    +}
    +
    +protocol lmtp {
    +    postmaster_address =  whoever@exem.pl
    +    mail_plugins = $mail_plugins sieve
    +}
    +
    +plugin {
    +    sieve = ~/.dovecot.sieve
    +    sieve_dir = ~/sieve
    +}
    +
    + + +

    ATTENTION: Sous OpenBSD, remplacez

    +
    passdb {
    +    driver = pam
    +}
    +
    + + +

    par

    +
    passdb {
    +    driver = bsdauth
    +}
    +
    + + +

    pour identifier les utilisateurs système

    +

    Ici aussi, voyons comment ce fichier est structuré :

    +
      +
    • Tout d'abord, les configurations de base : ou iront les logs, comment formater + leur datation, et l'endroit ou seront stockés les mails des utilisateurs.
    • +
    • Nous configurons ensuite la gestion de l'authentification des utilisateurs. + Ici nous identifions les utilisateurs avec le fichier /etc/passwd et leurs + mots de passe avec PAM (ou BSDAuth)
    • +
    • Nous configurons ensuite les protocoles que nous servons. Ici, nous voulons de + l'IMAPS, du LMTP local et Sieve (qui sert pour trier les messages).
    • +
    • Nous configurons le SSL
    • +
    • Le section suivante contient la configuration des services. Nous avons en + premier lieu le service IMAP, dont la configuration sert uniquement a + désactiver IMAP. En effet, dovecot ne permet d'activer IMAPS qu'en activant + IMAP avec. Comme nous ne voulons pas d'IMAP sans SSL, nous le désactivons. + La configuration de lmtp sert a attribuer des permissions plus correctes au + fifo qu'il utilise
    • +
    • Nous configurons maintenant les protocoles, pour faire fonctionner Sieve
    • +
    • enfin, nous configurons le plugin sieve en lui indiquant quel fichier et + quel dossier utiliser pour sa configuration.
    • +
    +

    Enfin, il nous reste a configurer amavis. Comme expliqué, amavis va nous servir +a deux choses : signer les emails sortants, et filtrer les emails entrants. Il +doit donc écouter sur les port 10026 pour les signatures et 10024 pour le +filtrage, et répondre respectivement sur les ports 10027 et 10025 (le tout, en +SMTP. Comme toutes les transactions se font sur le loopback, il n'y a aucun +risque a utiliser des protocoles non chiffrés. +Pour OpenBSD, pensez a copier la configuration par défaut depuis +/usr/local/share/examples/amavisd-new/amavisd.conf et ajoutez les +modifications nécessaires a la fin du fichier.

    +

    /etc/amavis/conf.d/99-local.conf (debian) +/etc/amavis.conf (OpenBSD)

    +
    use strict;
    +
    +$enable_dkim_verification = 1;
    +$enable_dkim_signing = 1;
    +dkim_key("exem.pl", "main", "/etc/certs/dkim.key" );
    +
    +@dkim_signature_options_bysender_maps = (
    +    { '.' =>
    +        { ttl => 21*24*3600, c => 'relaxed/simple' }
    +    }
    +);
    +
    +$inet_socket_port = [10024, 10026];
    +$policy_bank{'MYNETS'} = {
    +        originating => 1,
    +        os_fingerprint_method => undef,
    +};
    +
    +$interface_policy{'10026'} = 'ORIGINATING';
    +
    +$policy_bank{'ORIGINATING'} = {
    +        originating => 1,
    +        allow_disclaimers => 1,
    +        virus_admin_maps => ["root\@$mydomain"],
    +        spam_admin_maps => ["root\@$mydomain"],
    +        warnbadhsender => 1,
    +        forward_method => 'smtp:localhost:10027',
    +        smtpd_discard_ehlo_keywords => ['8BITMIME'],
    +        bypass_banned_checks_maps => [1],
    +        terminate_dsn_on_notify_success => 0,
    +};
    +
    +#------------ Do not modify anything below this line -------------
    +1;  # ensure a defined return
    +
    + + +

    A nouveau, expliquons ce fichier : +- le premier paragraphe définit que nous voulons qu'amavis signe les emails + sortants, vérifie la signature DKIM des emails rentrants, et l'endroit ou se + trouve la clé privée servant a signer les emails. +- le second définit les options DKIM que nous souhaitons utiliser comme défaut. + Je vous invite a consulter la RFC 4871 +- nous définissons ensuite les ports sur lesquels nous allons écouter, puis les + paramètres que nous utiliserons pour les emails venant de nos utilisateurs : + ils seront traités comme "originating" et nous ne vérifierons pas l'OS duquel + ils viennent. +- nous savons que les emails venants du port 10026 sont sortants, nous les + traitons donc comme tel +- le paragraphe suivant décrit le traitement que nous faisons subir aux emails + sortants : tout d'abord, nous réaffirmons qu'ils viennent bien de notre + serveur. Nous autorisons les disclaimers (voire encore une fois la RFC + 4871. Nous déclarons l'adresse a + prévenir en cas de spam/virus venants de notre système, et que nous voulons + être prévenus. Nous déclarons ou envoyer les mails une fois signés et filtrés, + puis qu'il est nécessaire de convertir les emails au format 7 bits avant de + les envoyer au MTA, que nous autorisons tous les types et noms de fichiers, et + les notifications de succès d'envoi. Et voila!

    +

    Vous avez pu remarquer qu'a aucun moment nous ne configurions ni la signature +des emails sortants ni le filtrage des emails entrants. Ces paramètres sont en +fait inclus par défaut dans amavis.

    +

    Il nous reste cependant quelques opérations a faire, encore. +Tout d'abord, il nous faut générer notre clé DKIM. Pour cela, il existe +différentes méthodes, j'ai personnellement utilisé opendkim (un +tutorial) +mais de nombreuses autre méthodes existent. +Il nous reste encore a configurer spamassassin :

    +
    #rewrite_header Subject *****SPAM*****
    +# report_safe 1
    +required_score 2.0
    +# use_bayes 1
    +# bayes_auto_learn 1
    +# bayes_ignore_header X-Bogosity
    +# bayes_ignore_header X-Spam-Flag
    +# bayes_ignore_header X-Spam-Status
    +ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
    +# shortcircuit USER_IN_WHITELIST       on
    +# shortcircuit USER_IN_DEF_WHITELIST   on
    +# shortcircuit USER_IN_ALL_SPAM_TO     on
    +# shortcircuit SUBJECT_IN_WHITELIST    on
    +# shortcircuit USER_IN_BLACKLIST       on
    +# shortcircuit USER_IN_BLACKLIST_TO    on
    +# shortcircuit SUBJECT_IN_BLACKLIST    on
    +shortcircuit ALL_TRUSTED             off
    +# shortcircuit BAYES_99                spam
    +# shortcircuit BAYES_00                ham
    +
    +endif # Mail::SpamAssassin::Plugin::Shortcircuit
    +
    + + +

    Comme vous pouvez le voir, les modifications se résument globalement a baisser +le required_score pour ma part.

    +

    Pour finir, activez les services nécessaires : opensmtpd, dovecot, amavisd, et +spamassassin, et tout devrait fonctionner parfaitement

    +

    Bon courage pour votre hosting de mail ensuite...

    +
    +
    +
    +

    Pages

    +
  • A propos
  • +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/feeds/feed.language.xml b/output/feeds/feed.language.xml new file mode 100644 index 0000000..a424677 --- /dev/null +++ b/output/feeds/feed.language.xml @@ -0,0 +1,30 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/2012-09-18T19:07:00+02:00Le Quenya - Épisode ø2012-09-18T19:07:00+02:00Wxcafetag:,2012-09-18:home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/<p>Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusqu’à il y +a peu...), le nom que donnait Tolkien au dialecte principal parlé par +les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des +Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte +avant de commencer cet article que l'une des œuvres les plus +impressionnantes de Tolkien, si ce n'est la plus grande, est +l'impressionnant travail linguistique passé sur les différentes langues +présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya, +la langue des nains, qui est appelé le khazalide, etc. </p> +<p>En effet, a contrario des "langues" développées dans d'autres œuvres littéraires +telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot +de français (ou d'anglais) a un mot de sa "langue", les langues de +l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des +racines logiques, des systèmes de grammaire et de conjugaison propres, +une logique inhérente dans la prononciation ou l'orthographe, et ainsi +de suite. </p> +<p>Un véritable rêve de linguiste donc, puisque ces langues sont +pratiquement entièrement documentées par Tolkien lui même (voir +l'appendice E du SdA, particulièrement instructif a ce sujet.)</p> +<p>J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster +ici des résumés des cours que je suis ( disponibles <a href="http://folk.uib.no/hnohf/qcourse.htm">ici</a> , une +traduction en français est disponible <a href="http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf">la</a> en pdf ), et des infos ici +toutes les deux semaines.</p> +<p>Si ce sujet vous intéresse, le compte twitter @Quenya101 poste +régulièrement des informations sur le sujet, et pour plus d'infos sur le +sujet, vous pouvez en trouver <a href="olk.uib.no/hnohf/quenya.htm">par ici</a>.</p> +<p>Et en tant que première leçon, vous pouvez apprendre que ce mot que vous +avez prononcé comme le Kenya tout le long de cet article se prononce en +fait [Kwenïa], ou bien Qwenya!</p> \ No newline at end of file diff --git a/output/feeds/feed.notes.xml b/output/feeds/feed.notes.xml new file mode 100644 index 0000000..1873405 --- /dev/null +++ b/output/feeds/feed.notes.xml @@ -0,0 +1,265 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/2014-05-30T08:25:00+02:00SSL ou la sécurité sur l'internet2014-05-30T08:25:00+02:00Wxcafetag:,2014-05-30:home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/<p><em>Disclaimer: Ce billet est écrit après le visionnage de la conférence de Moxie +Marlinspike suivante: <a href="https://www.youtube.com/watch?v=ibF36Yyeehw">More Tricks for Defeating SSL</a>, +présentée a la DefCon 17 (en 2011), et la lecture du billet suivant: +<a href="http://www.thoughtcrime.org/blog/lavabit-critique/">A Critique of Lavabit</a>, +ce qui peut avoir l'effet de rendre légèrement parano. Si vous considérez que +c'est le cas ici, veuillez ne pas tenir compte de ce billet (et vous pouvez dès +a présent dire coucou aux différentes personnes qui écoutent votre connection)</em></p> +<p>Si vous venez ici souvent (vous devriez), et que vous utilisez SSL pour vous +connecter a ce site (vous devriez, vraiment, dans ce cas), vous avez peut être +remarqué quelque chose récemment : il se trouve que le certificat qui permet de +desservir ce site a changé.</p> +<p>Cela fait suite aux évènements évoqués dans le <em>Disclaimer</em>, mais aussi a des +doigts sortis d'un endroit particulier du corps de l'admin/auteur de ce "blog", +qui a pris <strong>enfin</strong> les 5 minutes nécessaires a la compréhension superficielle +du fonctionnement de SSL, et les 10 nécessaires a la mise en place d'un système +fonctionnel utilisant cette compréhension récemment acquise.</p> +<p>Bref, le certificat a changé. Mais de quelle façon, vous demandez vous peut +être (ou pas, mais bon, je vais expliquer de toute façon). Et bien c'est très +simple : il existait auparavant un certificat pour <code>wxcafe.net</code>, un pour +<code>paste.wxcafe.net</code>, un pour <code>mail.wxcafe.net</code>, etc... Bref, un certificat +différent pour chaque sous-domaine.</p> +<p>Il s'avère que c'est a la fois très peu pratique a utiliser (les utilisateurs +doivent ajouter chaque certificat a leur navigateur séparément, chaque +changement de sous-domaine conduit a un message d'erreur, etc) et pas plus +sécurisé que d'avoir un seul certificat wildcard. J'ai donc généré un certificat +pour <code>*.wxcafe.net</code> hier, et il sera dorénavant utilisé pour tous les +sous-domaine de <code>wxcafe.net</code>; et un certificat pour <code>wxcafe.net</code>, qui ne matche +pas <code>*.wxcafe.net</code>, et qui sera donc utilisé... bah pour <code>wxcafe.net</code>.</p> +<p>Il serait préférable de faire des redirections automatiques des adresses http +vers les adresses https, cependant, étant donné que le certificat est +self-signed, il me semble préférable que l'arrivée sur le site ne commence pas +par une page firefox disant "Something's Wrong!", et ces redirections ne seront +donc pas mises en place.</p> +<p>De plus, après la lecture de l'article de blog sur Lavabit dont le lien est plus +haut, il semble intéressant (et assez important) de faire en sorte que le +serveur utilise en priorité (et si possible, uniquement) des ciphers supportant +PFS, soit EDH et EECDH (Ephemeral Diffie-Helmann et la version Elliptic Curves +de ce même algorithme). Cela permet de faire en sorte que toutes les +communications avec ce serveur soient future-proof, c'est a dire que, même si +quelqu'un récupérait la clé privée, elle ne serait pas utile pour déchiffrer les +communications passées.</p> +<p>Bon, maintenant que les explications basiques sont faites, voyons +l'implémentation : <br /> +Pour générer la clé, tout d'abord, il convient d'utiliser les commandes +suivantes: </p> +<div class="highlight"><pre><span class="n">sudo</span> <span class="n">openssl</span> <span class="n">genrsa</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="mi">4096</span> +<span class="cp"># nous utilisons ici une clé de 4096 bits, la taille est laissée a votre appréciation</span> +<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">new</span> <span class="o">-</span><span class="n">key</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">csr</span> +<span class="cp"># OpenSSL va ici vous demander de nombreuses informations, &quot;Common Name&quot; devant contenir le FQDN</span> +<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">X509</span> <span class="o">-</span><span class="n">req</span> <span class="o">-</span><span class="n">days</span> <span class="mi">1095</span> <span class="o">-</span><span class="n">in</span> <span class="n">example</span><span class="p">.</span><span class="n">csr</span> <span class="o">-</span><span class="n">signkey</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">crt</span> +<span class="cp"># enfin, nous générons la clé, d&#39;une durée de vie de 3 ans</span> +</pre></div> + + +<p>Bien entendu, si vous voulez utiliser une clé wildcard, il vous faut préciser +<code>*.example.com</code> comme common name. +Une fois la clé générée, il faut dire aux différents services de l'utiliser, et +de n'utiliser que des ciphers PFS. La méthode dépend donc du service. +Je vais lister ici les methodes pour quelques services que j'utilise :</p> +<h3>apache :</h3> +<div class="highlight"><pre><span class="cp"># /etc/apache2/mods_enabled/ssl.conf</span> +<span class="cp"># [...]</span> +<span class="n">SSLProtocol</span> <span class="n">all</span> <span class="o">-</span><span class="n">SSLv2</span> <span class="o">-</span><span class="n">SSLv3</span> +<span class="n">SSLHonorCipherOrder</span> <span class="n">on</span> +<span class="n">SSLCipherSuite</span> <span class="s">&quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \</span> +<span class="s"> EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \</span> +<span class="s"> EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;</span> +<span class="cp"># [...]</span> +<span class="cp"># /etc/apache2/sites-enabled/default-ssl</span> +<span class="cp"># [...]</span> +<span class="n">SSLEngine</span> <span class="n">on</span> +<span class="n">SSLCertificateFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span> +<span class="n">SSLCertificateKeyFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span> +<span class="cp"># [...]</span> +</pre></div> + + +<h3>nginx :</h3> +<div class="highlight"><pre><span class="cp"># /etc/nginx/nginx.conf </span> +<span class="cp"># [...]</span> +<span class="n">ssl_protocols</span> <span class="n">TLSv1</span> <span class="n">TLSv1</span><span class="mf">.1</span> <span class="n">TLSv1</span><span class="mf">.2</span><span class="p">;</span> +<span class="n">ssl_prefer_server_ciphers</span> <span class="n">on</span><span class="p">;</span> +<span class="n">ssl_ciphers</span> <span class="s">&quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \</span> +<span class="s"> EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \</span> +<span class="s"> EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;</span><span class="p">;</span> +<span class="cp"># [...]</span> +<span class="cp"># /etc/nginx/sites-enabled/default-ssl</span> +<span class="cp"># [...]</span> +<span class="n">ssl</span> <span class="n">on</span><span class="p">;</span> +<span class="n">ssl_certificate</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span> +<span class="n">ssl_certificate_key</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span> +<span class="cp"># [...]</span> +</pre></div> + + +<h3>prosody (jabber) :</h3> +<div class="highlight"><pre><span class="cp"># tout d&#39;abord, lancez la commande suivante :</span> +<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">dhparam</span> <span class="o">-</span><span class="n">out</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">prosody</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">dh</span><span class="o">-</span><span class="mf">2048.</span><span class="n">pem</span> <span class="mi">2048</span> +<span class="cp"># ensuite, pour chaque VirtualHost dans /etc/prosody/prosody.conf :</span> +<span class="n">ssl</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">dhparam</span> <span class="o">=</span> <span class="s">&quot;/etc/prosody/certs/dh-2048.pem&quot;</span><span class="p">;</span> + <span class="n">key</span> <span class="o">=</span> <span class="s">&quot;/etc/certs/example.com.key&quot;</span><span class="p">;</span> + <span class="n">certificate</span> <span class="o">=</span> <span class="s">&quot;/etc/certs/example.com.crt&quot;</span><span class="p">;</span> +<span class="p">}</span> +<span class="cp"># la cipher suite de prosody utilise par défaut EDH et EECDH</span> +</pre></div> + + +<h3>postfix (email) :</h3> +<div class="highlight"><pre><span class="cp"># /etc/postfix/main.cf</span> +<span class="cp"># [...]</span> +<span class="n">smtpd_tls_cert_file</span> <span class="o">=</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span> +<span class="n">smtpd_tls_key_file</span> <span class="o">=</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span> +<span class="n">tls_preempt_cipherlist</span> <span class="o">=</span> <span class="n">yes</span> +<span class="n">smtpd_tls_eecdh_grade</span> <span class="o">=</span> <span class="n">strong</span> +<span class="n">smtdp_tls_mandatory_ciphers</span> <span class="o">=</span> <span class="n">high</span> +<span class="n">smtpd_tls_mandatory_exclude_ciphers</span> <span class="o">=</span> <span class="n">aNULL</span><span class="p">,</span> <span class="n">eNULL</span><span class="p">,</span> <span class="n">MD5</span><span class="p">,</span> <span class="n">LOW</span><span class="p">,</span> <span class="mi">3</span><span class="n">DES</span><span class="p">,</span> <span class="n">EXP</span><span class="p">,</span> <span class="n">PSK</span><span class="p">,</span> <span class="n">SRP</span><span class="p">,</span> <span class="n">DSS</span> +<span class="n">smtpd_tls_security_level</span> <span class="o">=</span> <span class="n">encrypt</span> +<span class="n">smtpd_tls_mandatory_protocols</span> <span class="o">=</span> <span class="o">!</span><span class="n">SSLv2</span><span class="p">,</span> <span class="o">!</span><span class="n">SSLv3</span> +<span class="n">smtpd_use_tls</span> <span class="o">=</span> <span class="n">yes</span> +<span class="cp"># [...]</span> +</pre></div> + + +<h3>dovecot (imap) :</h3> +<div class="highlight"><pre><span class="cp"># /etc/dovecot/dovecot.conf </span> +<span class="cp"># [...]</span> +<span class="n">ssl_cert</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span> +<span class="n">ssl_key</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span> +<span class="n">ssl_cipher_list</span> <span class="o">=</span> <span class="n">HIGH</span><span class="o">+</span><span class="n">kEDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">+</span><span class="n">kEECDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">:!</span><span class="n">PSK</span><span class="o">:!</span><span class="n">SRP</span><span class="o">:!</span><span class="mi">3</span><span class="n">DES</span><span class="o">:!</span><span class="n">aNULL</span> +</pre></div> + + +<p>Voila. Pour d'autres protocoles/services, je vous invite a RTFM^W vous reporter +au manuel approprié.</p> +<p>Cela étant dit, je conseille a tout le monde d'aller voir la conférence dans le +disclaimer, et tant qu'a faire la conférence du même hacker <a href="https://www.youtube.com/watch?v=8N4sb-SEpcg">SSL and the future +of Authenticity</a> qui parle de son +implémentation d'une technologie "remplaçant" le système de CAs qui existe +actuellement.</p>Redesign du blog, etc2013-06-12T19:14:00+02:00wxcafetag:,2013-06-12:home/wxcafe/code/blog-source/output/posts/redesign-du-blog/<p>Comme vous avez pu le remarquer, ce blog a "un peu" changé récemment.</p> +<p>Du coup, expliquons. J'ai récemment monté <a href="http://serverporn.fr">serverporn</a>, et ai par la même +occasion découvert <a href="http://getpelican.com">pelican</a>. J'ai tout de suite accroché a ce générateur de +site statique en python, du fait de son efficacité, de sa facilité d'utilisation +et de sa grande customisation. En gros, pelican est un logiciel qui prend des +fichiers markdown ou reStructuredText, les passe a la moulinette d'un "thème" +constitué de templates pour les fichiers html et l'organisation du projet et +d'une partie "statique" contenant le css, et les autres fichiers nécessaires au +projet, et en fait des pages html. </p> +<p>Globalement, un thème est constitué ainsi :</p> +<div class="highlight"><pre><span class="n">th</span><span class="err">è</span><span class="n">me</span> +<span class="err">├──</span> <span class="k">static</span> +<span class="err">│</span> <span class="err">├─</span> <span class="n">css</span> +<span class="err">│</span> <span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">css</span> <span class="n">files</span><span class="p">]</span> +<span class="err">│</span> <span class="err">├─</span> <span class="n">img</span> +<span class="err">│</span> <span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">image</span> <span class="n">files</span><span class="p">]</span> +<span class="err">│</span> <span class="err">└─</span> <span class="n">js</span> +<span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">javascript</span> <span class="n">files</span><span class="p">]</span> +<span class="err">└──</span> <span class="n">template</span> + <span class="err">├─</span> <span class="n">base</span><span class="p">.</span><span class="n">html</span> + <span class="err">├─</span> <span class="n">index</span><span class="p">.</span><span class="n">html</span> + <span class="err">├─</span> <span class="n">page</span><span class="p">.</span><span class="n">html</span> + <span class="err">├─</span> <span class="p">[...]</span> + <span class="err">└─</span> <span class="n">article</span><span class="p">.</span><span class="n">html</span> +</pre></div> + + +<p>Sachant que les fichiers .html sont en réalité des fichiers suivant la syntaxe +django, et utilisent des variables particulières telles <code>{{ article.content }}</code>, +par exemple. La syntaxe complète est très bien documentée dans la <a href="http://docs.getpelican.com/en/3.2/themes.html#templates-and-variables">doc</a> de +pelican.</p> +<p>L'un des grands avantages de pelican est aussi la facilité qu'il offre quand a +la mise a jour du blog.<br /> +En effet, il offre un système de Makefiles permettant, grâce a de nombreuses +cibles de compilation, de régénérer le site entier, de ne générer que les +fichiers modifiés depuis la dernière génération, de générer uniquement les +fichiers n'existant pas la dernière fois, etc... +La gestion du projet en devient donc très simple, puisque après avoir écrit un +article, il suffit de faire un <code>make html</code> pour mettre a jour le blog.</p> +<p>De plus, le système de wordpress commençait a ne plus me convenir, du fait du +manque de customisation, du fait que ça soit du PHP (beurk), etc. La, avec +pelican, je contrôle bien plus ce qui est mis sur le serveur (puisque c'est moi +qui ait modifié les templates et le css), c'est lisible (puisque c'est du +python, par opposition au PHP...), et c'est plus "efficace". Le markdown est +très pratique, je peux utiliser mon éditeur de texte de prédilection pour faire +les articles, je n'ai pas besoin d'un accès continu au net, bref, c'est plus +efficace.</p> +<p>En ce qui concerne les points négatifs : </p> +<ul> +<li> +<p>Perte des commentaires: + Je vous propose de vous référer a l'article de Gordontesos <a href="http://gordon.re/hacktivisme/la-necessite-des-commentaires.html">ici</a> quand a + mon avis sur ce sujet.</p> +</li> +<li> +<p>Perte du bouton flattr: + Il va bientôt être remis, c'est juste un manque de temps de ma part, mais vu + que toutes les pages passent par les mêmes templates, c'est assez facile a + faire.</p> +</li> +<li> +<p>Perte du spam: + Pourquoi c'est dans les points négatifs, ca?</p> +</li> +<li> +<p>Temps d'adaptation et d'appréhension du système: + Oui, pendant encore un certain temps, il y aura des glitchs plus ou moins + réguliers sur le blog, c'est parce que j'apprend a me servir de ce système + et que j'apprend du css et du html. Ca arrive, ca passera, mais dans tous + les cas ca me permet d'apprendre plein de choses, donc je mets plutôt ca + dans la catëgorie positive.</p> +</li> +</ul> +<p>Voila, c'est mon retour d'expérience sur pelican. A plus. </p>Update2013-01-05T18:32:00+01:00Wxcafetag:,2013-01-05:home/wxcafe/code/blog-source/output/posts/update/<p>Juste une petite note pour annoncer le prochain article, consacré a la +fabrication d'une PirateBox basée sur un Raspberry Pi. Voila, a bientôt +sur le blog!</p>Update a propos du blog2012-09-18T16:57:00+02:00Wxcafetag:,2012-09-18:home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/<p>Bonsoir! Un petit post pour faire un peu le point sur ce blog.<br /> +Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais +que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y +avoir un tantinet réfléchi, ceci est du a deux points principaux :</p> +<ul> +<li> +<p>Tout d'abord, le manque d'inspiration, tout simplement. C'est assez +compliqué de trouver des sujets intéressants liés a l'informatique, et +qui méritent un article. Je vous invite d'ailleurs a me suggérer des +sujets via les commentaires ou twitter (<a href="https://twitter.com/wxcafe">@Wxcafe</a>)</p> +</li> +<li> +<p>Ensuite, le délai de 8 jours est trop court pour me permettre de faire +les recherches nécessaires, tout en manageant mes cours et mon temps +libre.</p> +</li> +</ul> +<p>A cause de cela, j'ai pris la décision de changer le rythme de parution +des articles a un *minimum* d'un post tous les 10 jours. Bien entendu, +si j'ai de l'inspiration en trop, plus de posts sont envisageables.</p> +<p>Voila. A part ca, je tiens a vous remercier de me lire (c'est assez +étonnant de voir ca...), et je précise que je vais ajouter une page +About Me, qui bien entendu rassemblera des informations sur moi, ma vie, +mon oeuvre :P</p> +<p>Ceci dit, je vais bosser un peu sur le prochain article.</p> +<p>A plus tard!</p>Débuts, présentation, etc...2012-08-18T20:27:00+02:00Wxcafetag:,2012-08-18:home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/<p>Bonjour!</p> +<p>Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur +Twitter, mais aussi sur IRC (Je traîne pas mal sur +irc.freenode.net/##nolife et #debian-fr)</p> +<p>J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je +fais partie de ce genre de personne qui sont capables d'investir tout +leur temps et leur énergie a s’intéresser a un sujet en particulier, et +qui ne peuvent pas vivre sans leurs passions, avec une petite différence +cependant, qui est que je m’intéresse a plusieurs choses : +l'informatique, qui est un champ tellement large qu'on peut passer une +vie a apprendre des choses dessus, et plus particulièrement à +l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres +{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les +trolls seront a partir de maintenant indiqués avec le tag [tr]] du +libre, je préfère utiliser de l'open-source si c'est possible}, +programmation en C, python et java, etc...) , mais aussi a +l’électronique. </p> +<p>Dans un tout autre registre, je m’intéresse aussi +beaucoup aux différents aspects du féminisme et des égalités sexuelles +(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) , +et a la culture dite "geek" en général.</p> +<p>Je tenterai de poster ici le plus souvent possible, mais j'ai de gros +problèmes en terme de régularité de post, donc ne vous inquiétez pas si +vous ne voyez rien pendant deux semaines.</p> +<p>Merci beaucoup de votre attention, et a bientôt!</p> \ No newline at end of file diff --git a/output/feeds/feed.programmation.xml b/output/feeds/feed.programmation.xml new file mode 100644 index 0000000..a51d231 --- /dev/null +++ b/output/feeds/feed.programmation.xml @@ -0,0 +1,198 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/2012-09-08T18:15:00+02:00Introduction a bash en tant que language de programmation.2012-09-08T18:15:00+02:00Wxcafetag:,2012-09-08:home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/<p>L’interpréteur de commandes bash (Bourne Again SHell) +est possiblement le shell le plus connu, notamment grâce a son +intégration en tant que shell par défaut dans les distributions Linux +les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva - +Mageia, etc...).</p> +<p>Cependant, il n'est souvent connu qu'en tant qu’interpréteur de +commande. Alors qu'en réalité, le bash est un langage de programmation +(presque) complet! Ainsi, il intègre les structures de contrôle +habituelles ( pour mémoire, les structures de contrôle comprennent les +conditions (les ifs), les boucles (les while), et les choix (les case), +entre autres.), et est donc ce que l'on pourrait appeler un langage de +script, interprété, de la même façon que python, a la difference près +qu'il contient un prompt (un système d'entrée de commande interactif) +bien plus complet et développé que python. </p> +<p>Cependant, les programmes en bash ne sont executables que dans un +environnement de type UNIX, et donc pas sous Windows (cygwin +(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous +windows. Il faut malgré tout convenir que cet environnement est bien +plus compliqué a manipuler, et globalement ne permet pas d'acceder a des +portages de qualité satisfaisante.)</p> +<p>Ainsi, il est possible de créer des fichiers .sh, contenant des +instructions bash mises a la suite (de la même façon qu'un script BATCH +Windows .bat), et faisant appel autant aux commandes internes de bash, +aussi bien que les commandes externes mises en place par les programmes +installés sur le système, exactement comme dans une invite de commande. +Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit +panda roux directement dans la boite magique, tandis qu'un if +[condition] suivi d'un then (quelque chose) lancera le fameux quelque +chose suscité si la condition est vérifiée. Un peu comme en C, quoi. </p> +<p>De cette façon, et avec quelques informations et connaissances, il est +facile de comprendre le fonctionnement de la programmation en bash. +Quelques exemples commentés:</p> +<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +10 +11 +12 +13</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span> +<span class="c"># La ligne du dessus est très importante, c&#39;est elle qui dit a bash quel doit être </span> +<span class="c"># l&#39;interpreteur des commandes écrites dans ce script. Ici, on dit a bash d&#39;interpréter </span> +<span class="c"># lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire </span> +<span class="c"># executer du python, par exemple, en mettant #!/usr/bin/python a la place.</span> +<span class="nb">echo</span> <span class="s2">&quot;this is a test of bash as a simple script manager&quot;</span> <span class="c"># echo est une commande d&#39;affichage de message.</span> +<span class="nb">echo</span> <span class="s2">&quot;what&#39;s your name, user?&quot;</span> +<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l&#39;utilisateur de donner une </span> +<span class="c"># information, stockée dans la variable en paramètre. </span> +<span class="nb">echo</span> <span class="nv">$your_name</span> <span class="s2">&quot;is your name&quot;</span> <span class="c"># echo permet aussi d&#39;afficher la valeur de variables. </span> +<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d&#39;un message. </span> +<span class="nb">exit</span> <span class="c"># cet appel a exit n&#39;est pas obligatoire, mais donne un aspect plus </span> +<span class="c"># propre au code. Il ne quittera pas la session de terminal, cependant.</span> +</pre></div> +</td></tr></table> + +<p>Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite +d'être clair quand aux capacités et a la simplicité du bash en tant que +language de programmation. Alors en effet, nous n'avons ici absolument +pas utilisé les capacités de bash en lui même, et n'avons fait que le +renvoyer a des programmes externes (sauf read, il est vrai). Voyons +maintenant la syntaxe de bash quand il s'agit d'utiliser les structures +de contrôle:</p> +<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +10</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span> +<span class="nb">echo</span> <span class="s2">&quot;welcome to this second bash program. would you please kindly enter the name of the machine you&#39;re running this on?&quot;</span> +<span class="nb">read </span>host_name +<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> <span class="o">==</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. </span> +<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you told the truth!&quot;</span> +<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C&#39;est un peu vieillot, mais important en bash. </span> +<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> !<span class="o">=</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## l&#39;opérateur != est l&#39;inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. </span> +<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you lied!&quot;</span> +<span class="k">fi </span> +<span class="nb">exit</span> +</pre></div> +</td></tr></table> + +<p>Voila un petit programme permettant d'apprendre la syntaxe du if en +bash. comme vous pouvez le voir, le language est plutôt lite, et la +structure if n'est pas très difficile a prendre en main.</p> +<p>Passons maintenant au while:</p> +<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 +2 +3 +4 +5 +6 +7</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span> +<span class="nb">echo</span> <span class="s2">&quot;what is your name?&quot;</span> +<span class="nb">read </span>name +<span class="k">while</span> <span class="o">[</span> 1 &lt; 10 <span class="o">]</span> <span class="c">## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.</span> +<span class="k">do </span><span class="nb">echo</span> <span class="s2">&quot;i love&quot;</span> <span class="nv">$name</span> +<span class="k">done</span> +<span class="nb">exit</span> +</pre></div> +</td></tr></table> + +<p>Ce petit programme permet d'observer les bases de while (qui est la +boucle de base en bash).</p> +<p>Le troisième opérateur de bash est case. Voyons:</p> +<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span> +<span class="nb">echo</span> <span class="s2">&quot;please enter a number between one and five&quot;</span> +<span class="nb">read </span>number +<span class="k">case</span> <span class="nv">$number</span> in +1<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was one&quot;</span> +;; +2<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was two&quot;</span> +;; +3<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was three&quot;</span> +;; +4<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was four&quot;</span> +;; +5<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was five&quot;</span> +;; +*<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;this number is not correct&quot;</span> +;; +<span class="k">esac</span> +<span class="nb">exit</span> +</pre></div> +</td></tr></table> + +<p>case est un opérateur plus complexe a utiliser a bon escient, et sert a +faire des ifs multiples sans avoir a taper des dizaines de lignes de +code.<br /> +(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre +que le code vérifie chacune des conditions : le 1) est validé si la +valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc.. +le *) désigne toutes les valeurs, et est donc validé si aucune autre +valeur n'a précédemment acceptée.</p> +<p>Quelques notions manquent ici:<br /> +- les nombres aléatoires sont générés par un appel a la variable +\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a +16 bits donc). il est possible de faire des invocations a des nombres +aléatoires plus grands, mais les méthodes permettant de faire cela sont +plus complexes, et je ne les aborderai donc pas ici.<br /> +- comme vous avez pu le constater, les variables sont désignées en tant +que telles par l'utilisation d'un symbole \$ au début de leur nom. +Ainsi, echo number renverra "number", tandis que echo \$number renverra +le résultat de la variable \$number.<br /> +être utilisées dans un programme bash.<br /> +- comme vous avez pu le constater, les commandes doivent tenir en +théorie en une ligne. Cependant, le caractère \ permet de retourner a +la ligne en faisant considérer a bash qu'il s'agit de la même ligne.</p> +<p>Globalement, il faut admettre que bash n'a pas vocation a être un +langage de programmation extrêmement développé. Sans framework +graphique, avec peu de manières d'utiliser de grandes variables, ou +encore une gestion de la mémoire risible, bash n'a rien d'un langage de +développement professionnel.<br /> +Cependant, le simple fait qu'il soit considéré comme un langage de +programmation a part entière font de lui un langage de script d'une +puissance incontestable, et sa simplicité et sa grande popularité font +de lui un langage de choix pour apprendre la programmation simplement et +sans trop se prendre la tête.</p> +<p>J'espère que cet article aura été utile a certain-e-s, et je vous +souhaite bonne chance dans votre découverte de la programmation (n'allez +pas voir ceux qui font de l'orienté objet, c'est des méchants :3)</p> \ No newline at end of file diff --git a/output/feeds/feed.rss.language.xml b/output/feeds/feed.rss.language.xml new file mode 100644 index 0000000..3a514c5 --- /dev/null +++ b/output/feeds/feed.rss.language.xml @@ -0,0 +1,30 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/Tue, 18 Sep 2012 19:07:00 +0200Le Quenya - Épisode øfile:///home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/<p>Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusqu’à il y +a peu...), le nom que donnait Tolkien au dialecte principal parlé par +les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des +Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte +avant de commencer cet article que l'une des œuvres les plus +impressionnantes de Tolkien, si ce n'est la plus grande, est +l'impressionnant travail linguistique passé sur les différentes langues +présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya, +la langue des nains, qui est appelé le khazalide, etc. </p> +<p>En effet, a contrario des "langues" développées dans d'autres œuvres littéraires +telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot +de français (ou d'anglais) a un mot de sa "langue", les langues de +l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des +racines logiques, des systèmes de grammaire et de conjugaison propres, +une logique inhérente dans la prononciation ou l'orthographe, et ainsi +de suite. </p> +<p>Un véritable rêve de linguiste donc, puisque ces langues sont +pratiquement entièrement documentées par Tolkien lui même (voir +l'appendice E du SdA, particulièrement instructif a ce sujet.)</p> +<p>J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster +ici des résumés des cours que je suis ( disponibles <a href="http://folk.uib.no/hnohf/qcourse.htm">ici</a> , une +traduction en français est disponible <a href="http://www.ambar-eldaron.com/telechargements/integraleshelge.pdf">la</a> en pdf ), et des infos ici +toutes les deux semaines.</p> +<p>Si ce sujet vous intéresse, le compte twitter @Quenya101 poste +régulièrement des informations sur le sujet, et pour plus d'infos sur le +sujet, vous pouvez en trouver <a href="olk.uib.no/hnohf/quenya.htm">par ici</a>.</p> +<p>Et en tant que première leçon, vous pouvez apprendre que ce mot que vous +avez prononcé comme le Kenya tout le long de cet article se prononce en +fait [Kwenïa], ou bien Qwenya!</p>WxcafeTue, 18 Sep 2012 19:07:00 +0200tag:,2012-09-18:home/wxcafe/code/blog-source/output/posts/le-quenya-episode-o/ \ No newline at end of file diff --git a/output/feeds/feed.rss.notes.xml b/output/feeds/feed.rss.notes.xml new file mode 100644 index 0000000..4429edd --- /dev/null +++ b/output/feeds/feed.rss.notes.xml @@ -0,0 +1,265 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/Fri, 30 May 2014 08:25:00 +0200SSL ou la sécurité sur l'internetfile:///home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/<p><em>Disclaimer: Ce billet est écrit après le visionnage de la conférence de Moxie +Marlinspike suivante: <a href="https://www.youtube.com/watch?v=ibF36Yyeehw">More Tricks for Defeating SSL</a>, +présentée a la DefCon 17 (en 2011), et la lecture du billet suivant: +<a href="http://www.thoughtcrime.org/blog/lavabit-critique/">A Critique of Lavabit</a>, +ce qui peut avoir l'effet de rendre légèrement parano. Si vous considérez que +c'est le cas ici, veuillez ne pas tenir compte de ce billet (et vous pouvez dès +a présent dire coucou aux différentes personnes qui écoutent votre connection)</em></p> +<p>Si vous venez ici souvent (vous devriez), et que vous utilisez SSL pour vous +connecter a ce site (vous devriez, vraiment, dans ce cas), vous avez peut être +remarqué quelque chose récemment : il se trouve que le certificat qui permet de +desservir ce site a changé.</p> +<p>Cela fait suite aux évènements évoqués dans le <em>Disclaimer</em>, mais aussi a des +doigts sortis d'un endroit particulier du corps de l'admin/auteur de ce "blog", +qui a pris <strong>enfin</strong> les 5 minutes nécessaires a la compréhension superficielle +du fonctionnement de SSL, et les 10 nécessaires a la mise en place d'un système +fonctionnel utilisant cette compréhension récemment acquise.</p> +<p>Bref, le certificat a changé. Mais de quelle façon, vous demandez vous peut +être (ou pas, mais bon, je vais expliquer de toute façon). Et bien c'est très +simple : il existait auparavant un certificat pour <code>wxcafe.net</code>, un pour +<code>paste.wxcafe.net</code>, un pour <code>mail.wxcafe.net</code>, etc... Bref, un certificat +différent pour chaque sous-domaine.</p> +<p>Il s'avère que c'est a la fois très peu pratique a utiliser (les utilisateurs +doivent ajouter chaque certificat a leur navigateur séparément, chaque +changement de sous-domaine conduit a un message d'erreur, etc) et pas plus +sécurisé que d'avoir un seul certificat wildcard. J'ai donc généré un certificat +pour <code>*.wxcafe.net</code> hier, et il sera dorénavant utilisé pour tous les +sous-domaine de <code>wxcafe.net</code>; et un certificat pour <code>wxcafe.net</code>, qui ne matche +pas <code>*.wxcafe.net</code>, et qui sera donc utilisé... bah pour <code>wxcafe.net</code>.</p> +<p>Il serait préférable de faire des redirections automatiques des adresses http +vers les adresses https, cependant, étant donné que le certificat est +self-signed, il me semble préférable que l'arrivée sur le site ne commence pas +par une page firefox disant "Something's Wrong!", et ces redirections ne seront +donc pas mises en place.</p> +<p>De plus, après la lecture de l'article de blog sur Lavabit dont le lien est plus +haut, il semble intéressant (et assez important) de faire en sorte que le +serveur utilise en priorité (et si possible, uniquement) des ciphers supportant +PFS, soit EDH et EECDH (Ephemeral Diffie-Helmann et la version Elliptic Curves +de ce même algorithme). Cela permet de faire en sorte que toutes les +communications avec ce serveur soient future-proof, c'est a dire que, même si +quelqu'un récupérait la clé privée, elle ne serait pas utile pour déchiffrer les +communications passées.</p> +<p>Bon, maintenant que les explications basiques sont faites, voyons +l'implémentation : <br /> +Pour générer la clé, tout d'abord, il convient d'utiliser les commandes +suivantes: </p> +<div class="highlight"><pre><span class="n">sudo</span> <span class="n">openssl</span> <span class="n">genrsa</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="mi">4096</span> +<span class="cp"># nous utilisons ici une clé de 4096 bits, la taille est laissée a votre appréciation</span> +<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">new</span> <span class="o">-</span><span class="n">key</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">csr</span> +<span class="cp"># OpenSSL va ici vous demander de nombreuses informations, &quot;Common Name&quot; devant contenir le FQDN</span> +<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">X509</span> <span class="o">-</span><span class="n">req</span> <span class="o">-</span><span class="n">days</span> <span class="mi">1095</span> <span class="o">-</span><span class="n">in</span> <span class="n">example</span><span class="p">.</span><span class="n">csr</span> <span class="o">-</span><span class="n">signkey</span> <span class="n">example</span><span class="p">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="n">example</span><span class="p">.</span><span class="n">crt</span> +<span class="cp"># enfin, nous générons la clé, d&#39;une durée de vie de 3 ans</span> +</pre></div> + + +<p>Bien entendu, si vous voulez utiliser une clé wildcard, il vous faut préciser +<code>*.example.com</code> comme common name. +Une fois la clé générée, il faut dire aux différents services de l'utiliser, et +de n'utiliser que des ciphers PFS. La méthode dépend donc du service. +Je vais lister ici les methodes pour quelques services que j'utilise :</p> +<h3>apache :</h3> +<div class="highlight"><pre><span class="cp"># /etc/apache2/mods_enabled/ssl.conf</span> +<span class="cp"># [...]</span> +<span class="n">SSLProtocol</span> <span class="n">all</span> <span class="o">-</span><span class="n">SSLv2</span> <span class="o">-</span><span class="n">SSLv3</span> +<span class="n">SSLHonorCipherOrder</span> <span class="n">on</span> +<span class="n">SSLCipherSuite</span> <span class="s">&quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \</span> +<span class="s"> EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \</span> +<span class="s"> EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;</span> +<span class="cp"># [...]</span> +<span class="cp"># /etc/apache2/sites-enabled/default-ssl</span> +<span class="cp"># [...]</span> +<span class="n">SSLEngine</span> <span class="n">on</span> +<span class="n">SSLCertificateFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span> +<span class="n">SSLCertificateKeyFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span> +<span class="cp"># [...]</span> +</pre></div> + + +<h3>nginx :</h3> +<div class="highlight"><pre><span class="cp"># /etc/nginx/nginx.conf </span> +<span class="cp"># [...]</span> +<span class="n">ssl_protocols</span> <span class="n">TLSv1</span> <span class="n">TLSv1</span><span class="mf">.1</span> <span class="n">TLSv1</span><span class="mf">.2</span><span class="p">;</span> +<span class="n">ssl_prefer_server_ciphers</span> <span class="n">on</span><span class="p">;</span> +<span class="n">ssl_ciphers</span> <span class="s">&quot;EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \</span> +<span class="s"> EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \</span> +<span class="s"> EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS&quot;</span><span class="p">;</span> +<span class="cp"># [...]</span> +<span class="cp"># /etc/nginx/sites-enabled/default-ssl</span> +<span class="cp"># [...]</span> +<span class="n">ssl</span> <span class="n">on</span><span class="p">;</span> +<span class="n">ssl_certificate</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span> +<span class="n">ssl_certificate_key</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span> +<span class="cp"># [...]</span> +</pre></div> + + +<h3>prosody (jabber) :</h3> +<div class="highlight"><pre><span class="cp"># tout d&#39;abord, lancez la commande suivante :</span> +<span class="n">sudo</span> <span class="n">openssl</span> <span class="n">dhparam</span> <span class="o">-</span><span class="n">out</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">prosody</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">dh</span><span class="o">-</span><span class="mf">2048.</span><span class="n">pem</span> <span class="mi">2048</span> +<span class="cp"># ensuite, pour chaque VirtualHost dans /etc/prosody/prosody.conf :</span> +<span class="n">ssl</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">dhparam</span> <span class="o">=</span> <span class="s">&quot;/etc/prosody/certs/dh-2048.pem&quot;</span><span class="p">;</span> + <span class="n">key</span> <span class="o">=</span> <span class="s">&quot;/etc/certs/example.com.key&quot;</span><span class="p">;</span> + <span class="n">certificate</span> <span class="o">=</span> <span class="s">&quot;/etc/certs/example.com.crt&quot;</span><span class="p">;</span> +<span class="p">}</span> +<span class="cp"># la cipher suite de prosody utilise par défaut EDH et EECDH</span> +</pre></div> + + +<h3>postfix (email) :</h3> +<div class="highlight"><pre><span class="cp"># /etc/postfix/main.cf</span> +<span class="cp"># [...]</span> +<span class="n">smtpd_tls_cert_file</span> <span class="o">=</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span> +<span class="n">smtpd_tls_key_file</span> <span class="o">=</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span> +<span class="n">tls_preempt_cipherlist</span> <span class="o">=</span> <span class="n">yes</span> +<span class="n">smtpd_tls_eecdh_grade</span> <span class="o">=</span> <span class="n">strong</span> +<span class="n">smtdp_tls_mandatory_ciphers</span> <span class="o">=</span> <span class="n">high</span> +<span class="n">smtpd_tls_mandatory_exclude_ciphers</span> <span class="o">=</span> <span class="n">aNULL</span><span class="p">,</span> <span class="n">eNULL</span><span class="p">,</span> <span class="n">MD5</span><span class="p">,</span> <span class="n">LOW</span><span class="p">,</span> <span class="mi">3</span><span class="n">DES</span><span class="p">,</span> <span class="n">EXP</span><span class="p">,</span> <span class="n">PSK</span><span class="p">,</span> <span class="n">SRP</span><span class="p">,</span> <span class="n">DSS</span> +<span class="n">smtpd_tls_security_level</span> <span class="o">=</span> <span class="n">encrypt</span> +<span class="n">smtpd_tls_mandatory_protocols</span> <span class="o">=</span> <span class="o">!</span><span class="n">SSLv2</span><span class="p">,</span> <span class="o">!</span><span class="n">SSLv3</span> +<span class="n">smtpd_use_tls</span> <span class="o">=</span> <span class="n">yes</span> +<span class="cp"># [...]</span> +</pre></div> + + +<h3>dovecot (imap) :</h3> +<div class="highlight"><pre><span class="cp"># /etc/dovecot/dovecot.conf </span> +<span class="cp"># [...]</span> +<span class="n">ssl_cert</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">crt</span> +<span class="n">ssl_key</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">example</span><span class="p">.</span><span class="n">com</span><span class="p">.</span><span class="n">key</span> +<span class="n">ssl_cipher_list</span> <span class="o">=</span> <span class="n">HIGH</span><span class="o">+</span><span class="n">kEDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">+</span><span class="n">kEECDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">:!</span><span class="n">PSK</span><span class="o">:!</span><span class="n">SRP</span><span class="o">:!</span><span class="mi">3</span><span class="n">DES</span><span class="o">:!</span><span class="n">aNULL</span> +</pre></div> + + +<p>Voila. Pour d'autres protocoles/services, je vous invite a RTFM^W vous reporter +au manuel approprié.</p> +<p>Cela étant dit, je conseille a tout le monde d'aller voir la conférence dans le +disclaimer, et tant qu'a faire la conférence du même hacker <a href="https://www.youtube.com/watch?v=8N4sb-SEpcg">SSL and the future +of Authenticity</a> qui parle de son +implémentation d'une technologie "remplaçant" le système de CAs qui existe +actuellement.</p>WxcafeFri, 30 May 2014 08:25:00 +0200tag:,2014-05-30:home/wxcafe/code/blog-source/output/posts/SSL-ou-la-securite-sur-internet/Redesign du blog, etcfile:///home/wxcafe/code/blog-source/output/posts/redesign-du-blog/<p>Comme vous avez pu le remarquer, ce blog a "un peu" changé récemment.</p> +<p>Du coup, expliquons. J'ai récemment monté <a href="http://serverporn.fr">serverporn</a>, et ai par la même +occasion découvert <a href="http://getpelican.com">pelican</a>. J'ai tout de suite accroché a ce générateur de +site statique en python, du fait de son efficacité, de sa facilité d'utilisation +et de sa grande customisation. En gros, pelican est un logiciel qui prend des +fichiers markdown ou reStructuredText, les passe a la moulinette d'un "thème" +constitué de templates pour les fichiers html et l'organisation du projet et +d'une partie "statique" contenant le css, et les autres fichiers nécessaires au +projet, et en fait des pages html. </p> +<p>Globalement, un thème est constitué ainsi :</p> +<div class="highlight"><pre><span class="n">th</span><span class="err">è</span><span class="n">me</span> +<span class="err">├──</span> <span class="k">static</span> +<span class="err">│</span> <span class="err">├─</span> <span class="n">css</span> +<span class="err">│</span> <span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">css</span> <span class="n">files</span><span class="p">]</span> +<span class="err">│</span> <span class="err">├─</span> <span class="n">img</span> +<span class="err">│</span> <span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">image</span> <span class="n">files</span><span class="p">]</span> +<span class="err">│</span> <span class="err">└─</span> <span class="n">js</span> +<span class="err">│</span> <span class="err">└─</span> <span class="p">[</span><span class="n">javascript</span> <span class="n">files</span><span class="p">]</span> +<span class="err">└──</span> <span class="n">template</span> + <span class="err">├─</span> <span class="n">base</span><span class="p">.</span><span class="n">html</span> + <span class="err">├─</span> <span class="n">index</span><span class="p">.</span><span class="n">html</span> + <span class="err">├─</span> <span class="n">page</span><span class="p">.</span><span class="n">html</span> + <span class="err">├─</span> <span class="p">[...]</span> + <span class="err">└─</span> <span class="n">article</span><span class="p">.</span><span class="n">html</span> +</pre></div> + + +<p>Sachant que les fichiers .html sont en réalité des fichiers suivant la syntaxe +django, et utilisent des variables particulières telles <code>{{ article.content }}</code>, +par exemple. La syntaxe complète est très bien documentée dans la <a href="http://docs.getpelican.com/en/3.2/themes.html#templates-and-variables">doc</a> de +pelican.</p> +<p>L'un des grands avantages de pelican est aussi la facilité qu'il offre quand a +la mise a jour du blog.<br /> +En effet, il offre un système de Makefiles permettant, grâce a de nombreuses +cibles de compilation, de régénérer le site entier, de ne générer que les +fichiers modifiés depuis la dernière génération, de générer uniquement les +fichiers n'existant pas la dernière fois, etc... +La gestion du projet en devient donc très simple, puisque après avoir écrit un +article, il suffit de faire un <code>make html</code> pour mettre a jour le blog.</p> +<p>De plus, le système de wordpress commençait a ne plus me convenir, du fait du +manque de customisation, du fait que ça soit du PHP (beurk), etc. La, avec +pelican, je contrôle bien plus ce qui est mis sur le serveur (puisque c'est moi +qui ait modifié les templates et le css), c'est lisible (puisque c'est du +python, par opposition au PHP...), et c'est plus "efficace". Le markdown est +très pratique, je peux utiliser mon éditeur de texte de prédilection pour faire +les articles, je n'ai pas besoin d'un accès continu au net, bref, c'est plus +efficace.</p> +<p>En ce qui concerne les points négatifs : </p> +<ul> +<li> +<p>Perte des commentaires: + Je vous propose de vous référer a l'article de Gordontesos <a href="http://gordon.re/hacktivisme/la-necessite-des-commentaires.html">ici</a> quand a + mon avis sur ce sujet.</p> +</li> +<li> +<p>Perte du bouton flattr: + Il va bientôt être remis, c'est juste un manque de temps de ma part, mais vu + que toutes les pages passent par les mêmes templates, c'est assez facile a + faire.</p> +</li> +<li> +<p>Perte du spam: + Pourquoi c'est dans les points négatifs, ca?</p> +</li> +<li> +<p>Temps d'adaptation et d'appréhension du système: + Oui, pendant encore un certain temps, il y aura des glitchs plus ou moins + réguliers sur le blog, c'est parce que j'apprend a me servir de ce système + et que j'apprend du css et du html. Ca arrive, ca passera, mais dans tous + les cas ca me permet d'apprendre plein de choses, donc je mets plutôt ca + dans la catëgorie positive.</p> +</li> +</ul> +<p>Voila, c'est mon retour d'expérience sur pelican. A plus. </p>wxcafeWed, 12 Jun 2013 19:14:00 +0200tag:,2013-06-12:home/wxcafe/code/blog-source/output/posts/redesign-du-blog/Updatefile:///home/wxcafe/code/blog-source/output/posts/update/<p>Juste une petite note pour annoncer le prochain article, consacré a la +fabrication d'une PirateBox basée sur un Raspberry Pi. Voila, a bientôt +sur le blog!</p>WxcafeSat, 05 Jan 2013 18:32:00 +0100tag:,2013-01-05:home/wxcafe/code/blog-source/output/posts/update/Update a propos du blogfile:///home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/<p>Bonsoir! Un petit post pour faire un peu le point sur ce blog.<br /> +Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais +que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y +avoir un tantinet réfléchi, ceci est du a deux points principaux :</p> +<ul> +<li> +<p>Tout d'abord, le manque d'inspiration, tout simplement. C'est assez +compliqué de trouver des sujets intéressants liés a l'informatique, et +qui méritent un article. Je vous invite d'ailleurs a me suggérer des +sujets via les commentaires ou twitter (<a href="https://twitter.com/wxcafe">@Wxcafe</a>)</p> +</li> +<li> +<p>Ensuite, le délai de 8 jours est trop court pour me permettre de faire +les recherches nécessaires, tout en manageant mes cours et mon temps +libre.</p> +</li> +</ul> +<p>A cause de cela, j'ai pris la décision de changer le rythme de parution +des articles a un *minimum* d'un post tous les 10 jours. Bien entendu, +si j'ai de l'inspiration en trop, plus de posts sont envisageables.</p> +<p>Voila. A part ca, je tiens a vous remercier de me lire (c'est assez +étonnant de voir ca...), et je précise que je vais ajouter une page +About Me, qui bien entendu rassemblera des informations sur moi, ma vie, +mon oeuvre :P</p> +<p>Ceci dit, je vais bosser un peu sur le prochain article.</p> +<p>A plus tard!</p>WxcafeTue, 18 Sep 2012 16:57:00 +0200tag:,2012-09-18:home/wxcafe/code/blog-source/output/posts/update-a-propos-du-blog/Débuts, présentation, etc...file:///home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/<p>Bonjour!</p> +<p>Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur +Twitter, mais aussi sur IRC (Je traîne pas mal sur +irc.freenode.net/##nolife et #debian-fr)</p> +<p>J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je +fais partie de ce genre de personne qui sont capables d'investir tout +leur temps et leur énergie a s’intéresser a un sujet en particulier, et +qui ne peuvent pas vivre sans leurs passions, avec une petite différence +cependant, qui est que je m’intéresse a plusieurs choses : +l'informatique, qui est un champ tellement large qu'on peut passer une +vie a apprendre des choses dessus, et plus particulièrement à +l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres +{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les +trolls seront a partir de maintenant indiqués avec le tag [tr]] du +libre, je préfère utiliser de l'open-source si c'est possible}, +programmation en C, python et java, etc...) , mais aussi a +l’électronique. </p> +<p>Dans un tout autre registre, je m’intéresse aussi +beaucoup aux différents aspects du féminisme et des égalités sexuelles +(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) , +et a la culture dite "geek" en général.</p> +<p>Je tenterai de poster ici le plus souvent possible, mais j'ai de gros +problèmes en terme de régularité de post, donc ne vous inquiétez pas si +vous ne voyez rien pendant deux semaines.</p> +<p>Merci beaucoup de votre attention, et a bientôt!</p>WxcafeSat, 18 Aug 2012 20:27:00 +0200tag:,2012-08-18:home/wxcafe/code/blog-source/output/posts/debuts-presentation-etc/ \ No newline at end of file diff --git a/output/feeds/feed.rss.programmation.xml b/output/feeds/feed.rss.programmation.xml new file mode 100644 index 0000000..11e7258 --- /dev/null +++ b/output/feeds/feed.rss.programmation.xml @@ -0,0 +1,198 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/Sat, 08 Sep 2012 18:15:00 +0200Introduction a bash en tant que language de programmation.file:///home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/<p>L’interpréteur de commandes bash (Bourne Again SHell) +est possiblement le shell le plus connu, notamment grâce a son +intégration en tant que shell par défaut dans les distributions Linux +les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva - +Mageia, etc...).</p> +<p>Cependant, il n'est souvent connu qu'en tant qu’interpréteur de +commande. Alors qu'en réalité, le bash est un langage de programmation +(presque) complet! Ainsi, il intègre les structures de contrôle +habituelles ( pour mémoire, les structures de contrôle comprennent les +conditions (les ifs), les boucles (les while), et les choix (les case), +entre autres.), et est donc ce que l'on pourrait appeler un langage de +script, interprété, de la même façon que python, a la difference près +qu'il contient un prompt (un système d'entrée de commande interactif) +bien plus complet et développé que python. </p> +<p>Cependant, les programmes en bash ne sont executables que dans un +environnement de type UNIX, et donc pas sous Windows (cygwin +(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous +windows. Il faut malgré tout convenir que cet environnement est bien +plus compliqué a manipuler, et globalement ne permet pas d'acceder a des +portages de qualité satisfaisante.)</p> +<p>Ainsi, il est possible de créer des fichiers .sh, contenant des +instructions bash mises a la suite (de la même façon qu'un script BATCH +Windows .bat), et faisant appel autant aux commandes internes de bash, +aussi bien que les commandes externes mises en place par les programmes +installés sur le système, exactement comme dans une invite de commande. +Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit +panda roux directement dans la boite magique, tandis qu'un if +[condition] suivi d'un then (quelque chose) lancera le fameux quelque +chose suscité si la condition est vérifiée. Un peu comme en C, quoi. </p> +<p>De cette façon, et avec quelques informations et connaissances, il est +facile de comprendre le fonctionnement de la programmation en bash. +Quelques exemples commentés:</p> +<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +10 +11 +12 +13</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span> +<span class="c"># La ligne du dessus est très importante, c&#39;est elle qui dit a bash quel doit être </span> +<span class="c"># l&#39;interpreteur des commandes écrites dans ce script. Ici, on dit a bash d&#39;interpréter </span> +<span class="c"># lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire </span> +<span class="c"># executer du python, par exemple, en mettant #!/usr/bin/python a la place.</span> +<span class="nb">echo</span> <span class="s2">&quot;this is a test of bash as a simple script manager&quot;</span> <span class="c"># echo est une commande d&#39;affichage de message.</span> +<span class="nb">echo</span> <span class="s2">&quot;what&#39;s your name, user?&quot;</span> +<span class="nb">read </span>your_name <span class="c"># la commande read permet de demander a l&#39;utilisateur de donner une </span> +<span class="c"># information, stockée dans la variable en paramètre. </span> +<span class="nb">echo</span> <span class="nv">$your_name</span> <span class="s2">&quot;is your name&quot;</span> <span class="c"># echo permet aussi d&#39;afficher la valeur de variables. </span> +<span class="c"># Ici, on renvoie la variable remplie précédemment, suivie d&#39;un message. </span> +<span class="nb">exit</span> <span class="c"># cet appel a exit n&#39;est pas obligatoire, mais donne un aspect plus </span> +<span class="c"># propre au code. Il ne quittera pas la session de terminal, cependant.</span> +</pre></div> +</td></tr></table> + +<p>Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite +d'être clair quand aux capacités et a la simplicité du bash en tant que +language de programmation. Alors en effet, nous n'avons ici absolument +pas utilisé les capacités de bash en lui même, et n'avons fait que le +renvoyer a des programmes externes (sauf read, il est vrai). Voyons +maintenant la syntaxe de bash quand il s'agit d'utiliser les structures +de contrôle:</p> +<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +10</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash </span> +<span class="nb">echo</span> <span class="s2">&quot;welcome to this second bash program. would you please kindly enter the name of the machine you&#39;re running this on?&quot;</span> +<span class="nb">read </span>host_name +<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> <span class="o">==</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. </span> +<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you told the truth!&quot;</span> +<span class="k">fi</span> <span class="c">## le fi est la commande fermant le if, tout comme le EndIf en basic. C&#39;est un peu vieillot, mais important en bash. </span> +<span class="k">if</span> <span class="o">[</span> <span class="nv">$host_name</span> !<span class="o">=</span> <span class="nv">$HOSTNAME</span> <span class="o">]</span> <span class="c">## l&#39;opérateur != est l&#39;inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. </span> +<span class="k">then </span><span class="nb">echo</span> <span class="s2">&quot;you lied!&quot;</span> +<span class="k">fi </span> +<span class="nb">exit</span> +</pre></div> +</td></tr></table> + +<p>Voila un petit programme permettant d'apprendre la syntaxe du if en +bash. comme vous pouvez le voir, le language est plutôt lite, et la +structure if n'est pas très difficile a prendre en main.</p> +<p>Passons maintenant au while:</p> +<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 +2 +3 +4 +5 +6 +7</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span> +<span class="nb">echo</span> <span class="s2">&quot;what is your name?&quot;</span> +<span class="nb">read </span>name +<span class="k">while</span> <span class="o">[</span> 1 &lt; 10 <span class="o">]</span> <span class="c">## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.</span> +<span class="k">do </span><span class="nb">echo</span> <span class="s2">&quot;i love&quot;</span> <span class="nv">$name</span> +<span class="k">done</span> +<span class="nb">exit</span> +</pre></div> +</td></tr></table> + +<p>Ce petit programme permet d'observer les bases de while (qui est la +boucle de base en bash).</p> +<p>Le troisième opérateur de bash est case. Voyons:</p> +<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24</pre></div></td><td class="code"><div class="highlight"><pre><span class="c">#!/bin/bash</span> +<span class="nb">echo</span> <span class="s2">&quot;please enter a number between one and five&quot;</span> +<span class="nb">read </span>number +<span class="k">case</span> <span class="nv">$number</span> in +1<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was one&quot;</span> +;; +2<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was two&quot;</span> +;; +3<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was three&quot;</span> +;; +4<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was four&quot;</span> +;; +5<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;the choosen number was five&quot;</span> +;; +*<span class="o">)</span> +<span class="nb">echo</span> <span class="s2">&quot;this number is not correct&quot;</span> +;; +<span class="k">esac</span> +<span class="nb">exit</span> +</pre></div> +</td></tr></table> + +<p>case est un opérateur plus complexe a utiliser a bon escient, et sert a +faire des ifs multiples sans avoir a taper des dizaines de lignes de +code.<br /> +(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre +que le code vérifie chacune des conditions : le 1) est validé si la +valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc.. +le *) désigne toutes les valeurs, et est donc validé si aucune autre +valeur n'a précédemment acceptée.</p> +<p>Quelques notions manquent ici:<br /> +- les nombres aléatoires sont générés par un appel a la variable +\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a +16 bits donc). il est possible de faire des invocations a des nombres +aléatoires plus grands, mais les méthodes permettant de faire cela sont +plus complexes, et je ne les aborderai donc pas ici.<br /> +- comme vous avez pu le constater, les variables sont désignées en tant +que telles par l'utilisation d'un symbole \$ au début de leur nom. +Ainsi, echo number renverra "number", tandis que echo \$number renverra +le résultat de la variable \$number.<br /> +être utilisées dans un programme bash.<br /> +- comme vous avez pu le constater, les commandes doivent tenir en +théorie en une ligne. Cependant, le caractère \ permet de retourner a +la ligne en faisant considérer a bash qu'il s'agit de la même ligne.</p> +<p>Globalement, il faut admettre que bash n'a pas vocation a être un +langage de programmation extrêmement développé. Sans framework +graphique, avec peu de manières d'utiliser de grandes variables, ou +encore une gestion de la mémoire risible, bash n'a rien d'un langage de +développement professionnel.<br /> +Cependant, le simple fait qu'il soit considéré comme un langage de +programmation a part entière font de lui un langage de script d'une +puissance incontestable, et sa simplicité et sa grande popularité font +de lui un langage de choix pour apprendre la programmation simplement et +sans trop se prendre la tête.</p> +<p>J'espère que cet article aura été utile a certain-e-s, et je vous +souhaite bonne chance dans votre découverte de la programmation (n'allez +pas voir ceux qui font de l'orienté objet, c'est des méchants :3)</p>WxcafeSat, 08 Sep 2012 18:15:00 +0200tag:,2012-09-08:home/wxcafe/code/blog-source/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/ \ No newline at end of file diff --git a/output/feeds/feed.rss.teaching.xml b/output/feeds/feed.rss.teaching.xml new file mode 100644 index 0000000..3b4ad13 --- /dev/null +++ b/output/feeds/feed.rss.teaching.xml @@ -0,0 +1,344 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/Sat, 16 May 2015 02:00:00 +0200SSL - STARTTLSfile:///home/wxcafe/code/blog-source/output/posts/ssl-starttls/<p>Le chiffrement SSL pour les services en ligne est un problème relativement +récent, par rapport a l&rsquo;histoire d&rsquo;Internet. Sa mise en place pose +problème : les protocoles existants ne s&rsquo;accommodent qu&rsquo;assez mal de recevoir +soudainement un flot de données chiffrées, mais développer de nouveaux +protocoles est complexe et n&rsquo;apporte rien d&rsquo;intéressant. Pour palier a ce +problème, deux solutions sont apparues.</p> +<p>Le première consiste à faire écouter les services sur un +autre port, dans un tunnel SSL. De cette façon, le service existant écoute +normalement, mais il ne répond pas directement aux requêtes. A la place, un +tunnel SSL est mis en place, et les requêtes et les réponses passent dans le +tunnel (ou elles apparaissent donc chiffrées pour l&rsquo;extérieur). Cela permet de +proposer un service chiffré en modifiant de façon minimale le programme, au prix +de devoir aussi changer tous les clients, et de devoir les orienter sur un autre +port.</p> +<p>L&rsquo;autre approche qui a été utilisée est une approche d&rsquo;<em>upgrade</em>. La +communication commence en mode non chiffré, puis le client demande l&rsquo;upgrade de +la connexion vers le mode chiffré s&rsquo;il le supporte, les deux machines +machines font un <em>handshake</em> SSL et la communication continue a travers le +tunnel SSL. Le service peut continuer a écouter sur son port habituel, et seuls +les clients capables de passer en SSL le feront, ce qui permet de faire la &ldquo;mise +a jour&rdquo; en douceur.</p> +<p>Il est souvent demandé quelle est la meilleure méthode pour mettre en place un +service &ndash; laisser un port pour le SSL et un pour le trafic non chiffré, ou bien +un seul, avec <code>STARTTLS</code>, qui <em>upgrade</em> les connexions si nécessaire.<br /> +La réponse est que <code>STARTTLS</code> est plus interessant, pour plusieurs raisons. Tout +d&rsquo;abord, il permet de n&rsquo;utiliser qu&rsquo;un seul port : ça permet de simplifier la +configuration du firewall. En plus de ça, il permet aux clients &ldquo;anciens&rdquo; (ceux +qui ne supportent pas SSL, donc ceux qui devraient être changés) de toujours se +connecter, même si cela signifie que leurs informations seront transmises en +clair. Surtout, il permet d&rsquo;éviter aux utilisateurs d&rsquo;avoir a configurer leurs +clients. Si le client supporte le chiffrement, il l&rsquo;activera de lui même s&rsquo;il +voit qu&rsquo;il est disponible.<br /> +Bref, mettez en place du <code>STARTTLS</code>, et pas du SSL. C&rsquo;est mieux pour la sécurité +de tout le monde.</p>WxcafeSat, 16 May 2015 02:00:00 +0200tag:,2015-05-16:home/wxcafe/code/blog-source/output/posts/ssl-starttls/Les systèmes de fichiersfile:///home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/<p>Un système de fichiers. Vous en avez surement déjà entendu parlé si vous +avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous +connaissez surement NTFS, EXT4, ou encore FAT32.</p> +<p>Ces différents noms désignent en effet des systèmes de fichiers. Mais +qu'est-ce qu'un système de fichiers?</p> +<p>Pour comprendre cela, il faut déjà savoir ce qu'est exactement un +fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la +plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio +(<a href="http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s">kibioctet</a>), en fonction du système de fichier utilisé.), qui est +donc composé de bits, interprétés différemment en fonction du type de +fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il +n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, +ou il commence ni où il s'arrête (je schématise un peu, mais c'est +l'idée). </p> +<p>Ainsi, le système de fichier donne un cadre et un standard à +l'arborescence des fichiers. Par exemple, le système de fichier ext4 +utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de +disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio +et mesurer la taille des fichiers en blocs de cette façon. Les systèmes +de fichiers nécessitent l'inclusion de drivers dans le noyau pour +pouvoir être pris en compte. </p> +<p>Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, +reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu +près tout type de partition récente.</p> +<p>Il convient de bien faire la différence entre le système de fichier et +l'arborescence des fichiers. Si l'arborescence des fichiers est en fait +une entité virtuelle englobant la racine / et tous les fichiers et +dossiers contenus dedans, le système de fichier permet a votre système +GNU/Linux de distinguer les différents fichiers composants cette +arborescence.</p> +<p>Détaillons maintenant les types de fichiers les plus répandus:</p> +<ul> +<li> +<p>FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, + soit la définition d'un système de fichier), remplissent leur rôle le + plus simplement possible. Ne permettant (historiquement) que des noms de + 8 caractères (plus extension de trois caractères), ni chiffrement, ni + système de distinction d'utilisateurs (DOS étant un système + mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, + utlisants respectivement des blocs de 16 et 32 Kio.</p> +</li> +<li> +<p>NTFS :. Le NTFS (pour New Technology File System, rapport a Windows + NT) est un système de fichier qui est apparu avec Windows XP, et qui + était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a + FAT différentes capacités dont le chiffrement, les liens symboliques, la + compression et les quotas pour les volumes, permettant de limiter la + taille maximum occupée dans une partition.</p> +</li> +<li> +<p>ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. + Ne différant pas énormément de NTFS, je le mentionne principalement + parce qu'il est prévu qu'il soit le défaut pour Windows 8. + Il apporte principalement la redondance, c'est a dire que chaque + fichier possède une somme de contrôle en 64 bits stockée dans un fichier + séparé pour éviter les corruption de disque.</p> +</li> +<li> +<p>Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers + les plus utilisés sous linux pour le grand public. (Je traiterai ici + d'ext4, puisque c'est le plus récent.) Il dispose de toutes les + fonctions que l'on peut attendre d'un système de fichiers moderne, ni + plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, + acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite + "par extent", ce qui signifie que la création d'un fichier réserve + automatiquement les zones contiguës de façon a réduire la fragmentation.</p> +</li> +<li> +<p>ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) + programmeur Hans Reiser, est a retenir pour avoir été le premier système + de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des + 4 milliards. Le but de ce système est de créer un système polyvalent, a + la fois système de fichiers et base de donnée (de part sa grande + capacité en terme de nombre de fichiers et de l'utilisation d'un + journal.)</p> +</li> +<li> +<p>Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi + l'allocation par extent, mais possède de plus un système de + sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers + montées en même temps (système pratique et utile pour faire des + snapshots de systèmes.). Il permet aussi de redimensionner a chaud la + taille des partitions, en les agrandissant ou en les rétrécissant, est + compatible avec <a href="http://fr.wikipedia.org/wiki/LVM">LVM</a>, a un système de checking intégré (btrfsck), et + utilise un algorithme de compression appelé LZ4, qui accélère les accès + aux fichiers compressés d'environ 30% par rapport a LZO, le système + utilisé dans ext4.</p> +</li> +<li> +<p>HFS+ : le système de fichier présent sur tous les macs a des capacités + relativement standards, et ressemble énormément a l'ext3. Il supporte + cependant les liens directs vers les dossiers, fonction rare sur les + systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau + dans les années a venir</p> +</li> +<li> +<p>ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux + et *BSD, est, tel Btrfs, a la fois un système de fichier et un + remplaçant/compatible avec LVM, C'est un système de fichiers conçu + principalement pour les serveurs, et il intègre ainsi un système de + redondance des données pour éviter les corruptions, un mode RAID-Z + (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, + etc...</p> +</li> +</ul> +<p>Comme on a pu le voir, les systèmes de fichiers disponibles sont +légions. Cependant, le plus adapté a Linux et a une utilisation grand +public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier +n'est pas aujourd'hui proposé par défaut sur les distributions les plus +utilisées, au profit de l'ext4, qui commence a accuser son âge...</p> +<p>Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au +fonctionnement du système, sont en fait de première importance, et ce +choix ne devrait pas être laissé au hasard, et être mis a jour +régulièrement (pour éviter les failles de sécurité...)</p> +<p>Bon courage, et bon choix pour votre prochain système.</p>WxcafeTue, 25 Sep 2012 10:28:00 +0200tag:,2012-09-25:home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/Les différentes couches d'un système d'exploitationfile:///home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/<p>Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques +années (plus ou moins, parce que j'ai toujours un Windows en dual boot, +principalement pour les jeux (possiblement plus pour longtemps, avec +l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou +moins bien mon système. Or il y a plusieurs choses a savoir sur les +systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est +le système de couches.</p> +<p>Un système d'exploitation (de type UNIX, \&lt;troll>enfin un vrai système quoi. +\&lt;/troll>) incorpore plusieurs systèmes de couches.</p> +<p>Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique, +c'est a dire que tous les composants sont intégrés au kernel. Ce qui +signifie que rien ne peut être ajouté au noyau sans recompiler celui ci. +Or, quand on sait que le noyau comprend entre autres les drivers du +matériel et des systèmes de fichier, cela peut poser des problèmes quand +a la taille du kernel et a la licence libre de ce dernier. </p> +<p>Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui +signifie que des modules peuvent être chargé a tout moment en cours +d’exécution, ce qui permet l'utilisation de nouveaux systèmes de +fichiers a chaud, ou l'insertion de matériel et l'installation de +drivers sans interrompre l’exécution du système (Windows utilise un +système de fausse installation de drivers pour le matériel externe, et +un système de pré-installation des drivers pour les périphériques dits +"plug and play")</p> +<p>Après le noyau intervient le système. Or, au tous premiers instants du +boot, les systèmes GNU/Linux utilisent un système permettant de limiter +l'utilisation de ressources systèmes si elles ne sont pas nécessaires, +et incorpore ainsi un système dit de "runlevels"</p> +<p>Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce +runlevel permet de tester le bon démarrage du système sans avoir a +effectuer de manipulation pour le ré-éteindre</p> +<p>Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté +étant donné que ce runlevel donne accès a un système en étant +automatiquement loggé en tant que root, avec tous les autres +utilisateurs désactivés, de même que tous les systèmes de réseaux</p> +<p>Le runlevel 2 est appelé mode multi user, et vous mets en face d'un +système classique. en ligne de commande, mais avec tous les systèmes de +réseau désactivés.</p> +<p>Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux +activés.</p> +<p>Le runlevel 4 n'est pas officiellement défini, et est censé être +activable en fonction des besoins de l'utilisateur. Sur la plupart des +distributions grand public, ce runlevel est lié au...</p> +<p>Runlevel 5! Multi-user, networking, with working GUI! c'est le système +tel que vous le connaissez, avec l'interface graphique et le système de +login graphique.</p> +<p>Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine +quand il devient le runlevel courant.</p> +<p>(Il est a noter que Debian, et donc toutes les distribs qui en sont +dérivées, ne font pas de distinction entre les differents runlevels du 2 +au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login +et une interface graphique, et un mode réseau fonctionnel, bref avec des +fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)</p> +<p>Il est possible de changer de runlevel grâce a la commande runlevel +(oui, c'est évident...)</p> +<p>Les systèmes Linux utilisent aussi un système dit de SandBox , qui en +informatique est un système permettant d'isoler les processus les uns +des autres. Ainsi, la pile réseau, qui est le système auquel les +différents processus envoient les différents paquets qui doivent sortir +de la machine , et qui redistribue ces paquets, est isolée du reste du +système, en cela qu'aucun des autres processus ne peuvent modifier cette +pile hors du runlevel 1 ou 2.</p> +<p>De la même façon, le navigateur chrom/ium fait fonctionner tous les +onglets, ainsi que toutes les extensions, dans des processus différents. +Certaines distributions linux implémentent un système de cette sorte +pour toutes les applications, ou seulement pour certaines. ainsi Chakra +Linux a un système d'installation d'applications dans des disques +virtuels, ce qui permet une sécurité totale du processus.</p> +<p>Voila, j'espère vous en avoir appris un peu sur le fonctionnement des +différentes couches de linux, et j'espère que cet article vous poussera +a tester un peu votre système et a vous amuser avec les différents +runlevels</p>WxcafeThu, 06 Sep 2012 23:29:00 +0200tag:,2012-09-06:home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/La programmation expliquée simplementfile:///home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/<p>Salut!<br /> +Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire +récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé +pas mal de temps assez occupé. </p> +<p>Enfin, après un certain temps a farfouiller au millieu des connecteurs +SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques +durs, je suis de retour pour un court article.<br /> +Du coup, je m'étais dit que j'allais reprendre sur le thème de +l'informatique expliquée au grand public, en tentant d'aller un peu plus +loin que la dernière fois sur le thème de la programmation<br /> +Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur. +Si a peu près tout le monde sait que "les ordinateurs, ils ne +comprennent que les 1 et les 0!", peu de gens savent comment cela +fonctionne en détail. </p> +<p>Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà +des notions de base en informatique. Ainsi, vous savez surement que les +ordinateurs fonctionnent avec des programmes, qui sont composés de +code.<br /> +Ainsi, il faut comprendre que le code (source) est "compilé" en un +fichier "binaire". Un fichier binaire est un fichier comprenant les +instructions telles qu’exécutées par le processeur, et donc absolument +illisible pour un humain. </p> +<p>La compilation est le processus qui transforme le code source en +binaire executable. Les binaires ont, sous Windows, l'extension .exe, +tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension +particulière.<br /> +Ceci étant dit, il faut comprendre que certains langages sont plus +proches que d'autres du langage processeur, les langages les plus +proches sont dits de "bas niveau". Les langages les plus éloignés sont +donc dits de haut niveau. </p> +<p>Par exemple, l'assembleur est l'un des languages de plus bas niveau, +tandis que python par exemple est un langage de plus haut niveau. Les +langages de haut niveau sont souvent bien plus simples a comprendre et a +apprendre que les langages de bas niveau </p> +<p>Ainsi, en C, un langage de niveau relativement bas, pour afficher +"hello world" sur l'écran, le code nécessaire est :</p> +<div class="highlight"><pre><span class="cp">#include </span> +<span class="kt">void</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> +<span class="n">printf</span><span class="p">(</span><span class="s">&quot;hello world&quot;</span><span class="p">);</span> +<span class="k">return</span> <span class="mi">0</span><span class="p">;</span> +<span class="p">}</span> +</pre></div> + + +<p>le même programme en python s'écrit :</p> +<div class="highlight"><pre><span class="n">print</span> <span class="s">&quot;hello world&quot;</span> +</pre></div> + + +<p>et n'a pas besoin d'être compilé , puisqu'il peut être intepreté +directement. </p> +<p>Python utilise en effet un système similaire a Java en ayant un +interpréteur dit "runtime" ou "temps réel", qui interprète le programme +sans le compiler. Java utilise un système légèrement différent, puisque +le code a besoin d'être compilé, mais est interpreté par un interpréteur +et non par le processeur. </p> +<p>Cette méthode permet le fameux "code once, run everywhere", ce qui +signifie que le même code est exécutable sur quasiment tous les systèmes +d'exploitation (en fait, tous ceux sur lesquels l’interpréteur est +disponible.)</p> +<p>Voila, je vous laisse sur le fonctionnement de Java et de Python, et je +vais me coucher.<br /> +A bientôt!</p>WxcafeMon, 27 Aug 2012 00:22:00 +0200tag:,2012-08-27:home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mèrefile:///home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/<p>GNU/Linux est un vaste et extraordinaire territoire technologique, mais +je ne vais pas m'attarder ici sur les aspects profondément techniques de +ce territoire pour faire plutôt une sorte d'introduction a ce qu'est +vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de +connaissances en informatique.</p> +<p>GNU/Linux, que j’abrégerai ici en Linux pour plus de simplicité, est un +Système d'Exploitation. Un système d'exploitation est, pour simplifier, +un ensemble d'outils informatiques qui vous permettent d'utiliser votre +ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation +de système d'exploitation (Operating System en anglais) est OS. Les 4 +principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et +Solaris. Les trois derniers sont issus d'un autre système, plus ancien, +nommé UNIX.</p> +<p>De ce fait, on pourrait penser que Linux remplace complètement Windows +une fois installé, et comprend une interface graphique, et toutes sortes +d'utilitaires permettant a l'utilisateur d'utiliser le système (sous +Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer. +Pour l'interface graphique, pensez a... Pensez que votre système affiche +autre chose que des lignes de commande.) Or non, une fois installé, +Linux en lui même ne vous afficherait aucune interface graphique, et +s'il est effectivement livré avec des utilitaires, ils ne sont que des +programmes en ligne de commande. Autant les utilisateurs avancés sauront +s'en servir, et pourront argumenter que c'est plus efficace ou plus +rapide, autant les utilisateurs basiques préfèrent une interface +graphique. Alors comment en obtenir une?</p> +<p>Ici, il convient de faire une précision importante. Si il n'existe +qu'une seule version de Windows, ou de Mac OS, il existe en fait +plusieurs centaines de "versions" différentes de Linux. Appelées +distributions, ces dernière sont développées par des groupes +complètement séparés, et se basent sur le fait que Linux soit +entièrement placé sous licence libre (ce qui leur permet de l'utiliser a +leur guise, a condition que leur travail soit lui aussi placé sous +licence libre). De ce fait, de nombreuses distributions existent et se +développent en parallèle. On peut ainsi citer <a href="http://debian.org">Debian</a>, qui est l'une +des distributions les plus importantes, ou encore <a href="http://ubuntu.com">Ubuntu</a>, qui est +l'une des plus connues et des plus simples a utiliser.</p> +<p>Ainsi, ces distributions intègrent une interface graphique. Cependant, +grâce a la liberté dont bénéficient les développeurs sous Linux, il +existe de nombreuses interfaces graphiques différentes : <a href="unity.ubuntu.com">Unity</a>, la +nouvelle interface d'Ubuntu; <a href="gnome.org">GNOME</a> , une interface qui vise a la +simplicité; ou encore <a href="http://kde.org/">KDE</a>, une interface utilisateur ressemblant a +Windows 7.</p> +<p>Ainsi, le choix astronomique de distributions Linux a bien un sens : +chacune d'entre elle intègre des outils différents. Par exemple, Debian +intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend +particulièrement stable. Ubuntu intègre Unity, ce qui en fait une +distribution particulièrement intuitive. Linux Mint intègre Cinnamon, +qui est une version dérivée de GNOME 3, ce qui permet encore une autre +expérience. Et Arch Linux n'intègre pas d'interface graphique du tout, +ce qui permet a l'utilisateur de choisir entre les multiples interfaces +existantes.</p> +<p>Ce qu'il est important de retenir de cela, c'est que Linux est un OS +complètement libre, ce qui signifie que n'importe qui peut modifier et +utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi, +Linux est un OS qui est véritablement créé par des passionnés, pour tous +et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué +a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus. +Cependant, Linux donne la possibilité a l'utilisateur de le rendre +affreusement complexe, mais aussi de le rendre adapté a ses besoins, +quels que soient ceux ci. Et c'est la que réside l'incroyable puissance +de ce Système d'Exploitation. Il est extraordinairement adaptable.</p> +<p>N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas +technophiles. Ils pourraient adorer, et peut être même le devenir :)</p> +<p>A bientôt!</p>WxcafeWed, 22 Aug 2012 20:33:00 +0200tag:,2012-08-22:home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/ \ No newline at end of file diff --git a/output/feeds/feed.rss.tutorial.xml b/output/feeds/feed.rss.tutorial.xml new file mode 100644 index 0000000..dd04f48 --- /dev/null +++ b/output/feeds/feed.rss.tutorial.xml @@ -0,0 +1,368 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/Fri, 07 Nov 2014 13:04:00 +0100OpenSMTPd comme serveur mail sous debianfile:///home/wxcafe/code/blog-source/output/posts/opensmtpd-debian/<p>J'avais dit il y a un certain temps que j'allais écrire un tutoriel expliquant +comment gérer ses mails soi-même. Il se trouve que j'ai récemment décidé de +changer le serveur qui héberge (entre autres) ce blog, et que ce dernier héberge +aussi mes emails. J'ai donc totalement changé d'infrastructure quand a la +gestion de mon système de mails.</p> +<p>Ainsi, j'ai décidé de passer de Postfix a OpenSMTPd, changement que je voulais +effectuer depuis un certain temps. <a href="https://opensmtpd.org">OpenSMTPd</a> est un +projet originaire d'<a href="http://openbsd.org">OpenBSD</a> qui a pour but de fournir un +serveur SMTP fiable, simple, rapide, et surtout sécurisé (les même buts que ceux +qu'a le projet OpenBSD, globalement).</p> +<p>Pour rappel, le système d'emails fonctionne d'une façon très simple : votre MUA +(Mail User Agent, ou client email) contacte le MTA (Mail Transport Agent, ou +serveur SMTP) de votre fournisseur email, qui contacte le MTA du fournisseur du +destinataire, qui lui même contacte le MDA (Mail Delivery Agent) qui délivre le +mail au destinataire.</p> +<p>Si vous avez bien suivi, vous pouvez voir que je n'ai pas parlé de récupération +ni de lecture des mails. C'est pour une raison simple, qui est que ces taches +sont remplies par d'autres services encore (IMAP/POP pour la récupération depuis +le serveur, des yeux pour la lecture).</p> +<p>Or ce qui nous intéresse ici, ce n'est pas simplement d'envoyer et de recevoir +des emails mais bien aussi de pouvoir les récupérer et les lire, et c'est pour +ça que ce tutoriel ne parlera pas que d'OpenSMTPd mais aussi de +<a href="http://dovecot.org/">Dovecot</a> qui fait office de serveur IMAP et +<a href="http://www.ijs.si/software/amavisd/">amavis</a>/<a href="http://spamassassin.apache.org/">spamassassin</a> +pour filtrer les mails entrants et sortants. +Le schéma suivant explique la façon dont les mails sont gérés sur le système</p> +<div class="highlight"><pre> <span class="err">╭────────────────╮</span> <span class="err">╭──────────╮</span> + <span class="err">│╭──────────────</span><span class="o">&gt;</span><span class="err">│────</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">filter</span> <span class="err">───</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err">│</span> + <span class="n">mail</span> <span class="n">in</span> <span class="err">││</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">amavis</span> <span class="err">│</span> +<span class="err">───────────</span><span class="o">&gt;</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">───</span> <span class="n">from</span> <span class="n">filter</span><span class="o">&lt;</span><span class="err">───│</span><span class="o">&lt;</span><span class="err">╯</span> <span class="err">│</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╰──────────╯</span> + <span class="n">mail</span> <span class="n">out</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╭──────────╮</span> +<span class="o">&lt;</span><span class="err">───────────│</span><span class="o">&lt;</span><span class="err">────────────┴─</span><span class="o">&gt;</span><span class="err">│─────</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">MDA</span> <span class="err">─────</span><span class="o">&gt;</span><span class="err">│─────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">user</span><span class="err">&#39;</span><span class="n">s</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">dovecot</span> <span class="err">│</span> <span class="n">mailbox</span> + <span class="err">╰────────────────╯</span> <span class="err">╰──────────╯</span> +</pre></div> + + +<p>Normalement, ceci devrait être a peu près clair. +Pour expliquer vite fait, les emails entrants (venant des utilisateurs mais +aussi d'autres correspondants) sont transmis a OpenSMTPd, qui envoie tout a +<code>amavis</code>, qui vérifie a la fois les spams et les malwares pour les mails +venants de l'exterieur, et qui signe avec DKIM pour les mails venants de +nos utilisateurs, puis qui rentransmet les mails filtrés/signés a OpenSMTPd, +qui a ce moment-ci trie en fonction de la destination : les mails gérés +par le domaine vont via dovecot dans les boites mail des destinataires +locaux, les mails exterieurs vont directement vers le MTA du serveur +distant.</p> +<p>Voyons comment mettre cela en place. Tout d'abord, il faut décider de la façon +dont les différents services vont communiquer.</p> +<p>Déjà, amavis étant configuré par défaut pour écouter (en SMTP) sur le port +10024 et répondre sur le port 10025 quand il s'agit de filtrer et +écouter sur le port 10026 et répondre sur le port 10027 quand il s'agit de +signer, nous allons profiter de cette configuration et donc lui parler en SMTP +sur ces ports.</p> +<p>Quand a Dovecot, nous allons lui transmettre les emails en LMTP (Local Mail +Transfer Protocol), non pas sur un port mais via un socket (dans ce cas précis, +<code>/var/run/dovecot/lmtp</code>).</p> +<p>Ainsi, pour reprendre le schéma présenté plus haut :</p> +<div class="highlight"><pre> <span class="err">╭───────────────╮</span> <span class="err">╭───────────╮</span> + <span class="err">│╭─────────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10026</span><span class="p">)</span> <span class="err">──</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err">│</span> + <span class="n">SMTP</span> <span class="n">in</span> <span class="err">││</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">amavis</span> <span class="err">│</span> +<span class="err">────────</span><span class="o">&gt;</span> <span class="mi">25</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">──</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10027</span><span class="p">)</span> <span class="o">&lt;</span><span class="err">──│</span><span class="o">&lt;</span><span class="err">╯</span> <span class="p">(</span><span class="n">sign</span><span class="p">)</span> <span class="err">│</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╰───────────╯</span> + <span class="n">SMTP</span> <span class="n">out</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> +<span class="mi">25</span> <span class="o">&lt;</span><span class="err">────────│</span><span class="o">&lt;</span><span class="err">───────────╯</span> <span class="err">│</span> + <span class="err">╰───────────────╯</span> +</pre></div> + + +<p>Pour les mails sortants; et</p> +<div class="highlight"><pre> <span class="err">╭───────────────╮</span> <span class="err">╭────────────╮</span> + <span class="err">│╭─────────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10024</span><span class="p">)</span> <span class="err">──</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err">│</span> + <span class="n">SMTP</span> <span class="n">in</span> <span class="err">││</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">amavis</span> <span class="err">│</span> +<span class="err">────────</span><span class="o">&gt;</span> <span class="mi">25</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">──</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10025</span><span class="p">)</span> <span class="o">&lt;</span><span class="err">──│</span><span class="o">&lt;</span><span class="err">╯</span><span class="p">(</span><span class="n">filter</span><span class="p">)</span> <span class="err">│</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╰────────────╯</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╭────────────╮</span> + <span class="err">│</span> <span class="err">╰─</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">LMTP</span> <span class="p">(</span><span class="n">socket</span><span class="p">)</span> <span class="err">─</span><span class="o">&gt;</span><span class="err">│───────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">user</span><span class="err">&#39;</span><span class="n">s</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">dovecot</span> <span class="err">│</span> <span class="n">mailbox</span> + <span class="err">╰───────────────╯</span> <span class="err">╰────────────╯</span> +</pre></div> + + +<p>Pour les mails entrants.</p> +<p>Maintenant que la théorie est claire, mettons en place tout cela. Je me baserai +ici sur le fait que vous utilisiez une plateforme Debian ou OpenBSD. Pour +d'autres plateformes, la configuration devrait être sensiblement la même</p> +<p>(Vous aurez besoin de certificats SSL pour ce guide, même self-signés. +Si vous ne savez pas comment en créer, vous pouvez aller voir <a href="http://wxcafe.net/posts/05/30/14/SSL-ou-la-securite-sur-internet/">ce +post</a>)</p> +<p>Tout d'abord, commençons par installer les programmes nécessaires :</p> +<div class="highlight"><pre><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">opensmtpd</span> <span class="n">dovecot</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">pigeonhole</span> <span class="n">amavisd</span><span class="o">-</span><span class="n">new</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">managesieved</span> +<span class="n">sudo</span> <span class="n">pkg_add</span> <span class="n">dovecot</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">pigeonhole</span> <span class="n">amavisd</span><span class="o">-</span><span class="n">new</span> +</pre></div> + + +<p>Continuons en configurant OpenSMTPd tel que nous avons vu plus haut :</p> +<p><code>/etc/smtpd.conf</code></p> +<div class="highlight"><pre><span class="err">#</span> <span class="nx">This</span> <span class="nx">is</span> <span class="nx">the</span> <span class="nx">smtpd</span> <span class="nx">server</span> <span class="nx">system</span><span class="na">-wide</span> <span class="nx">configuration</span> <span class="nx">file.</span> +<span class="err">#</span> <span class="nx">See</span> <span class="nx">smtpd.conf</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="nb">for</span> <span class="nx">more</span> <span class="nx">information.</span> + +<span class="err">##</span> <span class="nx">Certs</span> +<span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nx">certificate</span> <span class="s2">&quot;/etc/certs/exem.pl.crt&quot;</span> +<span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">key</span> <span class="s2">&quot;/etc/certs/exem.pl.key&quot;</span> + +<span class="err">##</span> <span class="nx">Ports</span> <span class="k">to</span> <span class="nb">listen</span> <span class="k">on</span><span class="p">,</span> <span class="ow">and</span> <span class="nx">how</span> <span class="k">to</span> <span class="nb">listen</span> <span class="k">on</span> <span class="nx">them</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">25</span> <span class="nx">tls</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span><span class="na">-optional</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">465</span> <span class="nx">tls</span><span class="na">-require</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span> <span class="nx">mask</span><span class="na">-source</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">587</span> <span class="nx">tls</span><span class="na">-require</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span> <span class="nx">mask</span><span class="na">-source</span> + +<span class="err">##</span> <span class="nx">Aliases</span> +<span class="nb">table</span> <span class="nx">aliases</span> <span class="nb">file</span><span class="p">:/</span><span class="nx">etc</span><span class="p">/</span><span class="nx">aliases</span> + +<span class="err">#</span> <span class="nx">coming</span> <span class="nb">from</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nb">checked</span> <span class="nb">for</span> <span class="nx">spam</span><span class="p">/</span><span class="nx">malware</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">lo</span> <span class="nb">port</span> <span class="mi">10025</span> <span class="kt">tag</span> <span class="nx">Filtered</span> +<span class="err">#</span> <span class="nx">coming</span> <span class="nb">from</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">signed</span> <span class="k">with</span> <span class="nx">DKIM</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">lo</span> <span class="nb">port</span> <span class="mi">10027</span> <span class="kt">tag</span> <span class="nx">Signed</span> + +<span class="err">##</span> <span class="nx">Receiving</span> +<span class="err">#</span> <span class="k">if</span> <span class="nx">the</span> <span class="p">(</span><span class="nx">incoming</span><span class="p">)</span> <span class="nx">mail</span> <span class="nx">has</span> <span class="nx">been</span> <span class="nx">through</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">then</span> <span class="nx">we</span> <span class="nx">can</span> <span class="nx">deliver</span> <span class="nx">it</span> +<span class="nb">accept</span> <span class="nx">tagged</span> <span class="nx">Filtered</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">alias</span> <span class="o">&lt;</span><span class="nx">aliases</span><span class="o">&gt;</span> <span class="nx">deliver</span> <span class="k">to</span> <span class="nx">lmtp</span> <span class="s2">&quot;/var/run/dovecot/lmtp&quot;</span> +<span class="err">#</span> <span class="nx">we</span> <span class="nx">directly</span> <span class="nx">tranfer</span> <span class="nx">incoming</span> <span class="nx">mail</span> <span class="k">to</span> <span class="nx">amavisd</span> <span class="k">to</span> <span class="nx">be</span> <span class="nb">checked</span> +<span class="nb">accept</span> <span class="nb">from</span> <span class="nb">any</span> <span class="nb">for</span> <span class="nx">domain</span> <span class="s2">&quot;exem.pl&quot;</span> <span class="nx">relay</span> <span class="nx">via</span> <span class="s2">&quot;smtp://localhost:10024&quot;</span> +<span class="err">#</span> <span class="nx">we</span> <span class="nx">have</span> <span class="k">to</span> <span class="nx">put</span> <span class="nx">these</span> <span class="n">lines</span> <span class="k">in</span> <span class="nx">this</span> <span class="k">order</span> <span class="k">to</span> <span class="nx">avoid</span> <span class="nx">infinite</span> <span class="nx">loops</span> + +<span class="err">##</span> <span class="nx">Sending</span> +<span class="err">#</span> <span class="k">if</span> <span class="nx">the</span> <span class="p">(</span><span class="nx">outgoint</span><span class="p">)</span> <span class="nx">mail</span> <span class="nx">has</span> <span class="nx">been</span> <span class="nx">through</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">then</span> <span class="nx">we</span> <span class="nx">can</span> <span class="nx">deliver</span> <span class="nx">it</span> +<span class="nb">accept</span> <span class="nx">tagged</span> <span class="nx">Signed</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">relay</span> +<span class="err">#</span> <span class="nx">we</span> <span class="nx">tranfer</span> <span class="nx">the</span> <span class="nx">outgoing</span> <span class="nx">mail</span> <span class="k">to</span> <span class="nx">amavisd</span> <span class="k">to</span> <span class="nx">be</span> <span class="nx">signed</span> +<span class="nb">accept</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">relay</span> <span class="nx">via</span> <span class="s2">&quot;smtp://localhost:10026&quot;</span> +<span class="err">#</span> <span class="nx">same</span><span class="p">,</span> <span class="nx">we</span> <span class="nx">have</span> <span class="k">to</span> <span class="nx">put</span> <span class="nx">these</span> <span class="n">lines</span> <span class="k">in</span> <span class="nx">this</span> <span class="k">order</span> <span class="ow">or</span> <span class="nx">infinite</span> <span class="nx">loops...</span> +</pre></div> + + +<p>Expliquons un peu ce fichier de configuration :</p> +<ul> +<li>Tout d'abord, le paragraphe nommé "Certs" contient les déclaration + d'emplacement des certificats SSL.</li> +<li>Ensuite, le paragraphe contenant les ports externes sur lesquels nous écoutons : + port 25 avec TLS optionel et ports 465 et 587 avec TLS obligatoire</li> +<li>Les alias sont définis juste après</li> +<li>Le paragraphe suivant contient les ports locaux sur lesquels nous écoutons : + 10025 (port de sortie du filtre de amavis) dont on taggue les mails sortants + comme "Filtered" et 10027 (port de sortie des mails signés par amavis) dont on + taggue les mails sortants comme "Signed"</li> +<li>Nous avons ensuite le paragraphe qui traite les mails rentrants. Si le mail + traité est taggué comme Filtered, alors il a été vérifié par amavis, et on + peut donc le transmettre au destinataire. Sinon, c'est qu'il n'a pas encore + été vérifié par amavis, donc on lui transmet pour analyse (sur le port 10024 + donc). Il est important de mettre les déclarations dans ce sens, car la + première règle qui matche l'état du paquet est appliquée. Ici, la deuxième + ligne matchant tous les mails arrivant et la première seulement ceux filtrés, + inverser leur sens voudrait dire que les mails seraient toujours renvoyés a + amavis</li> +<li>Enfin, le dernier paragraphe traite les mails sortants. De la même façon que + pour le paragraphe précédent, si le mail sortant est déjà taggué comme Signed + on le transmet au MTA du destinataire, sinon il n'a pas encore été signé par + DKIM par amavis et on le transmet donc a amavis pour qu'il le signe. Le + problème de l'ordre des lignes se pose encore, pour la même raison qu'au + dessus.</li> +</ul> +<p>Nous allons maintenant configurer dovecot. Comme nous l'avons vu, dovecot doit +écouter en LMTP via la socket <code>/var/run/dovecot/lmtp</code> et transmettre les +emails a la boite email de l'utilisateur. Il serait aussi interessant +qu'il nous permette de récuperer les mails. Pour cette configuration, on ne +mettra en place que du IMAPS. Cependant, si vous voulez mettre en place du +POP3[s], différents guides sont trouvables facilement sur internet.</p> +<p><code>/etc/dovecot/dovecot.conf</code></p> +<div class="highlight"><pre><span class="cp">## Dovecot configuration file</span> + +<span class="cp"># basic config</span> +<span class="n">info_log_path</span> <span class="o">=</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">dovecot</span><span class="o">-</span><span class="n">info</span><span class="p">.</span><span class="n">log</span> +<span class="n">log_path</span> <span class="o">=</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">dovecot</span><span class="p">.</span><span class="n">log</span> +<span class="n">log_timestamp</span> <span class="o">=</span> <span class="s">&quot;%Y-%m-%d %H:%M:%S &quot;</span> +<span class="n">mail_location</span> <span class="o">=</span> <span class="n">maildir</span><span class="o">:%</span><span class="n">h</span><span class="o">/</span><span class="n">mail</span> + +<span class="cp"># authentication</span> +<span class="n">passdb</span> <span class="p">{</span> + <span class="n">driver</span> <span class="o">=</span> <span class="n">pam</span> +<span class="p">}</span> +<span class="n">userdb</span> <span class="p">{</span> + <span class="n">driver</span> <span class="o">=</span> <span class="n">passwd</span> +<span class="p">}</span> + +<span class="cp"># the protocols we use</span> +<span class="n">protocols</span> <span class="o">=</span> <span class="n">imap</span> <span class="n">lmtp</span> <span class="n">sieve</span> + +<span class="cp"># ssl config</span> +<span class="n">ssl_cert</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span><span class="p">.</span><span class="n">cert</span> +<span class="n">ssl_key</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span><span class="p">.</span><span class="n">key</span> +<span class="n">ssl_cipher_list</span> <span class="o">=</span> <span class="n">HIGH</span><span class="o">+</span><span class="n">kEDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">+</span><span class="n">kEECDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">:!</span><span class="n">PSK</span><span class="o">:!</span><span class="n">SRP</span><span class="o">:!</span><span class="mi">3</span><span class="n">DES</span><span class="o">:!</span><span class="n">aNULL</span> +<span class="n">ssl</span> <span class="o">=</span> <span class="n">yes</span> + +<span class="cp">## configuring services </span> +<span class="cp"># disables imap login without SSL (yes dovecot is dumb that way)</span> +<span class="n">service</span> <span class="n">imap</span><span class="o">-</span><span class="n">login</span> <span class="p">{</span> + <span class="n">inet_listener</span> <span class="n">imap</span> <span class="p">{</span> + <span class="n">port</span><span class="o">=</span><span class="mi">0</span> + <span class="p">}</span> +<span class="p">}</span> + +<span class="n">service</span> <span class="n">lmtp</span> <span class="p">{</span> + <span class="n">unix_listener</span> <span class="n">lmtp</span> <span class="p">{</span> + <span class="n">mode</span> <span class="o">=</span> <span class="mo">0666</span> + <span class="p">}</span> +<span class="p">}</span> + +<span class="cp">## configuring protocols</span> +<span class="cp"># the dovecot lda, we set it to use sieve</span> +<span class="n">protocol</span> <span class="n">lda</span> <span class="p">{</span> + <span class="n">mail_plugins</span> <span class="o">=</span> <span class="err">$</span><span class="n">mail_plugins</span> <span class="n">sieve</span> +<span class="p">}</span> + +<span class="n">protocol</span> <span class="n">lmtp</span> <span class="p">{</span> + <span class="n">postmaster_address</span> <span class="o">=</span> <span class="n">whoever</span><span class="err">@</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span> + <span class="n">mail_plugins</span> <span class="o">=</span> <span class="err">$</span><span class="n">mail_plugins</span> <span class="n">sieve</span> +<span class="p">}</span> + +<span class="n">plugin</span> <span class="p">{</span> + <span class="n">sieve</span> <span class="o">=</span> <span class="o">~/</span><span class="p">.</span><span class="n">dovecot</span><span class="p">.</span><span class="n">sieve</span> + <span class="n">sieve_dir</span> <span class="o">=</span> <span class="o">~/</span><span class="n">sieve</span> +<span class="p">}</span> +</pre></div> + + +<p><strong>ATTENTION: Sous OpenBSD, remplacez</strong></p> +<div class="highlight"><pre><span class="n">passdb</span> <span class="p">{</span> + <span class="n">driver</span> <span class="o">=</span> <span class="n">pam</span> +<span class="p">}</span> +</pre></div> + + +<p><strong>par</strong></p> +<div class="highlight"><pre><span class="n">passdb</span> <span class="p">{</span> + <span class="n">driver</span> <span class="o">=</span> <span class="n">bsdauth</span> +<span class="p">}</span> +</pre></div> + + +<p><strong>pour identifier les utilisateurs système</strong></p> +<p>Ici aussi, voyons comment ce fichier est structuré :</p> +<ul> +<li>Tout d'abord, les configurations de base : ou iront les logs, comment formater + leur datation, et l'endroit ou seront stockés les mails des utilisateurs.</li> +<li>Nous configurons ensuite la gestion de l'authentification des utilisateurs. + Ici nous identifions les utilisateurs avec le fichier /etc/passwd et leurs + mots de passe avec PAM (ou BSDAuth)</li> +<li>Nous configurons ensuite les protocoles que nous servons. Ici, nous voulons de + l'IMAPS, du LMTP local et Sieve (qui sert pour trier les messages).</li> +<li>Nous configurons le SSL</li> +<li>Le section suivante contient la configuration des services. Nous avons en + premier lieu le service IMAP, dont la configuration sert uniquement a + désactiver IMAP. En effet, dovecot ne permet d'activer IMAPS qu'en activant + IMAP avec. Comme nous ne voulons pas d'IMAP sans SSL, nous le désactivons. + La configuration de lmtp sert a attribuer des permissions plus correctes au + fifo qu'il utilise</li> +<li>Nous configurons maintenant les protocoles, pour faire fonctionner Sieve</li> +<li>enfin, nous configurons le plugin sieve en lui indiquant quel fichier et + quel dossier utiliser pour sa configuration.</li> +</ul> +<p>Enfin, il nous reste a configurer amavis. Comme expliqué, amavis va nous servir +a deux choses : signer les emails sortants, et filtrer les emails entrants. Il +doit donc écouter sur les port 10026 pour les signatures et 10024 pour le +filtrage, et répondre respectivement sur les ports 10027 et 10025 (le tout, en +SMTP. Comme toutes les transactions se font sur le loopback, il n'y a aucun +risque a utiliser des protocoles non chiffrés. +Pour OpenBSD, pensez a copier la configuration par défaut depuis +<code>/usr/local/share/examples/amavisd-new/amavisd.conf</code> et ajoutez les +modifications nécessaires a la fin du fichier.</p> +<p><code>/etc/amavis/conf.d/99-local.conf</code> (debian) +<code>/etc/amavis.conf</code> (OpenBSD)</p> +<div class="highlight"><pre><span class="n">use</span> <span class="n">strict</span><span class="p">;</span> + +<span class="err">$</span><span class="n">enable_dkim_verification</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> +<span class="err">$</span><span class="n">enable_dkim_signing</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> +<span class="n">dkim_key</span><span class="p">(</span><span class="s">&quot;exem.pl&quot;</span><span class="p">,</span> <span class="s">&quot;main&quot;</span><span class="p">,</span> <span class="s">&quot;/etc/certs/dkim.key&quot;</span> <span class="p">);</span> + +<span class="err">@</span><span class="n">dkim_signature_options_bysender_maps</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">{</span> <span class="sc">&#39;.&#39;</span> <span class="o">=&gt;</span> + <span class="p">{</span> <span class="n">ttl</span> <span class="o">=&gt;</span> <span class="mi">21</span><span class="o">*</span><span class="mi">24</span><span class="o">*</span><span class="mi">3600</span><span class="p">,</span> <span class="n">c</span> <span class="o">=&gt;</span> <span class="err">&#39;</span><span class="n">relaxed</span><span class="o">/</span><span class="n">simple</span><span class="err">&#39;</span> <span class="p">}</span> + <span class="p">}</span> +<span class="p">);</span> + +<span class="err">$</span><span class="n">inet_socket_port</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10024</span><span class="p">,</span> <span class="mi">10026</span><span class="p">];</span> +<span class="err">$</span><span class="n">policy_bank</span><span class="p">{</span><span class="err">&#39;</span><span class="n">MYNETS</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">originating</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">os_fingerprint_method</span> <span class="o">=&gt;</span> <span class="n">undef</span><span class="p">,</span> +<span class="p">};</span> + +<span class="err">$</span><span class="n">interface_policy</span><span class="p">{</span><span class="err">&#39;</span><span class="mi">10026</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="err">&#39;</span><span class="n">ORIGINATING</span><span class="err">&#39;</span><span class="p">;</span> + +<span class="err">$</span><span class="n">policy_bank</span><span class="p">{</span><span class="err">&#39;</span><span class="n">ORIGINATING</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">originating</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">allow_disclaimers</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">virus_admin_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="s">&quot;root\@$mydomain&quot;</span><span class="p">],</span> + <span class="n">spam_admin_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="s">&quot;root\@$mydomain&quot;</span><span class="p">],</span> + <span class="n">warnbadhsender</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">forward_method</span> <span class="o">=&gt;</span> <span class="err">&#39;</span><span class="n">smtp</span><span class="o">:</span><span class="n">localhost</span><span class="o">:</span><span class="mi">10027</span><span class="err">&#39;</span><span class="p">,</span> + <span class="n">smtpd_discard_ehlo_keywords</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="err">&#39;</span><span class="mi">8</span><span class="n">BITMIME</span><span class="err">&#39;</span><span class="p">],</span> + <span class="n">bypass_banned_checks_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="mi">1</span><span class="p">],</span> + <span class="n">terminate_dsn_on_notify_success</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span> +<span class="p">};</span> + +<span class="cp">#------------ Do not modify anything below this line -------------</span> +<span class="mi">1</span><span class="p">;</span> <span class="err">#</span> <span class="n">ensure</span> <span class="n">a</span> <span class="n">defined</span> <span class="k">return</span> +</pre></div> + + +<p>A nouveau, expliquons ce fichier : +- le premier paragraphe définit que nous voulons qu'amavis signe les emails + sortants, vérifie la signature DKIM des emails rentrants, et l'endroit ou se + trouve la clé privée servant a signer les emails. +- le second définit les options DKIM que nous souhaitons utiliser comme défaut. + Je vous invite a consulter la <a href="https://tools.ietf.org/html/rfc4871">RFC 4871</a> +- nous définissons ensuite les ports sur lesquels nous allons écouter, puis les + paramètres que nous utiliserons pour les emails venant de nos utilisateurs : + ils seront traités comme "originating" et nous ne vérifierons pas l'OS duquel + ils viennent. +- nous savons que les emails venants du port 10026 sont sortants, nous les + traitons donc comme tel +- le paragraphe suivant décrit le traitement que nous faisons subir aux emails + sortants : tout d'abord, nous réaffirmons qu'ils viennent bien de notre + serveur. Nous autorisons les disclaimers (voire encore une fois la <a href="https://tools.ietf.org/html/rfc4871">RFC + 4871</a>. Nous déclarons l'adresse a + prévenir en cas de spam/virus venants de notre système, et que nous voulons + être prévenus. Nous déclarons ou envoyer les mails une fois signés et filtrés, + puis qu'il est nécessaire de convertir les emails au format 7 bits avant de + les envoyer au MTA, que nous autorisons tous les types et noms de fichiers, et + les notifications de succès d'envoi. Et voila!</p> +<p>Vous avez pu remarquer qu'a aucun moment nous ne configurions ni la signature +des emails sortants ni le filtrage des emails entrants. Ces paramètres sont en +fait inclus par défaut dans amavis.</p> +<p>Il nous reste cependant quelques opérations a faire, encore. +Tout d'abord, il nous faut générer notre clé DKIM. Pour cela, il existe +différentes méthodes, j'ai personnellement utilisé opendkim (<a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy">un +tutorial</a>) +mais de nombreuses autre méthodes existent. +Il nous reste encore a configurer spamassassin :</p> +<div class="highlight"><pre><span class="cp">#rewrite_header Subject *****SPAM*****</span> +<span class="cp"># report_safe 1</span> +<span class="n">required_score</span> <span class="mf">2.0</span> +<span class="cp"># use_bayes 1</span> +<span class="cp"># bayes_auto_learn 1</span> +<span class="cp"># bayes_ignore_header X-Bogosity</span> +<span class="cp"># bayes_ignore_header X-Spam-Flag</span> +<span class="cp"># bayes_ignore_header X-Spam-Status</span> +<span class="n">ifplugin</span> <span class="n">Mail</span><span class="o">::</span><span class="n">SpamAssassin</span><span class="o">::</span><span class="n">Plugin</span><span class="o">::</span><span class="n">Shortcircuit</span> +<span class="cp"># shortcircuit USER_IN_WHITELIST on</span> +<span class="cp"># shortcircuit USER_IN_DEF_WHITELIST on</span> +<span class="cp"># shortcircuit USER_IN_ALL_SPAM_TO on</span> +<span class="cp"># shortcircuit SUBJECT_IN_WHITELIST on</span> +<span class="cp"># shortcircuit USER_IN_BLACKLIST on</span> +<span class="cp"># shortcircuit USER_IN_BLACKLIST_TO on</span> +<span class="cp"># shortcircuit SUBJECT_IN_BLACKLIST on</span> +<span class="n">shortcircuit</span> <span class="n">ALL_TRUSTED</span> <span class="n">off</span> +<span class="cp"># shortcircuit BAYES_99 spam</span> +<span class="cp"># shortcircuit BAYES_00 ham</span> + +<span class="n">endif</span> <span class="err">#</span> <span class="n">Mail</span><span class="o">::</span><span class="n">SpamAssassin</span><span class="o">::</span><span class="n">Plugin</span><span class="o">::</span><span class="n">Shortcircuit</span> +</pre></div> + + +<p>Comme vous pouvez le voir, les modifications se résument globalement a baisser +le required_score pour ma part.</p> +<p>Pour finir, activez les services nécessaires : opensmtpd, dovecot, amavisd, et +spamassassin, et tout devrait fonctionner parfaitement</p> +<p>Bon courage pour votre hosting de mail ensuite...</p>WxcaféFri, 07 Nov 2014 13:04:00 +0100tag:,2014-11-07:home/wxcafe/code/blog-source/output/posts/opensmtpd-debian/ \ No newline at end of file diff --git a/output/feeds/feed.teaching.xml b/output/feeds/feed.teaching.xml new file mode 100644 index 0000000..11639e3 --- /dev/null +++ b/output/feeds/feed.teaching.xml @@ -0,0 +1,344 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/2015-05-16T02:00:00+02:00SSL - STARTTLS2015-05-16T02:00:00+02:00Wxcafetag:,2015-05-16:home/wxcafe/code/blog-source/output/posts/ssl-starttls/<p>Le chiffrement SSL pour les services en ligne est un problème relativement +récent, par rapport a l&rsquo;histoire d&rsquo;Internet. Sa mise en place pose +problème : les protocoles existants ne s&rsquo;accommodent qu&rsquo;assez mal de recevoir +soudainement un flot de données chiffrées, mais développer de nouveaux +protocoles est complexe et n&rsquo;apporte rien d&rsquo;intéressant. Pour palier a ce +problème, deux solutions sont apparues.</p> +<p>Le première consiste à faire écouter les services sur un +autre port, dans un tunnel SSL. De cette façon, le service existant écoute +normalement, mais il ne répond pas directement aux requêtes. A la place, un +tunnel SSL est mis en place, et les requêtes et les réponses passent dans le +tunnel (ou elles apparaissent donc chiffrées pour l&rsquo;extérieur). Cela permet de +proposer un service chiffré en modifiant de façon minimale le programme, au prix +de devoir aussi changer tous les clients, et de devoir les orienter sur un autre +port.</p> +<p>L&rsquo;autre approche qui a été utilisée est une approche d&rsquo;<em>upgrade</em>. La +communication commence en mode non chiffré, puis le client demande l&rsquo;upgrade de +la connexion vers le mode chiffré s&rsquo;il le supporte, les deux machines +machines font un <em>handshake</em> SSL et la communication continue a travers le +tunnel SSL. Le service peut continuer a écouter sur son port habituel, et seuls +les clients capables de passer en SSL le feront, ce qui permet de faire la &ldquo;mise +a jour&rdquo; en douceur.</p> +<p>Il est souvent demandé quelle est la meilleure méthode pour mettre en place un +service &ndash; laisser un port pour le SSL et un pour le trafic non chiffré, ou bien +un seul, avec <code>STARTTLS</code>, qui <em>upgrade</em> les connexions si nécessaire.<br /> +La réponse est que <code>STARTTLS</code> est plus interessant, pour plusieurs raisons. Tout +d&rsquo;abord, il permet de n&rsquo;utiliser qu&rsquo;un seul port : ça permet de simplifier la +configuration du firewall. En plus de ça, il permet aux clients &ldquo;anciens&rdquo; (ceux +qui ne supportent pas SSL, donc ceux qui devraient être changés) de toujours se +connecter, même si cela signifie que leurs informations seront transmises en +clair. Surtout, il permet d&rsquo;éviter aux utilisateurs d&rsquo;avoir a configurer leurs +clients. Si le client supporte le chiffrement, il l&rsquo;activera de lui même s&rsquo;il +voit qu&rsquo;il est disponible.<br /> +Bref, mettez en place du <code>STARTTLS</code>, et pas du SSL. C&rsquo;est mieux pour la sécurité +de tout le monde.</p>Les systèmes de fichiers2012-09-25T10:28:00+02:00Wxcafetag:,2012-09-25:home/wxcafe/code/blog-source/output/posts/les-systemes-de-fichiers/<p>Un système de fichiers. Vous en avez surement déjà entendu parlé si vous +avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous +connaissez surement NTFS, EXT4, ou encore FAT32.</p> +<p>Ces différents noms désignent en effet des systèmes de fichiers. Mais +qu'est-ce qu'un système de fichiers?</p> +<p>Pour comprendre cela, il faut déjà savoir ce qu'est exactement un +fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la +plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio +(<a href="http://fr.wikipedia.org/wiki/Kibioctet#Multiples_normalis.C3.A9s">kibioctet</a>), en fonction du système de fichier utilisé.), qui est +donc composé de bits, interprétés différemment en fonction du type de +fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il +n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, +ou il commence ni où il s'arrête (je schématise un peu, mais c'est +l'idée). </p> +<p>Ainsi, le système de fichier donne un cadre et un standard à +l'arborescence des fichiers. Par exemple, le système de fichier ext4 +utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de +disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio +et mesurer la taille des fichiers en blocs de cette façon. Les systèmes +de fichiers nécessitent l'inclusion de drivers dans le noyau pour +pouvoir être pris en compte. </p> +<p>Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, +reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu +près tout type de partition récente.</p> +<p>Il convient de bien faire la différence entre le système de fichier et +l'arborescence des fichiers. Si l'arborescence des fichiers est en fait +une entité virtuelle englobant la racine / et tous les fichiers et +dossiers contenus dedans, le système de fichier permet a votre système +GNU/Linux de distinguer les différents fichiers composants cette +arborescence.</p> +<p>Détaillons maintenant les types de fichiers les plus répandus:</p> +<ul> +<li> +<p>FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, + soit la définition d'un système de fichier), remplissent leur rôle le + plus simplement possible. Ne permettant (historiquement) que des noms de + 8 caractères (plus extension de trois caractères), ni chiffrement, ni + système de distinction d'utilisateurs (DOS étant un système + mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, + utlisants respectivement des blocs de 16 et 32 Kio.</p> +</li> +<li> +<p>NTFS :. Le NTFS (pour New Technology File System, rapport a Windows + NT) est un système de fichier qui est apparu avec Windows XP, et qui + était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a + FAT différentes capacités dont le chiffrement, les liens symboliques, la + compression et les quotas pour les volumes, permettant de limiter la + taille maximum occupée dans une partition.</p> +</li> +<li> +<p>ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. + Ne différant pas énormément de NTFS, je le mentionne principalement + parce qu'il est prévu qu'il soit le défaut pour Windows 8. + Il apporte principalement la redondance, c'est a dire que chaque + fichier possède une somme de contrôle en 64 bits stockée dans un fichier + séparé pour éviter les corruption de disque.</p> +</li> +<li> +<p>Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers + les plus utilisés sous linux pour le grand public. (Je traiterai ici + d'ext4, puisque c'est le plus récent.) Il dispose de toutes les + fonctions que l'on peut attendre d'un système de fichiers moderne, ni + plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, + acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite + "par extent", ce qui signifie que la création d'un fichier réserve + automatiquement les zones contiguës de façon a réduire la fragmentation.</p> +</li> +<li> +<p>ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) + programmeur Hans Reiser, est a retenir pour avoir été le premier système + de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des + 4 milliards. Le but de ce système est de créer un système polyvalent, a + la fois système de fichiers et base de donnée (de part sa grande + capacité en terme de nombre de fichiers et de l'utilisation d'un + journal.)</p> +</li> +<li> +<p>Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi + l'allocation par extent, mais possède de plus un système de + sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers + montées en même temps (système pratique et utile pour faire des + snapshots de systèmes.). Il permet aussi de redimensionner a chaud la + taille des partitions, en les agrandissant ou en les rétrécissant, est + compatible avec <a href="http://fr.wikipedia.org/wiki/LVM">LVM</a>, a un système de checking intégré (btrfsck), et + utilise un algorithme de compression appelé LZ4, qui accélère les accès + aux fichiers compressés d'environ 30% par rapport a LZO, le système + utilisé dans ext4.</p> +</li> +<li> +<p>HFS+ : le système de fichier présent sur tous les macs a des capacités + relativement standards, et ressemble énormément a l'ext3. Il supporte + cependant les liens directs vers les dossiers, fonction rare sur les + systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau + dans les années a venir</p> +</li> +<li> +<p>ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux + et *BSD, est, tel Btrfs, a la fois un système de fichier et un + remplaçant/compatible avec LVM, C'est un système de fichiers conçu + principalement pour les serveurs, et il intègre ainsi un système de + redondance des données pour éviter les corruptions, un mode RAID-Z + (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, + etc...</p> +</li> +</ul> +<p>Comme on a pu le voir, les systèmes de fichiers disponibles sont +légions. Cependant, le plus adapté a Linux et a une utilisation grand +public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier +n'est pas aujourd'hui proposé par défaut sur les distributions les plus +utilisées, au profit de l'ext4, qui commence a accuser son âge...</p> +<p>Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au +fonctionnement du système, sont en fait de première importance, et ce +choix ne devrait pas être laissé au hasard, et être mis a jour +régulièrement (pour éviter les failles de sécurité...)</p> +<p>Bon courage, et bon choix pour votre prochain système.</p>Les différentes couches d'un système d'exploitation2012-09-06T23:29:00+02:00Wxcafetag:,2012-09-06:home/wxcafe/code/blog-source/output/posts/les-differentes-couches-dun-systeme-dexploitation/<p>Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques +années (plus ou moins, parce que j'ai toujours un Windows en dual boot, +principalement pour les jeux (possiblement plus pour longtemps, avec +l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou +moins bien mon système. Or il y a plusieurs choses a savoir sur les +systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est +le système de couches.</p> +<p>Un système d'exploitation (de type UNIX, \&lt;troll>enfin un vrai système quoi. +\&lt;/troll>) incorpore plusieurs systèmes de couches.</p> +<p>Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique, +c'est a dire que tous les composants sont intégrés au kernel. Ce qui +signifie que rien ne peut être ajouté au noyau sans recompiler celui ci. +Or, quand on sait que le noyau comprend entre autres les drivers du +matériel et des systèmes de fichier, cela peut poser des problèmes quand +a la taille du kernel et a la licence libre de ce dernier. </p> +<p>Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui +signifie que des modules peuvent être chargé a tout moment en cours +d’exécution, ce qui permet l'utilisation de nouveaux systèmes de +fichiers a chaud, ou l'insertion de matériel et l'installation de +drivers sans interrompre l’exécution du système (Windows utilise un +système de fausse installation de drivers pour le matériel externe, et +un système de pré-installation des drivers pour les périphériques dits +"plug and play")</p> +<p>Après le noyau intervient le système. Or, au tous premiers instants du +boot, les systèmes GNU/Linux utilisent un système permettant de limiter +l'utilisation de ressources systèmes si elles ne sont pas nécessaires, +et incorpore ainsi un système dit de "runlevels"</p> +<p>Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce +runlevel permet de tester le bon démarrage du système sans avoir a +effectuer de manipulation pour le ré-éteindre</p> +<p>Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté +étant donné que ce runlevel donne accès a un système en étant +automatiquement loggé en tant que root, avec tous les autres +utilisateurs désactivés, de même que tous les systèmes de réseaux</p> +<p>Le runlevel 2 est appelé mode multi user, et vous mets en face d'un +système classique. en ligne de commande, mais avec tous les systèmes de +réseau désactivés.</p> +<p>Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux +activés.</p> +<p>Le runlevel 4 n'est pas officiellement défini, et est censé être +activable en fonction des besoins de l'utilisateur. Sur la plupart des +distributions grand public, ce runlevel est lié au...</p> +<p>Runlevel 5! Multi-user, networking, with working GUI! c'est le système +tel que vous le connaissez, avec l'interface graphique et le système de +login graphique.</p> +<p>Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine +quand il devient le runlevel courant.</p> +<p>(Il est a noter que Debian, et donc toutes les distribs qui en sont +dérivées, ne font pas de distinction entre les differents runlevels du 2 +au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login +et une interface graphique, et un mode réseau fonctionnel, bref avec des +fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)</p> +<p>Il est possible de changer de runlevel grâce a la commande runlevel +(oui, c'est évident...)</p> +<p>Les systèmes Linux utilisent aussi un système dit de SandBox , qui en +informatique est un système permettant d'isoler les processus les uns +des autres. Ainsi, la pile réseau, qui est le système auquel les +différents processus envoient les différents paquets qui doivent sortir +de la machine , et qui redistribue ces paquets, est isolée du reste du +système, en cela qu'aucun des autres processus ne peuvent modifier cette +pile hors du runlevel 1 ou 2.</p> +<p>De la même façon, le navigateur chrom/ium fait fonctionner tous les +onglets, ainsi que toutes les extensions, dans des processus différents. +Certaines distributions linux implémentent un système de cette sorte +pour toutes les applications, ou seulement pour certaines. ainsi Chakra +Linux a un système d'installation d'applications dans des disques +virtuels, ce qui permet une sécurité totale du processus.</p> +<p>Voila, j'espère vous en avoir appris un peu sur le fonctionnement des +différentes couches de linux, et j'espère que cet article vous poussera +a tester un peu votre système et a vous amuser avec les différents +runlevels</p>La programmation expliquée simplement2012-08-27T00:22:00+02:00Wxcafetag:,2012-08-27:home/wxcafe/code/blog-source/output/posts/la-programmation-expliquee-simplement/<p>Salut!<br /> +Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire +récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé +pas mal de temps assez occupé. </p> +<p>Enfin, après un certain temps a farfouiller au millieu des connecteurs +SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques +durs, je suis de retour pour un court article.<br /> +Du coup, je m'étais dit que j'allais reprendre sur le thème de +l'informatique expliquée au grand public, en tentant d'aller un peu plus +loin que la dernière fois sur le thème de la programmation<br /> +Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur. +Si a peu près tout le monde sait que "les ordinateurs, ils ne +comprennent que les 1 et les 0!", peu de gens savent comment cela +fonctionne en détail. </p> +<p>Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà +des notions de base en informatique. Ainsi, vous savez surement que les +ordinateurs fonctionnent avec des programmes, qui sont composés de +code.<br /> +Ainsi, il faut comprendre que le code (source) est "compilé" en un +fichier "binaire". Un fichier binaire est un fichier comprenant les +instructions telles qu’exécutées par le processeur, et donc absolument +illisible pour un humain. </p> +<p>La compilation est le processus qui transforme le code source en +binaire executable. Les binaires ont, sous Windows, l'extension .exe, +tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension +particulière.<br /> +Ceci étant dit, il faut comprendre que certains langages sont plus +proches que d'autres du langage processeur, les langages les plus +proches sont dits de "bas niveau". Les langages les plus éloignés sont +donc dits de haut niveau. </p> +<p>Par exemple, l'assembleur est l'un des languages de plus bas niveau, +tandis que python par exemple est un langage de plus haut niveau. Les +langages de haut niveau sont souvent bien plus simples a comprendre et a +apprendre que les langages de bas niveau </p> +<p>Ainsi, en C, un langage de niveau relativement bas, pour afficher +"hello world" sur l'écran, le code nécessaire est :</p> +<div class="highlight"><pre><span class="cp">#include </span> +<span class="kt">void</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> +<span class="n">printf</span><span class="p">(</span><span class="s">&quot;hello world&quot;</span><span class="p">);</span> +<span class="k">return</span> <span class="mi">0</span><span class="p">;</span> +<span class="p">}</span> +</pre></div> + + +<p>le même programme en python s'écrit :</p> +<div class="highlight"><pre><span class="n">print</span> <span class="s">&quot;hello world&quot;</span> +</pre></div> + + +<p>et n'a pas besoin d'être compilé , puisqu'il peut être intepreté +directement. </p> +<p>Python utilise en effet un système similaire a Java en ayant un +interpréteur dit "runtime" ou "temps réel", qui interprète le programme +sans le compiler. Java utilise un système légèrement différent, puisque +le code a besoin d'être compilé, mais est interpreté par un interpréteur +et non par le processeur. </p> +<p>Cette méthode permet le fameux "code once, run everywhere", ce qui +signifie que le même code est exécutable sur quasiment tous les systèmes +d'exploitation (en fait, tous ceux sur lesquels l’interpréteur est +disponible.)</p> +<p>Voila, je vous laisse sur le fonctionnement de Java et de Python, et je +vais me coucher.<br /> +A bientôt!</p>GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère2012-08-22T20:33:00+02:00Wxcafetag:,2012-08-22:home/wxcafe/code/blog-source/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/<p>GNU/Linux est un vaste et extraordinaire territoire technologique, mais +je ne vais pas m'attarder ici sur les aspects profondément techniques de +ce territoire pour faire plutôt une sorte d'introduction a ce qu'est +vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de +connaissances en informatique.</p> +<p>GNU/Linux, que j’abrégerai ici en Linux pour plus de simplicité, est un +Système d'Exploitation. Un système d'exploitation est, pour simplifier, +un ensemble d'outils informatiques qui vous permettent d'utiliser votre +ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation +de système d'exploitation (Operating System en anglais) est OS. Les 4 +principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et +Solaris. Les trois derniers sont issus d'un autre système, plus ancien, +nommé UNIX.</p> +<p>De ce fait, on pourrait penser que Linux remplace complètement Windows +une fois installé, et comprend une interface graphique, et toutes sortes +d'utilitaires permettant a l'utilisateur d'utiliser le système (sous +Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer. +Pour l'interface graphique, pensez a... Pensez que votre système affiche +autre chose que des lignes de commande.) Or non, une fois installé, +Linux en lui même ne vous afficherait aucune interface graphique, et +s'il est effectivement livré avec des utilitaires, ils ne sont que des +programmes en ligne de commande. Autant les utilisateurs avancés sauront +s'en servir, et pourront argumenter que c'est plus efficace ou plus +rapide, autant les utilisateurs basiques préfèrent une interface +graphique. Alors comment en obtenir une?</p> +<p>Ici, il convient de faire une précision importante. Si il n'existe +qu'une seule version de Windows, ou de Mac OS, il existe en fait +plusieurs centaines de "versions" différentes de Linux. Appelées +distributions, ces dernière sont développées par des groupes +complètement séparés, et se basent sur le fait que Linux soit +entièrement placé sous licence libre (ce qui leur permet de l'utiliser a +leur guise, a condition que leur travail soit lui aussi placé sous +licence libre). De ce fait, de nombreuses distributions existent et se +développent en parallèle. On peut ainsi citer <a href="http://debian.org">Debian</a>, qui est l'une +des distributions les plus importantes, ou encore <a href="http://ubuntu.com">Ubuntu</a>, qui est +l'une des plus connues et des plus simples a utiliser.</p> +<p>Ainsi, ces distributions intègrent une interface graphique. Cependant, +grâce a la liberté dont bénéficient les développeurs sous Linux, il +existe de nombreuses interfaces graphiques différentes : <a href="unity.ubuntu.com">Unity</a>, la +nouvelle interface d'Ubuntu; <a href="gnome.org">GNOME</a> , une interface qui vise a la +simplicité; ou encore <a href="http://kde.org/">KDE</a>, une interface utilisateur ressemblant a +Windows 7.</p> +<p>Ainsi, le choix astronomique de distributions Linux a bien un sens : +chacune d'entre elle intègre des outils différents. Par exemple, Debian +intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend +particulièrement stable. Ubuntu intègre Unity, ce qui en fait une +distribution particulièrement intuitive. Linux Mint intègre Cinnamon, +qui est une version dérivée de GNOME 3, ce qui permet encore une autre +expérience. Et Arch Linux n'intègre pas d'interface graphique du tout, +ce qui permet a l'utilisateur de choisir entre les multiples interfaces +existantes.</p> +<p>Ce qu'il est important de retenir de cela, c'est que Linux est un OS +complètement libre, ce qui signifie que n'importe qui peut modifier et +utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi, +Linux est un OS qui est véritablement créé par des passionnés, pour tous +et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué +a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus. +Cependant, Linux donne la possibilité a l'utilisateur de le rendre +affreusement complexe, mais aussi de le rendre adapté a ses besoins, +quels que soient ceux ci. Et c'est la que réside l'incroyable puissance +de ce Système d'Exploitation. Il est extraordinairement adaptable.</p> +<p>N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas +technophiles. Ils pourraient adorer, et peut être même le devenir :)</p> +<p>A bientôt!</p> \ No newline at end of file diff --git a/output/feeds/feed.tutorial.xml b/output/feeds/feed.tutorial.xml new file mode 100644 index 0000000..5455714 --- /dev/null +++ b/output/feeds/feed.tutorial.xml @@ -0,0 +1,368 @@ + +Wxcaféfile:///home/wxcafe/code/blog-source/output/2014-11-07T13:04:00+01:00OpenSMTPd comme serveur mail sous debian2014-11-07T13:04:00+01:00Wxcafétag:,2014-11-07:home/wxcafe/code/blog-source/output/posts/opensmtpd-debian/<p>J'avais dit il y a un certain temps que j'allais écrire un tutoriel expliquant +comment gérer ses mails soi-même. Il se trouve que j'ai récemment décidé de +changer le serveur qui héberge (entre autres) ce blog, et que ce dernier héberge +aussi mes emails. J'ai donc totalement changé d'infrastructure quand a la +gestion de mon système de mails.</p> +<p>Ainsi, j'ai décidé de passer de Postfix a OpenSMTPd, changement que je voulais +effectuer depuis un certain temps. <a href="https://opensmtpd.org">OpenSMTPd</a> est un +projet originaire d'<a href="http://openbsd.org">OpenBSD</a> qui a pour but de fournir un +serveur SMTP fiable, simple, rapide, et surtout sécurisé (les même buts que ceux +qu'a le projet OpenBSD, globalement).</p> +<p>Pour rappel, le système d'emails fonctionne d'une façon très simple : votre MUA +(Mail User Agent, ou client email) contacte le MTA (Mail Transport Agent, ou +serveur SMTP) de votre fournisseur email, qui contacte le MTA du fournisseur du +destinataire, qui lui même contacte le MDA (Mail Delivery Agent) qui délivre le +mail au destinataire.</p> +<p>Si vous avez bien suivi, vous pouvez voir que je n'ai pas parlé de récupération +ni de lecture des mails. C'est pour une raison simple, qui est que ces taches +sont remplies par d'autres services encore (IMAP/POP pour la récupération depuis +le serveur, des yeux pour la lecture).</p> +<p>Or ce qui nous intéresse ici, ce n'est pas simplement d'envoyer et de recevoir +des emails mais bien aussi de pouvoir les récupérer et les lire, et c'est pour +ça que ce tutoriel ne parlera pas que d'OpenSMTPd mais aussi de +<a href="http://dovecot.org/">Dovecot</a> qui fait office de serveur IMAP et +<a href="http://www.ijs.si/software/amavisd/">amavis</a>/<a href="http://spamassassin.apache.org/">spamassassin</a> +pour filtrer les mails entrants et sortants. +Le schéma suivant explique la façon dont les mails sont gérés sur le système</p> +<div class="highlight"><pre> <span class="err">╭────────────────╮</span> <span class="err">╭──────────╮</span> + <span class="err">│╭──────────────</span><span class="o">&gt;</span><span class="err">│────</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">filter</span> <span class="err">───</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err">│</span> + <span class="n">mail</span> <span class="n">in</span> <span class="err">││</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">amavis</span> <span class="err">│</span> +<span class="err">───────────</span><span class="o">&gt;</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">───</span> <span class="n">from</span> <span class="n">filter</span><span class="o">&lt;</span><span class="err">───│</span><span class="o">&lt;</span><span class="err">╯</span> <span class="err">│</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╰──────────╯</span> + <span class="n">mail</span> <span class="n">out</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╭──────────╮</span> +<span class="o">&lt;</span><span class="err">───────────│</span><span class="o">&lt;</span><span class="err">────────────┴─</span><span class="o">&gt;</span><span class="err">│─────</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">MDA</span> <span class="err">─────</span><span class="o">&gt;</span><span class="err">│─────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">user</span><span class="err">&#39;</span><span class="n">s</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">dovecot</span> <span class="err">│</span> <span class="n">mailbox</span> + <span class="err">╰────────────────╯</span> <span class="err">╰──────────╯</span> +</pre></div> + + +<p>Normalement, ceci devrait être a peu près clair. +Pour expliquer vite fait, les emails entrants (venant des utilisateurs mais +aussi d'autres correspondants) sont transmis a OpenSMTPd, qui envoie tout a +<code>amavis</code>, qui vérifie a la fois les spams et les malwares pour les mails +venants de l'exterieur, et qui signe avec DKIM pour les mails venants de +nos utilisateurs, puis qui rentransmet les mails filtrés/signés a OpenSMTPd, +qui a ce moment-ci trie en fonction de la destination : les mails gérés +par le domaine vont via dovecot dans les boites mail des destinataires +locaux, les mails exterieurs vont directement vers le MTA du serveur +distant.</p> +<p>Voyons comment mettre cela en place. Tout d'abord, il faut décider de la façon +dont les différents services vont communiquer.</p> +<p>Déjà, amavis étant configuré par défaut pour écouter (en SMTP) sur le port +10024 et répondre sur le port 10025 quand il s'agit de filtrer et +écouter sur le port 10026 et répondre sur le port 10027 quand il s'agit de +signer, nous allons profiter de cette configuration et donc lui parler en SMTP +sur ces ports.</p> +<p>Quand a Dovecot, nous allons lui transmettre les emails en LMTP (Local Mail +Transfer Protocol), non pas sur un port mais via un socket (dans ce cas précis, +<code>/var/run/dovecot/lmtp</code>).</p> +<p>Ainsi, pour reprendre le schéma présenté plus haut :</p> +<div class="highlight"><pre> <span class="err">╭───────────────╮</span> <span class="err">╭───────────╮</span> + <span class="err">│╭─────────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10026</span><span class="p">)</span> <span class="err">──</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err">│</span> + <span class="n">SMTP</span> <span class="n">in</span> <span class="err">││</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">amavis</span> <span class="err">│</span> +<span class="err">────────</span><span class="o">&gt;</span> <span class="mi">25</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">──</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10027</span><span class="p">)</span> <span class="o">&lt;</span><span class="err">──│</span><span class="o">&lt;</span><span class="err">╯</span> <span class="p">(</span><span class="n">sign</span><span class="p">)</span> <span class="err">│</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╰───────────╯</span> + <span class="n">SMTP</span> <span class="n">out</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> +<span class="mi">25</span> <span class="o">&lt;</span><span class="err">────────│</span><span class="o">&lt;</span><span class="err">───────────╯</span> <span class="err">│</span> + <span class="err">╰───────────────╯</span> +</pre></div> + + +<p>Pour les mails sortants; et</p> +<div class="highlight"><pre> <span class="err">╭───────────────╮</span> <span class="err">╭────────────╮</span> + <span class="err">│╭─────────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10024</span><span class="p">)</span> <span class="err">──</span><span class="o">&gt;</span><span class="err">│─╮</span> <span class="err">│</span> + <span class="n">SMTP</span> <span class="n">in</span> <span class="err">││</span> <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">amavis</span> <span class="err">│</span> +<span class="err">────────</span><span class="o">&gt;</span> <span class="mi">25</span><span class="err">│╯</span> <span class="n">OpenSMTPd</span> <span class="err">╭──│</span><span class="o">&lt;</span><span class="err">──</span> <span class="n">SMTP</span> <span class="p">(</span><span class="mi">10025</span><span class="p">)</span> <span class="o">&lt;</span><span class="err">──│</span><span class="o">&lt;</span><span class="err">╯</span><span class="p">(</span><span class="n">filter</span><span class="p">)</span> <span class="err">│</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╰────────────╯</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="err">╭────────────╮</span> + <span class="err">│</span> <span class="err">╰─</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">LMTP</span> <span class="p">(</span><span class="n">socket</span><span class="p">)</span> <span class="err">─</span><span class="o">&gt;</span><span class="err">│───────────</span><span class="o">&gt;</span><span class="err">│──</span><span class="o">&gt;</span> <span class="n">to</span> <span class="n">user</span><span class="err">&#39;</span><span class="n">s</span> + <span class="err">│</span> <span class="err">│</span> <span class="err">│</span> <span class="n">dovecot</span> <span class="err">│</span> <span class="n">mailbox</span> + <span class="err">╰───────────────╯</span> <span class="err">╰────────────╯</span> +</pre></div> + + +<p>Pour les mails entrants.</p> +<p>Maintenant que la théorie est claire, mettons en place tout cela. Je me baserai +ici sur le fait que vous utilisiez une plateforme Debian ou OpenBSD. Pour +d'autres plateformes, la configuration devrait être sensiblement la même</p> +<p>(Vous aurez besoin de certificats SSL pour ce guide, même self-signés. +Si vous ne savez pas comment en créer, vous pouvez aller voir <a href="http://wxcafe.net/posts/05/30/14/SSL-ou-la-securite-sur-internet/">ce +post</a>)</p> +<p>Tout d'abord, commençons par installer les programmes nécessaires :</p> +<div class="highlight"><pre><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">opensmtpd</span> <span class="n">dovecot</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">pigeonhole</span> <span class="n">amavisd</span><span class="o">-</span><span class="n">new</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">managesieved</span> +<span class="n">sudo</span> <span class="n">pkg_add</span> <span class="n">dovecot</span> <span class="n">dovecot</span><span class="o">-</span><span class="n">pigeonhole</span> <span class="n">amavisd</span><span class="o">-</span><span class="n">new</span> +</pre></div> + + +<p>Continuons en configurant OpenSMTPd tel que nous avons vu plus haut :</p> +<p><code>/etc/smtpd.conf</code></p> +<div class="highlight"><pre><span class="err">#</span> <span class="nx">This</span> <span class="nx">is</span> <span class="nx">the</span> <span class="nx">smtpd</span> <span class="nx">server</span> <span class="nx">system</span><span class="na">-wide</span> <span class="nx">configuration</span> <span class="nx">file.</span> +<span class="err">#</span> <span class="nx">See</span> <span class="nx">smtpd.conf</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="nb">for</span> <span class="nx">more</span> <span class="nx">information.</span> + +<span class="err">##</span> <span class="nx">Certs</span> +<span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nx">certificate</span> <span class="s2">&quot;/etc/certs/exem.pl.crt&quot;</span> +<span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">key</span> <span class="s2">&quot;/etc/certs/exem.pl.key&quot;</span> + +<span class="err">##</span> <span class="nx">Ports</span> <span class="k">to</span> <span class="nb">listen</span> <span class="k">on</span><span class="p">,</span> <span class="ow">and</span> <span class="nx">how</span> <span class="k">to</span> <span class="nb">listen</span> <span class="k">on</span> <span class="nx">them</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">25</span> <span class="nx">tls</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span><span class="na">-optional</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">465</span> <span class="nx">tls</span><span class="na">-require</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span> <span class="nx">mask</span><span class="na">-source</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">eth0</span> <span class="nb">port</span> <span class="mi">587</span> <span class="nx">tls</span><span class="na">-require</span> <span class="nx">pki</span> <span class="nx">exem.pl</span> <span class="nb">hostname</span> <span class="nx">exem.pl</span> <span class="nb">auth</span> <span class="nx">mask</span><span class="na">-source</span> + +<span class="err">##</span> <span class="nx">Aliases</span> +<span class="nb">table</span> <span class="nx">aliases</span> <span class="nb">file</span><span class="p">:/</span><span class="nx">etc</span><span class="p">/</span><span class="nx">aliases</span> + +<span class="err">#</span> <span class="nx">coming</span> <span class="nb">from</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nb">checked</span> <span class="nb">for</span> <span class="nx">spam</span><span class="p">/</span><span class="nx">malware</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">lo</span> <span class="nb">port</span> <span class="mi">10025</span> <span class="kt">tag</span> <span class="nx">Filtered</span> +<span class="err">#</span> <span class="nx">coming</span> <span class="nb">from</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">signed</span> <span class="k">with</span> <span class="nx">DKIM</span> +<span class="nb">listen</span> <span class="k">on</span> <span class="nx">lo</span> <span class="nb">port</span> <span class="mi">10027</span> <span class="kt">tag</span> <span class="nx">Signed</span> + +<span class="err">##</span> <span class="nx">Receiving</span> +<span class="err">#</span> <span class="k">if</span> <span class="nx">the</span> <span class="p">(</span><span class="nx">incoming</span><span class="p">)</span> <span class="nx">mail</span> <span class="nx">has</span> <span class="nx">been</span> <span class="nx">through</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">then</span> <span class="nx">we</span> <span class="nx">can</span> <span class="nx">deliver</span> <span class="nx">it</span> +<span class="nb">accept</span> <span class="nx">tagged</span> <span class="nx">Filtered</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">alias</span> <span class="o">&lt;</span><span class="nx">aliases</span><span class="o">&gt;</span> <span class="nx">deliver</span> <span class="k">to</span> <span class="nx">lmtp</span> <span class="s2">&quot;/var/run/dovecot/lmtp&quot;</span> +<span class="err">#</span> <span class="nx">we</span> <span class="nx">directly</span> <span class="nx">tranfer</span> <span class="nx">incoming</span> <span class="nx">mail</span> <span class="k">to</span> <span class="nx">amavisd</span> <span class="k">to</span> <span class="nx">be</span> <span class="nb">checked</span> +<span class="nb">accept</span> <span class="nb">from</span> <span class="nb">any</span> <span class="nb">for</span> <span class="nx">domain</span> <span class="s2">&quot;exem.pl&quot;</span> <span class="nx">relay</span> <span class="nx">via</span> <span class="s2">&quot;smtp://localhost:10024&quot;</span> +<span class="err">#</span> <span class="nx">we</span> <span class="nx">have</span> <span class="k">to</span> <span class="nx">put</span> <span class="nx">these</span> <span class="n">lines</span> <span class="k">in</span> <span class="nx">this</span> <span class="k">order</span> <span class="k">to</span> <span class="nx">avoid</span> <span class="nx">infinite</span> <span class="nx">loops</span> + +<span class="err">##</span> <span class="nx">Sending</span> +<span class="err">#</span> <span class="k">if</span> <span class="nx">the</span> <span class="p">(</span><span class="nx">outgoint</span><span class="p">)</span> <span class="nx">mail</span> <span class="nx">has</span> <span class="nx">been</span> <span class="nx">through</span> <span class="nx">amavisd</span><span class="p">,</span> <span class="nx">then</span> <span class="nx">we</span> <span class="nx">can</span> <span class="nx">deliver</span> <span class="nx">it</span> +<span class="nb">accept</span> <span class="nx">tagged</span> <span class="nx">Signed</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">relay</span> +<span class="err">#</span> <span class="nx">we</span> <span class="nx">tranfer</span> <span class="nx">the</span> <span class="nx">outgoing</span> <span class="nx">mail</span> <span class="k">to</span> <span class="nx">amavisd</span> <span class="k">to</span> <span class="nx">be</span> <span class="nx">signed</span> +<span class="nb">accept</span> <span class="nb">for</span> <span class="nb">any</span> <span class="nx">relay</span> <span class="nx">via</span> <span class="s2">&quot;smtp://localhost:10026&quot;</span> +<span class="err">#</span> <span class="nx">same</span><span class="p">,</span> <span class="nx">we</span> <span class="nx">have</span> <span class="k">to</span> <span class="nx">put</span> <span class="nx">these</span> <span class="n">lines</span> <span class="k">in</span> <span class="nx">this</span> <span class="k">order</span> <span class="ow">or</span> <span class="nx">infinite</span> <span class="nx">loops...</span> +</pre></div> + + +<p>Expliquons un peu ce fichier de configuration :</p> +<ul> +<li>Tout d'abord, le paragraphe nommé "Certs" contient les déclaration + d'emplacement des certificats SSL.</li> +<li>Ensuite, le paragraphe contenant les ports externes sur lesquels nous écoutons : + port 25 avec TLS optionel et ports 465 et 587 avec TLS obligatoire</li> +<li>Les alias sont définis juste après</li> +<li>Le paragraphe suivant contient les ports locaux sur lesquels nous écoutons : + 10025 (port de sortie du filtre de amavis) dont on taggue les mails sortants + comme "Filtered" et 10027 (port de sortie des mails signés par amavis) dont on + taggue les mails sortants comme "Signed"</li> +<li>Nous avons ensuite le paragraphe qui traite les mails rentrants. Si le mail + traité est taggué comme Filtered, alors il a été vérifié par amavis, et on + peut donc le transmettre au destinataire. Sinon, c'est qu'il n'a pas encore + été vérifié par amavis, donc on lui transmet pour analyse (sur le port 10024 + donc). Il est important de mettre les déclarations dans ce sens, car la + première règle qui matche l'état du paquet est appliquée. Ici, la deuxième + ligne matchant tous les mails arrivant et la première seulement ceux filtrés, + inverser leur sens voudrait dire que les mails seraient toujours renvoyés a + amavis</li> +<li>Enfin, le dernier paragraphe traite les mails sortants. De la même façon que + pour le paragraphe précédent, si le mail sortant est déjà taggué comme Signed + on le transmet au MTA du destinataire, sinon il n'a pas encore été signé par + DKIM par amavis et on le transmet donc a amavis pour qu'il le signe. Le + problème de l'ordre des lignes se pose encore, pour la même raison qu'au + dessus.</li> +</ul> +<p>Nous allons maintenant configurer dovecot. Comme nous l'avons vu, dovecot doit +écouter en LMTP via la socket <code>/var/run/dovecot/lmtp</code> et transmettre les +emails a la boite email de l'utilisateur. Il serait aussi interessant +qu'il nous permette de récuperer les mails. Pour cette configuration, on ne +mettra en place que du IMAPS. Cependant, si vous voulez mettre en place du +POP3[s], différents guides sont trouvables facilement sur internet.</p> +<p><code>/etc/dovecot/dovecot.conf</code></p> +<div class="highlight"><pre><span class="cp">## Dovecot configuration file</span> + +<span class="cp"># basic config</span> +<span class="n">info_log_path</span> <span class="o">=</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">dovecot</span><span class="o">-</span><span class="n">info</span><span class="p">.</span><span class="n">log</span> +<span class="n">log_path</span> <span class="o">=</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">dovecot</span><span class="p">.</span><span class="n">log</span> +<span class="n">log_timestamp</span> <span class="o">=</span> <span class="s">&quot;%Y-%m-%d %H:%M:%S &quot;</span> +<span class="n">mail_location</span> <span class="o">=</span> <span class="n">maildir</span><span class="o">:%</span><span class="n">h</span><span class="o">/</span><span class="n">mail</span> + +<span class="cp"># authentication</span> +<span class="n">passdb</span> <span class="p">{</span> + <span class="n">driver</span> <span class="o">=</span> <span class="n">pam</span> +<span class="p">}</span> +<span class="n">userdb</span> <span class="p">{</span> + <span class="n">driver</span> <span class="o">=</span> <span class="n">passwd</span> +<span class="p">}</span> + +<span class="cp"># the protocols we use</span> +<span class="n">protocols</span> <span class="o">=</span> <span class="n">imap</span> <span class="n">lmtp</span> <span class="n">sieve</span> + +<span class="cp"># ssl config</span> +<span class="n">ssl_cert</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span><span class="p">.</span><span class="n">cert</span> +<span class="n">ssl_key</span> <span class="o">=</span> <span class="o">&lt;/</span><span class="n">etc</span><span class="o">/</span><span class="n">certs</span><span class="o">/</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span><span class="p">.</span><span class="n">key</span> +<span class="n">ssl_cipher_list</span> <span class="o">=</span> <span class="n">HIGH</span><span class="o">+</span><span class="n">kEDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">+</span><span class="n">kEECDH</span><span class="o">:</span><span class="n">HIGH</span><span class="o">:!</span><span class="n">PSK</span><span class="o">:!</span><span class="n">SRP</span><span class="o">:!</span><span class="mi">3</span><span class="n">DES</span><span class="o">:!</span><span class="n">aNULL</span> +<span class="n">ssl</span> <span class="o">=</span> <span class="n">yes</span> + +<span class="cp">## configuring services </span> +<span class="cp"># disables imap login without SSL (yes dovecot is dumb that way)</span> +<span class="n">service</span> <span class="n">imap</span><span class="o">-</span><span class="n">login</span> <span class="p">{</span> + <span class="n">inet_listener</span> <span class="n">imap</span> <span class="p">{</span> + <span class="n">port</span><span class="o">=</span><span class="mi">0</span> + <span class="p">}</span> +<span class="p">}</span> + +<span class="n">service</span> <span class="n">lmtp</span> <span class="p">{</span> + <span class="n">unix_listener</span> <span class="n">lmtp</span> <span class="p">{</span> + <span class="n">mode</span> <span class="o">=</span> <span class="mo">0666</span> + <span class="p">}</span> +<span class="p">}</span> + +<span class="cp">## configuring protocols</span> +<span class="cp"># the dovecot lda, we set it to use sieve</span> +<span class="n">protocol</span> <span class="n">lda</span> <span class="p">{</span> + <span class="n">mail_plugins</span> <span class="o">=</span> <span class="err">$</span><span class="n">mail_plugins</span> <span class="n">sieve</span> +<span class="p">}</span> + +<span class="n">protocol</span> <span class="n">lmtp</span> <span class="p">{</span> + <span class="n">postmaster_address</span> <span class="o">=</span> <span class="n">whoever</span><span class="err">@</span><span class="n">exem</span><span class="p">.</span><span class="n">pl</span> + <span class="n">mail_plugins</span> <span class="o">=</span> <span class="err">$</span><span class="n">mail_plugins</span> <span class="n">sieve</span> +<span class="p">}</span> + +<span class="n">plugin</span> <span class="p">{</span> + <span class="n">sieve</span> <span class="o">=</span> <span class="o">~/</span><span class="p">.</span><span class="n">dovecot</span><span class="p">.</span><span class="n">sieve</span> + <span class="n">sieve_dir</span> <span class="o">=</span> <span class="o">~/</span><span class="n">sieve</span> +<span class="p">}</span> +</pre></div> + + +<p><strong>ATTENTION: Sous OpenBSD, remplacez</strong></p> +<div class="highlight"><pre><span class="n">passdb</span> <span class="p">{</span> + <span class="n">driver</span> <span class="o">=</span> <span class="n">pam</span> +<span class="p">}</span> +</pre></div> + + +<p><strong>par</strong></p> +<div class="highlight"><pre><span class="n">passdb</span> <span class="p">{</span> + <span class="n">driver</span> <span class="o">=</span> <span class="n">bsdauth</span> +<span class="p">}</span> +</pre></div> + + +<p><strong>pour identifier les utilisateurs système</strong></p> +<p>Ici aussi, voyons comment ce fichier est structuré :</p> +<ul> +<li>Tout d'abord, les configurations de base : ou iront les logs, comment formater + leur datation, et l'endroit ou seront stockés les mails des utilisateurs.</li> +<li>Nous configurons ensuite la gestion de l'authentification des utilisateurs. + Ici nous identifions les utilisateurs avec le fichier /etc/passwd et leurs + mots de passe avec PAM (ou BSDAuth)</li> +<li>Nous configurons ensuite les protocoles que nous servons. Ici, nous voulons de + l'IMAPS, du LMTP local et Sieve (qui sert pour trier les messages).</li> +<li>Nous configurons le SSL</li> +<li>Le section suivante contient la configuration des services. Nous avons en + premier lieu le service IMAP, dont la configuration sert uniquement a + désactiver IMAP. En effet, dovecot ne permet d'activer IMAPS qu'en activant + IMAP avec. Comme nous ne voulons pas d'IMAP sans SSL, nous le désactivons. + La configuration de lmtp sert a attribuer des permissions plus correctes au + fifo qu'il utilise</li> +<li>Nous configurons maintenant les protocoles, pour faire fonctionner Sieve</li> +<li>enfin, nous configurons le plugin sieve en lui indiquant quel fichier et + quel dossier utiliser pour sa configuration.</li> +</ul> +<p>Enfin, il nous reste a configurer amavis. Comme expliqué, amavis va nous servir +a deux choses : signer les emails sortants, et filtrer les emails entrants. Il +doit donc écouter sur les port 10026 pour les signatures et 10024 pour le +filtrage, et répondre respectivement sur les ports 10027 et 10025 (le tout, en +SMTP. Comme toutes les transactions se font sur le loopback, il n'y a aucun +risque a utiliser des protocoles non chiffrés. +Pour OpenBSD, pensez a copier la configuration par défaut depuis +<code>/usr/local/share/examples/amavisd-new/amavisd.conf</code> et ajoutez les +modifications nécessaires a la fin du fichier.</p> +<p><code>/etc/amavis/conf.d/99-local.conf</code> (debian) +<code>/etc/amavis.conf</code> (OpenBSD)</p> +<div class="highlight"><pre><span class="n">use</span> <span class="n">strict</span><span class="p">;</span> + +<span class="err">$</span><span class="n">enable_dkim_verification</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> +<span class="err">$</span><span class="n">enable_dkim_signing</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> +<span class="n">dkim_key</span><span class="p">(</span><span class="s">&quot;exem.pl&quot;</span><span class="p">,</span> <span class="s">&quot;main&quot;</span><span class="p">,</span> <span class="s">&quot;/etc/certs/dkim.key&quot;</span> <span class="p">);</span> + +<span class="err">@</span><span class="n">dkim_signature_options_bysender_maps</span> <span class="o">=</span> <span class="p">(</span> + <span class="p">{</span> <span class="sc">&#39;.&#39;</span> <span class="o">=&gt;</span> + <span class="p">{</span> <span class="n">ttl</span> <span class="o">=&gt;</span> <span class="mi">21</span><span class="o">*</span><span class="mi">24</span><span class="o">*</span><span class="mi">3600</span><span class="p">,</span> <span class="n">c</span> <span class="o">=&gt;</span> <span class="err">&#39;</span><span class="n">relaxed</span><span class="o">/</span><span class="n">simple</span><span class="err">&#39;</span> <span class="p">}</span> + <span class="p">}</span> +<span class="p">);</span> + +<span class="err">$</span><span class="n">inet_socket_port</span> <span class="o">=</span> <span class="p">[</span><span class="mi">10024</span><span class="p">,</span> <span class="mi">10026</span><span class="p">];</span> +<span class="err">$</span><span class="n">policy_bank</span><span class="p">{</span><span class="err">&#39;</span><span class="n">MYNETS</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">originating</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">os_fingerprint_method</span> <span class="o">=&gt;</span> <span class="n">undef</span><span class="p">,</span> +<span class="p">};</span> + +<span class="err">$</span><span class="n">interface_policy</span><span class="p">{</span><span class="err">&#39;</span><span class="mi">10026</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="err">&#39;</span><span class="n">ORIGINATING</span><span class="err">&#39;</span><span class="p">;</span> + +<span class="err">$</span><span class="n">policy_bank</span><span class="p">{</span><span class="err">&#39;</span><span class="n">ORIGINATING</span><span class="err">&#39;</span><span class="p">}</span> <span class="o">=</span> <span class="p">{</span> + <span class="n">originating</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">allow_disclaimers</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">virus_admin_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="s">&quot;root\@$mydomain&quot;</span><span class="p">],</span> + <span class="n">spam_admin_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="s">&quot;root\@$mydomain&quot;</span><span class="p">],</span> + <span class="n">warnbadhsender</span> <span class="o">=&gt;</span> <span class="mi">1</span><span class="p">,</span> + <span class="n">forward_method</span> <span class="o">=&gt;</span> <span class="err">&#39;</span><span class="n">smtp</span><span class="o">:</span><span class="n">localhost</span><span class="o">:</span><span class="mi">10027</span><span class="err">&#39;</span><span class="p">,</span> + <span class="n">smtpd_discard_ehlo_keywords</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="err">&#39;</span><span class="mi">8</span><span class="n">BITMIME</span><span class="err">&#39;</span><span class="p">],</span> + <span class="n">bypass_banned_checks_maps</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="mi">1</span><span class="p">],</span> + <span class="n">terminate_dsn_on_notify_success</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span> +<span class="p">};</span> + +<span class="cp">#------------ Do not modify anything below this line -------------</span> +<span class="mi">1</span><span class="p">;</span> <span class="err">#</span> <span class="n">ensure</span> <span class="n">a</span> <span class="n">defined</span> <span class="k">return</span> +</pre></div> + + +<p>A nouveau, expliquons ce fichier : +- le premier paragraphe définit que nous voulons qu'amavis signe les emails + sortants, vérifie la signature DKIM des emails rentrants, et l'endroit ou se + trouve la clé privée servant a signer les emails. +- le second définit les options DKIM que nous souhaitons utiliser comme défaut. + Je vous invite a consulter la <a href="https://tools.ietf.org/html/rfc4871">RFC 4871</a> +- nous définissons ensuite les ports sur lesquels nous allons écouter, puis les + paramètres que nous utiliserons pour les emails venant de nos utilisateurs : + ils seront traités comme "originating" et nous ne vérifierons pas l'OS duquel + ils viennent. +- nous savons que les emails venants du port 10026 sont sortants, nous les + traitons donc comme tel +- le paragraphe suivant décrit le traitement que nous faisons subir aux emails + sortants : tout d'abord, nous réaffirmons qu'ils viennent bien de notre + serveur. Nous autorisons les disclaimers (voire encore une fois la <a href="https://tools.ietf.org/html/rfc4871">RFC + 4871</a>. Nous déclarons l'adresse a + prévenir en cas de spam/virus venants de notre système, et que nous voulons + être prévenus. Nous déclarons ou envoyer les mails une fois signés et filtrés, + puis qu'il est nécessaire de convertir les emails au format 7 bits avant de + les envoyer au MTA, que nous autorisons tous les types et noms de fichiers, et + les notifications de succès d'envoi. Et voila!</p> +<p>Vous avez pu remarquer qu'a aucun moment nous ne configurions ni la signature +des emails sortants ni le filtrage des emails entrants. Ces paramètres sont en +fait inclus par défaut dans amavis.</p> +<p>Il nous reste cependant quelques opérations a faire, encore. +Tout d'abord, il nous faut générer notre clé DKIM. Pour cela, il existe +différentes méthodes, j'ai personnellement utilisé opendkim (<a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy">un +tutorial</a>) +mais de nombreuses autre méthodes existent. +Il nous reste encore a configurer spamassassin :</p> +<div class="highlight"><pre><span class="cp">#rewrite_header Subject *****SPAM*****</span> +<span class="cp"># report_safe 1</span> +<span class="n">required_score</span> <span class="mf">2.0</span> +<span class="cp"># use_bayes 1</span> +<span class="cp"># bayes_auto_learn 1</span> +<span class="cp"># bayes_ignore_header X-Bogosity</span> +<span class="cp"># bayes_ignore_header X-Spam-Flag</span> +<span class="cp"># bayes_ignore_header X-Spam-Status</span> +<span class="n">ifplugin</span> <span class="n">Mail</span><span class="o">::</span><span class="n">SpamAssassin</span><span class="o">::</span><span class="n">Plugin</span><span class="o">::</span><span class="n">Shortcircuit</span> +<span class="cp"># shortcircuit USER_IN_WHITELIST on</span> +<span class="cp"># shortcircuit USER_IN_DEF_WHITELIST on</span> +<span class="cp"># shortcircuit USER_IN_ALL_SPAM_TO on</span> +<span class="cp"># shortcircuit SUBJECT_IN_WHITELIST on</span> +<span class="cp"># shortcircuit USER_IN_BLACKLIST on</span> +<span class="cp"># shortcircuit USER_IN_BLACKLIST_TO on</span> +<span class="cp"># shortcircuit SUBJECT_IN_BLACKLIST on</span> +<span class="n">shortcircuit</span> <span class="n">ALL_TRUSTED</span> <span class="n">off</span> +<span class="cp"># shortcircuit BAYES_99 spam</span> +<span class="cp"># shortcircuit BAYES_00 ham</span> + +<span class="n">endif</span> <span class="err">#</span> <span class="n">Mail</span><span class="o">::</span><span class="n">SpamAssassin</span><span class="o">::</span><span class="n">Plugin</span><span class="o">::</span><span class="n">Shortcircuit</span> +</pre></div> + + +<p>Comme vous pouvez le voir, les modifications se résument globalement a baisser +le required_score pour ma part.</p> +<p>Pour finir, activez les services nécessaires : opensmtpd, dovecot, amavisd, et +spamassassin, et tout devrait fonctionner parfaitement</p> +<p>Bon courage pour votre hosting de mail ensuite...</p> \ No newline at end of file diff --git a/output/index3.html b/output/index3.html new file mode 100644 index 0000000..1171ba5 --- /dev/null +++ b/output/index3.html @@ -0,0 +1,1271 @@ + + + + + Wxcafé + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +

    Archlinux made simple

    +
    + Date + + Fri 05 October 2012 + +
    + By + Wxcafe +
    + Category + OSes +
    + + + + +
    +

    Archlinux est réputée être une distribution Linux très complexe a +installer et a maintenir.

    +

    Je vais tenter ici de vous convaincre que ce n'est pas le cas, et +qu'elle peut se monter très intéressante et très instructive a installer +tout autant qu'a utiliser.

    +

    Il convient tout d'abord de rappeler a quels principes obéit Arch:

    +
      +
    1. +

      Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des + programmes simples et utilisables par tous. Avec comme base de + simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu + de bonne volonté, la configuration n'est pas si compliquée!

      +
    2. +
    3. +

      La philosophie UNIX : chaque programme est prévu pour ne remplir + qu'une seule tâche. Bien entendu, cela ne concerne que les programmes + conçus pour s’insérer dans la philosophie UNIX, et les installations de + dépendances avec le gestionnaire de paquet d'Arch fonctionnent + superbement bien.

      +
    4. +
    +

    De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle +pacman, et les commandes de base sont :

    +
      +
    • +

      recherche d'un paquet :

      +
      pacman -Ss paquet
      +
      + + +
    • +
    • +

      installation d'un paquet :

      +
      sudo pacman -S paquet
      +
      + + +
    • +
    • +

      désinstallation d'un paquet :

      +
      sudo pacman -R paquet
      +
      + + +
    • +
    • +

      mise a jour de tous les paquets installés :

      +
      sudo pacman -Syu paquet
      +
      + + +
    • +
    +

    Archlinux est une distribution dite "rolling release", ce qui signifie +qu'il n'y a pas de version a proprement dites, et que les paquets se +mettent a jour en permanence, sans jamais changer la "version" d'Arch. +Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site, +puisqu'une version plus ancienne n'aurait aucun sens.

    +

    Arch n'offre pas d'interface graphique par défaut : après avoir installé +le système, vous n'aurez qu'une invite de commande. Heureusement, je +vais ici vous guider a travers l'installation d'une interface graphique +(mate, le fork de gnome 2)

    +

    L'installation d'Arch se fait par le réseau, veillez a avoir une +connection WiFi ou filaire a proximité avant de suivre ce guide.

    +

    Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous +systemd. N'ayant pas encore eu le temps d’expérimenter assez avec ce +dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt.

    +

    Bon, passons a l'explication de l'installation proprement dite :

    +

    Tout d'abord, téléchargeons l'iso d'arch la plus récente :

    +
    wget http://mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso
    +
    + + +

    Ensuite, gravons cette image sur un disque USB :

    +
    dd if=archlinux-2012.09.07-dual.iso of=/dev/sdX
    +
    + + +

    Après reboot de la machine sur l'iso en question et choix de +l'architecture, nous sommes accueillis par un shell root.

    +

    La première chose a faire est de paramétrer le clavier :

    +
    loadkeys fr
    +
    + + +

    Puis nous pouvons passer a l'installation proprement dite. +Partitionnement :

    +
    cfdisk # cfdisk est suffisamment clair pour ne pas nécessiter d'explications
    +
    + + +

    formatage des partitions :

    +
    mkfs.ext4 /dev/sda1 # partition root
    +
    +pacman -Syu btrfs-progs && mkfs.btrfs /dev/sda2 # partition home
    +
    +mkswap /dev/sda3 && swapon /dev/sda3 # partition de swap
    +
    + + +

    Montons les partitions nouvellement créées, puis installons le système :

    +
    mount /dev/sda1 /mnt
    +
    +mkdir /mnt/home && mount /dev/sda2 /mnt/home
    +
    +dhclient eth0 # si vous utilisez une connection filaire, sinon voire http://wiki.archlinux.fr/Wifi#Configuration
    +
    +pacstrap /mnt base base-devel
    +
    +genfstab -p /mnt > /mnt/etc/fstab
    +
    + + +

    Allons prendre un café le temps que ça charge, puis installons les +quelques paquets nécessaires a notre installation et au premier +démarrage:

    +
    pacstrap /mnt syslinux btrfs-progs wireless_tools dhclient
    +
    + + +

    Maintenant, passons sur notre install toute fraîche d'Arch :

    +
    arch-chroot /mnt bash
    +
    + + +

    configurons les bases :

    +
    echo HOSTNAME > /etc/hostname
    +
    +ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
    +
    +date MMJJhhmmAAAA
    +
    +hwclock --systohc
    +
    +vim /etc/locale.gen # Décommentez les lignes correspondant au français : fr_FR.UTF-8 et fr_FR.ISO-8859-1
    +
    +echo  'LANG="fr_FR.UTF-8"' > /etc/locale.conf
    +
    +locale-gen
    +
    +mkinitcpio -p linux
    +
    + + +

    Enfin, vérifions que syslinux est correctement configuré :

    +
    vim /boot/syslinux/syslinux.cfg # il devrait y avoir "append root=/dev/sda1"
    +
    + + +

    Si tout est correct, installons syslinux, et paramétrons un mot de passe +root :

    +
    syslinux-install_update /dev/sda -mia
    +
    +passwd root
    +
    + + +

    Et voila, l'installation est terminée! Plus qu'a quitter la session et a +redémarrer l'ordinateur!

    +
     exit
    +umount /mnt/home 
    +umount /mnt
    +reboot
    +
    + + +

    Fini!

    +

    Prenons une petite pause. La partie suivante de ce tutoriel consister en +un paramétrage des principaux services nécessaires a l'utilisation d'un +OS, disons, moyen :

    +
      +
    • +

      Installation de MATE, le gestionnaire de bureau (voir +http://mate-desktop.org/)

      +
    • +
    • +

      Installation de sudo et de networkmanager pour faire fonctionner les +composants essentiels du système sans avoir a tout activer a la main a +chaque démarrage

      +
    • +
    • +

      Installation de SLiM comme gestionnaire de login graphique, pour +présenter une interface plus accueillante que la console, et +configuration de celui-ci

      +
    • +
    • +

      Installation des principaux logiciels utiles non inclus dans mate ni +base (yaourt, chromium, thunderbird, etc...).

      +
    • +
    +

    Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un +gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter +ici.

    +

    Bon, reprenons.

    +

    Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de +passe paramétré plus haut pour le root, puis retapez la commande +utilisée plus tôt pour vous connecter a internet.

    +

    Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis +d'effectuer l'action en question :

    +
    vim /etc/pacman.conf
    +
    + + +

    Ici, ajoutez les lignes suivantes :

    +
    [mate]
    +Server = http://repo.mate-desktop.org/archlinux/$arch
    +
    + + +

    Installons maintenant les paquets :

    +
    pacman -Syu mate mate-extras dbus dbus-core alsa networkmanager sudo
    +
    + + +

    Ajoutons un compte utilisateur pour utiliser les composants du système +sans tout crasher a chaque fois :

    +
    useradd -g users -G wheel,audio,optical,lp,scanner,log,power,floppy,storage,games,video -m -s /bin/bash *votrenom*
    +passwd *votrenom*
    +su *votrenom*
    +
    + + +

    Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org +ce que l'on veut utiliser :

    +
    echo "exec ck-launch-session mate-session" > ~/.xinitrc
    +
    + + +

    Profitons en pour ajouter les démons système au lancement :

    +
    vim /etc/rc.conf
    +
    + + +

    Ajoutez donc dbus, alsa. hwclock et networkmanager dans la section +DAEMONS (entre les parenthèses, après crond normalement)

    +
    DAEMONS=(syslog-ng network crond dbus alsa hwclock networkmanager)
    +
    + + +

    Pour éviter un reboot, il est ici possible de faire un

    +
    su
    +
    + + +

    Puis un

    +
     /etc/rc.d/dbus start && /etc/rc.d/alsa start && /etc/rc.d/networkmanager start
    +
    + + +

    Sinon, il est possible de juste redémarrer.
    +Une fois cela fait, profitez de ce moment pour vous autoriser vous même +a utiliser sudo. Loggez vous en root, et :

    +
     vim /etc/sudoers
    +
    + + +

    Décommentez la ligne qui commence par # %wheel ALL=(ALL)
    +Sauvegardez le fichier, puis, après un su *votrenom*, tentez de faire +un sudo ls /
    +Normalement, vous devriez avoir un listing du dossier /
    +Bon, maintenant, pourquoi ne pas tenter de lancer MATE?
    +C'est simple comme bonjour :

    +
     startx
    +
    + + +

    Et PAF! Voila un MATE desktop flambant neuf a configurer!
    +Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous, +puis installez SLiM (sudo pacman -Syu slim).
    +Configurons le:

    +
    echo "exec dbus-launch mate-session" > ~/.xinitrc && vim /etc/slim.conf
    +
    + + +

    Éditez la ligne +"sessions xfce4,icewm-session,wmaker,blackbox" de facon a +ce qu'elle ressemble a "sessions mate-session"
    +Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS.
    +Normalement, tout devrait fonctionner!
    +Ah oui, et pour installer thunderbird, firefox, chromium, etc...

    +
    sudo pacman -Syu chromium thunderbird xchat firefox rhythmbox pidgin transmission-gtk vlc
    +
    + + +

    Voila! Et comme dirait @Spartition, c'est sale, mais qu'est-ce que c'est +bon!
    +A plus~

    +
    +
    +
    +

    Les systèmes de fichiers

    +
    + Date + + Tue 25 September 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Un système de fichiers. Vous en avez surement déjà entendu parlé si vous +avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous +connaissez surement NTFS, EXT4, ou encore FAT32.

    +

    Ces différents noms désignent en effet des systèmes de fichiers. Mais +qu'est-ce qu'un système de fichiers?

    +

    Pour comprendre cela, il faut déjà savoir ce qu'est exactement un +fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la +plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio +(kibioctet), en fonction du système de fichier utilisé.), qui est +donc composé de bits, interprétés différemment en fonction du type de +fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il +n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, +ou il commence ni où il s'arrête (je schématise un peu, mais c'est +l'idée).

    +

    Ainsi, le système de fichier donne un cadre et un standard à +l'arborescence des fichiers. Par exemple, le système de fichier ext4 +utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de +disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio +et mesurer la taille des fichiers en blocs de cette façon. Les systèmes +de fichiers nécessitent l'inclusion de drivers dans le noyau pour +pouvoir être pris en compte.

    +

    Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, +reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu +près tout type de partition récente.

    +

    Il convient de bien faire la différence entre le système de fichier et +l'arborescence des fichiers. Si l'arborescence des fichiers est en fait +une entité virtuelle englobant la racine / et tous les fichiers et +dossiers contenus dedans, le système de fichier permet a votre système +GNU/Linux de distinguer les différents fichiers composants cette +arborescence.

    +

    Détaillons maintenant les types de fichiers les plus répandus:

    +
      +
    • +

      FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, + soit la définition d'un système de fichier), remplissent leur rôle le + plus simplement possible. Ne permettant (historiquement) que des noms de + 8 caractères (plus extension de trois caractères), ni chiffrement, ni + système de distinction d'utilisateurs (DOS étant un système + mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, + utlisants respectivement des blocs de 16 et 32 Kio.

      +
    • +
    • +

      NTFS :. Le NTFS (pour New Technology File System, rapport a Windows + NT) est un système de fichier qui est apparu avec Windows XP, et qui + était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a + FAT différentes capacités dont le chiffrement, les liens symboliques, la + compression et les quotas pour les volumes, permettant de limiter la + taille maximum occupée dans une partition.

      +
    • +
    • +

      ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. + Ne différant pas énormément de NTFS, je le mentionne principalement + parce qu'il est prévu qu'il soit le défaut pour Windows 8. + Il apporte principalement la redondance, c'est a dire que chaque + fichier possède une somme de contrôle en 64 bits stockée dans un fichier + séparé pour éviter les corruption de disque.

      +
    • +
    • +

      Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers + les plus utilisés sous linux pour le grand public. (Je traiterai ici + d'ext4, puisque c'est le plus récent.) Il dispose de toutes les + fonctions que l'on peut attendre d'un système de fichiers moderne, ni + plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, + acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite + "par extent", ce qui signifie que la création d'un fichier réserve + automatiquement les zones contiguës de façon a réduire la fragmentation.

      +
    • +
    • +

      ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) + programmeur Hans Reiser, est a retenir pour avoir été le premier système + de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des + 4 milliards. Le but de ce système est de créer un système polyvalent, a + la fois système de fichiers et base de donnée (de part sa grande + capacité en terme de nombre de fichiers et de l'utilisation d'un + journal.)

      +
    • +
    • +

      Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi + l'allocation par extent, mais possède de plus un système de + sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers + montées en même temps (système pratique et utile pour faire des + snapshots de systèmes.). Il permet aussi de redimensionner a chaud la + taille des partitions, en les agrandissant ou en les rétrécissant, est + compatible avec LVM, a un système de checking intégré (btrfsck), et + utilise un algorithme de compression appelé LZ4, qui accélère les accès + aux fichiers compressés d'environ 30% par rapport a LZO, le système + utilisé dans ext4.

      +
    • +
    • +

      HFS+ : le système de fichier présent sur tous les macs a des capacités + relativement standards, et ressemble énormément a l'ext3. Il supporte + cependant les liens directs vers les dossiers, fonction rare sur les + systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau + dans les années a venir

      +
    • +
    • +

      ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux + et *BSD, est, tel Btrfs, a la fois un système de fichier et un + remplaçant/compatible avec LVM, C'est un système de fichiers conçu + principalement pour les serveurs, et il intègre ainsi un système de + redondance des données pour éviter les corruptions, un mode RAID-Z + (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, + etc...

      +
    • +
    +

    Comme on a pu le voir, les systèmes de fichiers disponibles sont +légions. Cependant, le plus adapté a Linux et a une utilisation grand +public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier +n'est pas aujourd'hui proposé par défaut sur les distributions les plus +utilisées, au profit de l'ext4, qui commence a accuser son âge...

    +

    Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au +fonctionnement du système, sont en fait de première importance, et ce +choix ne devrait pas être laissé au hasard, et être mis a jour +régulièrement (pour éviter les failles de sécurité...)

    +

    Bon courage, et bon choix pour votre prochain système.

    +
    +
    +
    +

    Le Quenya - Épisode ø

    +
    + Date + + Tue 18 September 2012 + +
    + By + Wxcafe +
    + Category + Language +
    + + + + +
    +

    Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusqu’à il y +a peu...), le nom que donnait Tolkien au dialecte principal parlé par +les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des +Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte +avant de commencer cet article que l'une des œuvres les plus +impressionnantes de Tolkien, si ce n'est la plus grande, est +l'impressionnant travail linguistique passé sur les différentes langues +présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya, +la langue des nains, qui est appelé le khazalide, etc.

    +

    En effet, a contrario des "langues" développées dans d'autres œuvres littéraires +telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot +de français (ou d'anglais) a un mot de sa "langue", les langues de +l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des +racines logiques, des systèmes de grammaire et de conjugaison propres, +une logique inhérente dans la prononciation ou l'orthographe, et ainsi +de suite.

    +

    Un véritable rêve de linguiste donc, puisque ces langues sont +pratiquement entièrement documentées par Tolkien lui même (voir +l'appendice E du SdA, particulièrement instructif a ce sujet.)

    +

    J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster +ici des résumés des cours que je suis ( disponibles ici , une +traduction en français est disponible la en pdf ), et des infos ici +toutes les deux semaines.

    +

    Si ce sujet vous intéresse, le compte twitter @Quenya101 poste +régulièrement des informations sur le sujet, et pour plus d'infos sur le +sujet, vous pouvez en trouver par ici.

    +

    Et en tant que première leçon, vous pouvez apprendre que ce mot que vous +avez prononcé comme le Kenya tout le long de cet article se prononce en +fait [Kwenïa], ou bien Qwenya!

    +
    +
    +
    +

    Update a propos du blog

    +
    + Date + + Tue 18 September 2012 + +
    + By + Wxcafe +
    + Category + Notes +
    + + + + +
    +

    Bonsoir! Un petit post pour faire un peu le point sur ce blog.
    +Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais +que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y +avoir un tantinet réfléchi, ceci est du a deux points principaux :

    +
      +
    • +

      Tout d'abord, le manque d'inspiration, tout simplement. C'est assez +compliqué de trouver des sujets intéressants liés a l'informatique, et +qui méritent un article. Je vous invite d'ailleurs a me suggérer des +sujets via les commentaires ou twitter (@Wxcafe)

      +
    • +
    • +

      Ensuite, le délai de 8 jours est trop court pour me permettre de faire +les recherches nécessaires, tout en manageant mes cours et mon temps +libre.

      +
    • +
    +

    A cause de cela, j'ai pris la décision de changer le rythme de parution +des articles a un *minimum* d'un post tous les 10 jours. Bien entendu, +si j'ai de l'inspiration en trop, plus de posts sont envisageables.

    +

    Voila. A part ca, je tiens a vous remercier de me lire (c'est assez +étonnant de voir ca...), et je précise que je vais ajouter une page +About Me, qui bien entendu rassemblera des informations sur moi, ma vie, +mon oeuvre :P

    +

    Ceci dit, je vais bosser un peu sur le prochain article.

    +

    A plus tard!

    +
    +
    +
    +

    Introduction a bash en tant que language de programmation.

    +
    +

    L’interpréteur de commandes bash (Bourne Again SHell) +est possiblement le shell le plus connu, notamment grâce a son +intégration en tant que shell par défaut dans les distributions Linux +les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva - +Mageia, etc...).

    +

    Cependant, il n'est souvent connu qu'en tant qu’interpréteur de +commande. Alors qu'en réalité, le bash est un langage de programmation +(presque) complet! Ainsi, il intègre les structures de contrôle +habituelles ( pour mémoire, les structures de contrôle comprennent les +conditions (les ifs), les boucles (les while), et les choix (les case), +entre autres.), et est donc ce que l'on pourrait appeler un langage de +script, interprété, de la même façon que python, a la difference près +qu'il contient un prompt (un système d'entrée de commande interactif) +bien plus complet et développé que python.

    +

    Cependant, les programmes en bash ne sont executables que dans un +environnement de type UNIX, et donc pas sous Windows (cygwin +(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous +windows. Il faut malgré tout convenir que cet environnement est bien +plus compliqué a manipuler, et globalement ne permet pas d'acceder a des +portages de qualité satisfaisante.)

    +

    Ainsi, il est possible de créer des fichiers .sh, contenant des +instructions bash mises a la suite (de la même façon qu'un script BATCH +Windows .bat), et faisant appel autant aux commandes internes de bash, +aussi bien que les commandes externes mises en place par les programmes +installés sur le système, exactement comme dans une invite de commande. +Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit +panda roux directement dans la boite magique, tandis qu'un if +[condition] suivi d'un then (quelque chose) lancera le fameux quelque +chose suscité si la condition est vérifiée. Un peu comme en C, quoi.

    +

    De cette façon, et avec quelques informations et connaissances, il est +facile de comprendre le fonctionnement de la programmation en bash. +Quelques exemples commentés:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    #!/bin/bash 
    +# La ligne du dessus est très importante, c'est elle qui dit a bash quel doit être 
    +# l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'interpréter 
    +# lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire 
    +# executer du python, par exemple, en mettant #!/usr/bin/python a la place.
    +echo "this is a test of bash as a simple script manager" # echo est une commande d'affichage de message.
    +echo "what's your name, user?" 
    +read your_name # la commande read permet de demander a l'utilisateur de donner une 
    +# information, stockée dans la variable en paramètre. 
    +echo $your_name "is your name" # echo permet aussi d'afficher la valeur de variables. 
    +# Ici, on renvoie la variable remplie précédemment, suivie d'un message. 
    +exit # cet appel a exit n'est pas obligatoire, mais donne un aspect plus 
    +# propre au code. Il ne quittera pas la session de terminal, cependant.
    +
    +
    + +

    Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite +d'être clair quand aux capacités et a la simplicité du bash en tant que +language de programmation. Alors en effet, nous n'avons ici absolument +pas utilisé les capacités de bash en lui même, et n'avons fait que le +renvoyer a des programmes externes (sauf read, il est vrai). Voyons +maintenant la syntaxe de bash quand il s'agit d'utiliser les structures +de contrôle:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    #!/bin/bash 
    +echo "welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?" 
    +read host_name 
    +if [ $host_name == $HOSTNAME ] ## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. 
    +then echo "you told the truth!" 
    +fi ## le fi est la commande fermant le if, tout comme le EndIf en basic. C'est un peu vieillot, mais important en bash. 
    +if [ $host_name != $HOSTNAME ] ## l'opérateur != est l'inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. 
    +then echo "you lied!" 
    +fi 
    +exit
    +
    +
    + +

    Voila un petit programme permettant d'apprendre la syntaxe du if en +bash. comme vous pouvez le voir, le language est plutôt lite, et la +structure if n'est pas très difficile a prendre en main.

    +

    Passons maintenant au while:

    +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    #!/bin/bash
    +echo "what is your name?"
    +read name
    +while [ 1 < 10 ]    ## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.
    +do echo "i love" $name
    +done
    +exit
    +
    +
    + +

    Ce petit programme permet d'observer les bases de while (qui est la +boucle de base en bash).

    +

    Le troisième opérateur de bash est case. Voyons:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    #!/bin/bash
    +echo "please enter a number between one and five"
    +read number
    +case $number in 
    +1)
    +echo "the choosen number was one"
    +;;
    +2)
    +echo "the choosen number was two"
    +;;
    +3)
    +echo "the choosen number was three"
    +;;
    +4)
    +echo "the choosen number was four"
    +;;
    +5)
    +echo "the choosen number was five"
    +;;
    +*)
    +echo "this number is not correct"
    +;; 
    +esac
    +exit
    +
    +
    + +

    case est un opérateur plus complexe a utiliser a bon escient, et sert a +faire des ifs multiples sans avoir a taper des dizaines de lignes de +code.
    +(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre +que le code vérifie chacune des conditions : le 1) est validé si la +valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc.. +le *) désigne toutes les valeurs, et est donc validé si aucune autre +valeur n'a précédemment acceptée.

    +

    Quelques notions manquent ici:
    +- les nombres aléatoires sont générés par un appel a la variable +\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a +16 bits donc). il est possible de faire des invocations a des nombres +aléatoires plus grands, mais les méthodes permettant de faire cela sont +plus complexes, et je ne les aborderai donc pas ici.
    +- comme vous avez pu le constater, les variables sont désignées en tant +que telles par l'utilisation d'un symbole \$ au début de leur nom. +Ainsi, echo number renverra "number", tandis que echo \$number renverra +le résultat de la variable \$number.
    +être utilisées dans un programme bash.
    +- comme vous avez pu le constater, les commandes doivent tenir en +théorie en une ligne. Cependant, le caractère \ permet de retourner a +la ligne en faisant considérer a bash qu'il s'agit de la même ligne.

    +

    Globalement, il faut admettre que bash n'a pas vocation a être un +langage de programmation extrêmement développé. Sans framework +graphique, avec peu de manières d'utiliser de grandes variables, ou +encore une gestion de la mémoire risible, bash n'a rien d'un langage de +développement professionnel.
    +Cependant, le simple fait qu'il soit considéré comme un langage de +programmation a part entière font de lui un langage de script d'une +puissance incontestable, et sa simplicité et sa grande popularité font +de lui un langage de choix pour apprendre la programmation simplement et +sans trop se prendre la tête.

    +

    J'espère que cet article aura été utile a certain-e-s, et je vous +souhaite bonne chance dans votre découverte de la programmation (n'allez +pas voir ceux qui font de l'orienté objet, c'est des méchants :3)

    +
    +
    +
    +

    Les différentes couches d'un système d'exploitation

    +
    + Date + + Thu 06 September 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques +années (plus ou moins, parce que j'ai toujours un Windows en dual boot, +principalement pour les jeux (possiblement plus pour longtemps, avec +l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou +moins bien mon système. Or il y a plusieurs choses a savoir sur les +systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est +le système de couches.

    +

    Un système d'exploitation (de type UNIX, \<troll>enfin un vrai système quoi. +\</troll>) incorpore plusieurs systèmes de couches.

    +

    Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique, +c'est a dire que tous les composants sont intégrés au kernel. Ce qui +signifie que rien ne peut être ajouté au noyau sans recompiler celui ci. +Or, quand on sait que le noyau comprend entre autres les drivers du +matériel et des systèmes de fichier, cela peut poser des problèmes quand +a la taille du kernel et a la licence libre de ce dernier.

    +

    Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui +signifie que des modules peuvent être chargé a tout moment en cours +d’exécution, ce qui permet l'utilisation de nouveaux systèmes de +fichiers a chaud, ou l'insertion de matériel et l'installation de +drivers sans interrompre l’exécution du système (Windows utilise un +système de fausse installation de drivers pour le matériel externe, et +un système de pré-installation des drivers pour les périphériques dits +"plug and play")

    +

    Après le noyau intervient le système. Or, au tous premiers instants du +boot, les systèmes GNU/Linux utilisent un système permettant de limiter +l'utilisation de ressources systèmes si elles ne sont pas nécessaires, +et incorpore ainsi un système dit de "runlevels"

    +

    Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce +runlevel permet de tester le bon démarrage du système sans avoir a +effectuer de manipulation pour le ré-éteindre

    +

    Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté +étant donné que ce runlevel donne accès a un système en étant +automatiquement loggé en tant que root, avec tous les autres +utilisateurs désactivés, de même que tous les systèmes de réseaux

    +

    Le runlevel 2 est appelé mode multi user, et vous mets en face d'un +système classique. en ligne de commande, mais avec tous les systèmes de +réseau désactivés.

    +

    Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux +activés.

    +

    Le runlevel 4 n'est pas officiellement défini, et est censé être +activable en fonction des besoins de l'utilisateur. Sur la plupart des +distributions grand public, ce runlevel est lié au...

    +

    Runlevel 5! Multi-user, networking, with working GUI! c'est le système +tel que vous le connaissez, avec l'interface graphique et le système de +login graphique.

    +

    Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine +quand il devient le runlevel courant.

    +

    (Il est a noter que Debian, et donc toutes les distribs qui en sont +dérivées, ne font pas de distinction entre les differents runlevels du 2 +au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login +et une interface graphique, et un mode réseau fonctionnel, bref avec des +fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)

    +

    Il est possible de changer de runlevel grâce a la commande runlevel +(oui, c'est évident...)

    +

    Les systèmes Linux utilisent aussi un système dit de SandBox , qui en +informatique est un système permettant d'isoler les processus les uns +des autres. Ainsi, la pile réseau, qui est le système auquel les +différents processus envoient les différents paquets qui doivent sortir +de la machine , et qui redistribue ces paquets, est isolée du reste du +système, en cela qu'aucun des autres processus ne peuvent modifier cette +pile hors du runlevel 1 ou 2.

    +

    De la même façon, le navigateur chrom/ium fait fonctionner tous les +onglets, ainsi que toutes les extensions, dans des processus différents. +Certaines distributions linux implémentent un système de cette sorte +pour toutes les applications, ou seulement pour certaines. ainsi Chakra +Linux a un système d'installation d'applications dans des disques +virtuels, ce qui permet une sécurité totale du processus.

    +

    Voila, j'espère vous en avoir appris un peu sur le fonctionnement des +différentes couches de linux, et j'espère que cet article vous poussera +a tester un peu votre système et a vous amuser avec les différents +runlevels

    +
    +
    +
    +

    La programmation expliquée simplement

    +
    + Date + + Mon 27 August 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Salut!
    +Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire +récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé +pas mal de temps assez occupé.

    +

    Enfin, après un certain temps a farfouiller au millieu des connecteurs +SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques +durs, je suis de retour pour un court article.
    +Du coup, je m'étais dit que j'allais reprendre sur le thème de +l'informatique expliquée au grand public, en tentant d'aller un peu plus +loin que la dernière fois sur le thème de la programmation
    +Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur. +Si a peu près tout le monde sait que "les ordinateurs, ils ne +comprennent que les 1 et les 0!", peu de gens savent comment cela +fonctionne en détail.

    +

    Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà +des notions de base en informatique. Ainsi, vous savez surement que les +ordinateurs fonctionnent avec des programmes, qui sont composés de +code.
    +Ainsi, il faut comprendre que le code (source) est "compilé" en un +fichier "binaire". Un fichier binaire est un fichier comprenant les +instructions telles qu’exécutées par le processeur, et donc absolument +illisible pour un humain.

    +

    La compilation est le processus qui transforme le code source en +binaire executable. Les binaires ont, sous Windows, l'extension .exe, +tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension +particulière.
    +Ceci étant dit, il faut comprendre que certains langages sont plus +proches que d'autres du langage processeur, les langages les plus +proches sont dits de "bas niveau". Les langages les plus éloignés sont +donc dits de haut niveau.

    +

    Par exemple, l'assembleur est l'un des languages de plus bas niveau, +tandis que python par exemple est un langage de plus haut niveau. Les +langages de haut niveau sont souvent bien plus simples a comprendre et a +apprendre que les langages de bas niveau

    +

    Ainsi, en C, un langage de niveau relativement bas, pour afficher +"hello world" sur l'écran, le code nécessaire est :

    +
    #include 
    +void main() {
    +printf("hello world");
    +return 0;
    +}
    +
    + + +

    le même programme en python s'écrit :

    +
    print "hello world"
    +
    + + +

    et n'a pas besoin d'être compilé , puisqu'il peut être intepreté +directement.

    +

    Python utilise en effet un système similaire a Java en ayant un +interpréteur dit "runtime" ou "temps réel", qui interprète le programme +sans le compiler. Java utilise un système légèrement différent, puisque +le code a besoin d'être compilé, mais est interpreté par un interpréteur +et non par le processeur.

    +

    Cette méthode permet le fameux "code once, run everywhere", ce qui +signifie que le même code est exécutable sur quasiment tous les systèmes +d'exploitation (en fait, tous ceux sur lesquels l’interpréteur est +disponible.)

    +

    Voila, je vous laisse sur le fonctionnement de Java et de Python, et je +vais me coucher.
    +A bientôt!

    +
    +
    +
    +

    GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère

    +
    + Date + + Wed 22 August 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    GNU/Linux est un vaste et extraordinaire territoire technologique, mais +je ne vais pas m'attarder ici sur les aspects profondément techniques de +ce territoire pour faire plutôt une sorte d'introduction a ce qu'est +vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de +connaissances en informatique.

    +

    GNU/Linux, que j’abrégerai ici en Linux pour plus de simplicité, est un +Système d'Exploitation. Un système d'exploitation est, pour simplifier, +un ensemble d'outils informatiques qui vous permettent d'utiliser votre +ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation +de système d'exploitation (Operating System en anglais) est OS. Les 4 +principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et +Solaris. Les trois derniers sont issus d'un autre système, plus ancien, +nommé UNIX.

    +

    De ce fait, on pourrait penser que Linux remplace complètement Windows +une fois installé, et comprend une interface graphique, et toutes sortes +d'utilitaires permettant a l'utilisateur d'utiliser le système (sous +Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer. +Pour l'interface graphique, pensez a... Pensez que votre système affiche +autre chose que des lignes de commande.) Or non, une fois installé, +Linux en lui même ne vous afficherait aucune interface graphique, et +s'il est effectivement livré avec des utilitaires, ils ne sont que des +programmes en ligne de commande. Autant les utilisateurs avancés sauront +s'en servir, et pourront argumenter que c'est plus efficace ou plus +rapide, autant les utilisateurs basiques préfèrent une interface +graphique. Alors comment en obtenir une?

    +

    Ici, il convient de faire une précision importante. Si il n'existe +qu'une seule version de Windows, ou de Mac OS, il existe en fait +plusieurs centaines de "versions" différentes de Linux. Appelées +distributions, ces dernière sont développées par des groupes +complètement séparés, et se basent sur le fait que Linux soit +entièrement placé sous licence libre (ce qui leur permet de l'utiliser a +leur guise, a condition que leur travail soit lui aussi placé sous +licence libre). De ce fait, de nombreuses distributions existent et se +développent en parallèle. On peut ainsi citer Debian, qui est l'une +des distributions les plus importantes, ou encore Ubuntu, qui est +l'une des plus connues et des plus simples a utiliser.

    +

    Ainsi, ces distributions intègrent une interface graphique. Cependant, +grâce a la liberté dont bénéficient les développeurs sous Linux, il +existe de nombreuses interfaces graphiques différentes : Unity, la +nouvelle interface d'Ubuntu; GNOME , une interface qui vise a la +simplicité; ou encore KDE, une interface utilisateur ressemblant a +Windows 7.

    +

    Ainsi, le choix astronomique de distributions Linux a bien un sens : +chacune d'entre elle intègre des outils différents. Par exemple, Debian +intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend +particulièrement stable. Ubuntu intègre Unity, ce qui en fait une +distribution particulièrement intuitive. Linux Mint intègre Cinnamon, +qui est une version dérivée de GNOME 3, ce qui permet encore une autre +expérience. Et Arch Linux n'intègre pas d'interface graphique du tout, +ce qui permet a l'utilisateur de choisir entre les multiples interfaces +existantes.

    +

    Ce qu'il est important de retenir de cela, c'est que Linux est un OS +complètement libre, ce qui signifie que n'importe qui peut modifier et +utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi, +Linux est un OS qui est véritablement créé par des passionnés, pour tous +et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué +a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus. +Cependant, Linux donne la possibilité a l'utilisateur de le rendre +affreusement complexe, mais aussi de le rendre adapté a ses besoins, +quels que soient ceux ci. Et c'est la que réside l'incroyable puissance +de ce Système d'Exploitation. Il est extraordinairement adaptable.

    +

    N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas +technophiles. Ils pourraient adorer, et peut être même le devenir :)

    +

    A bientôt!

    +
    +
    +
    +

    Débuts, présentation, etc...

    +
    + Date + + Sat 18 August 2012 + +
    + By + Wxcafe +
    + Category + Notes +
    + + + + +
    +

    Bonjour!

    +

    Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur +Twitter, mais aussi sur IRC (Je traîne pas mal sur +irc.freenode.net/##nolife et #debian-fr)

    +

    J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je +fais partie de ce genre de personne qui sont capables d'investir tout +leur temps et leur énergie a s’intéresser a un sujet en particulier, et +qui ne peuvent pas vivre sans leurs passions, avec une petite différence +cependant, qui est que je m’intéresse a plusieurs choses : +l'informatique, qui est un champ tellement large qu'on peut passer une +vie a apprendre des choses dessus, et plus particulièrement à +l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres +{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les +trolls seront a partir de maintenant indiqués avec le tag [tr]] du +libre, je préfère utiliser de l'open-source si c'est possible}, +programmation en C, python et java, etc...) , mais aussi a +l’électronique.

    +

    Dans un tout autre registre, je m’intéresse aussi +beaucoup aux différents aspects du féminisme et des égalités sexuelles +(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) , +et a la culture dite "geek" en général.

    +

    Je tenterai de poster ici le plus souvent possible, mais j'ai de gros +problèmes en terme de régularité de post, donc ne vous inquiétez pas si +vous ne voyez rien pendant deux semaines.

    +

    Merci beaucoup de votre attention, et a bientôt!

    +
    +
    + +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/archlinux-made-simple/index.html b/output/posts/archlinux-made-simple/index.html new file mode 100644 index 0000000..5185a09 --- /dev/null +++ b/output/posts/archlinux-made-simple/index.html @@ -0,0 +1,508 @@ + + + + + Archlinux made simple + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + Archlinux made simple +

    +
    +
    +
    +
    + Date + + Fri 05 October 2012 + +
    + By + Wxcafe +
    + Category + OSes +
    + + + + +
    +

    Archlinux est réputée être une distribution Linux très complexe a +installer et a maintenir.

    +

    Je vais tenter ici de vous convaincre que ce n'est pas le cas, et +qu'elle peut se monter très intéressante et très instructive a installer +tout autant qu'a utiliser.

    +

    Il convient tout d'abord de rappeler a quels principes obéit Arch:

    +
      +
    1. +

      Le KISS : Keep It Simple and Stupid, Archlinux tente de faire des + programmes simples et utilisables par tous. Avec comme base de + simplicité les utilisateurs de LFS... Mais il n'empêche qu'avec un peu + de bonne volonté, la configuration n'est pas si compliquée!

      +
    2. +
    3. +

      La philosophie UNIX : chaque programme est prévu pour ne remplir + qu'une seule tâche. Bien entendu, cela ne concerne que les programmes + conçus pour s’insérer dans la philosophie UNIX, et les installations de + dépendances avec le gestionnaire de paquet d'Arch fonctionnent + superbement bien.

      +
    4. +
    +

    De plus, posons les bases d'Arch : le gestionnaire de paquets s'appelle +pacman, et les commandes de base sont :

    +
      +
    • +

      recherche d'un paquet :

      +
      pacman -Ss paquet
      +
      + + +
    • +
    • +

      installation d'un paquet :

      +
      sudo pacman -S paquet
      +
      + + +
    • +
    • +

      désinstallation d'un paquet :

      +
      sudo pacman -R paquet
      +
      + + +
    • +
    • +

      mise a jour de tous les paquets installés :

      +
      sudo pacman -Syu paquet
      +
      + + +
    • +
    +

    Archlinux est une distribution dite "rolling release", ce qui signifie +qu'il n'y a pas de version a proprement dites, et que les paquets se +mettent a jour en permanence, sans jamais changer la "version" d'Arch. +Il n'y a d'ailleurs qu'une seule version de l'installeur sur le site, +puisqu'une version plus ancienne n'aurait aucun sens.

    +

    Arch n'offre pas d'interface graphique par défaut : après avoir installé +le système, vous n'aurez qu'une invite de commande. Heureusement, je +vais ici vous guider a travers l'installation d'une interface graphique +(mate, le fork de gnome 2)

    +

    L'installation d'Arch se fait par le réseau, veillez a avoir une +connection WiFi ou filaire a proximité avant de suivre ce guide.

    +

    Ce guide utilise SystemV, alors qu'Arch va prochainement passer sous +systemd. N'ayant pas encore eu le temps d’expérimenter assez avec ce +dernier, je ferais un tutoriel pour passer votre Arch a systemd bientôt.

    +

    Bon, passons a l'explication de l'installation proprement dite :

    +

    Tout d'abord, téléchargeons l'iso d'arch la plus récente :

    +
    wget http://mir.archlinux.fr/iso/2012.09.07/archlinux-2012.09.07-dual.iso
    +
    + + +

    Ensuite, gravons cette image sur un disque USB :

    +
    dd if=archlinux-2012.09.07-dual.iso of=/dev/sdX
    +
    + + +

    Après reboot de la machine sur l'iso en question et choix de +l'architecture, nous sommes accueillis par un shell root.

    +

    La première chose a faire est de paramétrer le clavier :

    +
    loadkeys fr
    +
    + + +

    Puis nous pouvons passer a l'installation proprement dite. +Partitionnement :

    +
    cfdisk # cfdisk est suffisamment clair pour ne pas nécessiter d'explications
    +
    + + +

    formatage des partitions :

    +
    mkfs.ext4 /dev/sda1 # partition root
    +
    +pacman -Syu btrfs-progs && mkfs.btrfs /dev/sda2 # partition home
    +
    +mkswap /dev/sda3 && swapon /dev/sda3 # partition de swap
    +
    + + +

    Montons les partitions nouvellement créées, puis installons le système :

    +
    mount /dev/sda1 /mnt
    +
    +mkdir /mnt/home && mount /dev/sda2 /mnt/home
    +
    +dhclient eth0 # si vous utilisez une connection filaire, sinon voire http://wiki.archlinux.fr/Wifi#Configuration
    +
    +pacstrap /mnt base base-devel
    +
    +genfstab -p /mnt > /mnt/etc/fstab
    +
    + + +

    Allons prendre un café le temps que ça charge, puis installons les +quelques paquets nécessaires a notre installation et au premier +démarrage:

    +
    pacstrap /mnt syslinux btrfs-progs wireless_tools dhclient
    +
    + + +

    Maintenant, passons sur notre install toute fraîche d'Arch :

    +
    arch-chroot /mnt bash
    +
    + + +

    configurons les bases :

    +
    echo HOSTNAME > /etc/hostname
    +
    +ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
    +
    +date MMJJhhmmAAAA
    +
    +hwclock --systohc
    +
    +vim /etc/locale.gen # Décommentez les lignes correspondant au français : fr_FR.UTF-8 et fr_FR.ISO-8859-1
    +
    +echo  'LANG="fr_FR.UTF-8"' > /etc/locale.conf
    +
    +locale-gen
    +
    +mkinitcpio -p linux
    +
    + + +

    Enfin, vérifions que syslinux est correctement configuré :

    +
    vim /boot/syslinux/syslinux.cfg # il devrait y avoir "append root=/dev/sda1"
    +
    + + +

    Si tout est correct, installons syslinux, et paramétrons un mot de passe +root :

    +
    syslinux-install_update /dev/sda -mia
    +
    +passwd root
    +
    + + +

    Et voila, l'installation est terminée! Plus qu'a quitter la session et a +redémarrer l'ordinateur!

    +
     exit
    +umount /mnt/home 
    +umount /mnt
    +reboot
    +
    + + +

    Fini!

    +

    Prenons une petite pause. La partie suivante de ce tutoriel consister en +un paramétrage des principaux services nécessaires a l'utilisation d'un +OS, disons, moyen :

    +
      +
    • +

      Installation de MATE, le gestionnaire de bureau (voir +http://mate-desktop.org/)

      +
    • +
    • +

      Installation de sudo et de networkmanager pour faire fonctionner les +composants essentiels du système sans avoir a tout activer a la main a +chaque démarrage

      +
    • +
    • +

      Installation de SLiM comme gestionnaire de login graphique, pour +présenter une interface plus accueillante que la console, et +configuration de celui-ci

      +
    • +
    • +

      Installation des principaux logiciels utiles non inclus dans mate ni +base (yaourt, chromium, thunderbird, etc...).

      +
    • +
    +

    Ce guide est bien sur optionnel, si vous souhaitez utiliser Arch avec un +gestionnaire de bureau autre que mate, ou sans, vous pouvez vous arrêter +ici.

    +

    Bon, reprenons.

    +

    Nous sommes donc sur une demande de mot de passe. Entrez donc le mot de +passe paramétré plus haut pour le root, puis retapez la commande +utilisée plus tôt pour vous connecter a internet.

    +

    Il convient d'ajouter le dépôt de MATE pour installer ce dernier, puis +d'effectuer l'action en question :

    +
    vim /etc/pacman.conf
    +
    + + +

    Ici, ajoutez les lignes suivantes :

    +
    [mate]
    +Server = http://repo.mate-desktop.org/archlinux/$arch
    +
    + + +

    Installons maintenant les paquets :

    +
    pacman -Syu mate mate-extras dbus dbus-core alsa networkmanager sudo
    +
    + + +

    Ajoutons un compte utilisateur pour utiliser les composants du système +sans tout crasher a chaque fois :

    +
    useradd -g users -G wheel,audio,optical,lp,scanner,log,power,floppy,storage,games,video -m -s /bin/bash *votrenom*
    +passwd *votrenom*
    +su *votrenom*
    +
    + + +

    Il faut maintenant éditer le fichier \~/.xinitrc pour préciser a X.org +ce que l'on veut utiliser :

    +
    echo "exec ck-launch-session mate-session" > ~/.xinitrc
    +
    + + +

    Profitons en pour ajouter les démons système au lancement :

    +
    vim /etc/rc.conf
    +
    + + +

    Ajoutez donc dbus, alsa. hwclock et networkmanager dans la section +DAEMONS (entre les parenthèses, après crond normalement)

    +
    DAEMONS=(syslog-ng network crond dbus alsa hwclock networkmanager)
    +
    + + +

    Pour éviter un reboot, il est ici possible de faire un

    +
    su
    +
    + + +

    Puis un

    +
     /etc/rc.d/dbus start && /etc/rc.d/alsa start && /etc/rc.d/networkmanager start
    +
    + + +

    Sinon, il est possible de juste redémarrer.
    +Une fois cela fait, profitez de ce moment pour vous autoriser vous même +a utiliser sudo. Loggez vous en root, et :

    +
     vim /etc/sudoers
    +
    + + +

    Décommentez la ligne qui commence par # %wheel ALL=(ALL)
    +Sauvegardez le fichier, puis, après un su *votrenom*, tentez de faire +un sudo ls /
    +Normalement, vous devriez avoir un listing du dossier /
    +Bon, maintenant, pourquoi ne pas tenter de lancer MATE?
    +C'est simple comme bonjour :

    +
     startx
    +
    + + +

    Et PAF! Voila un MATE desktop flambant neuf a configurer!
    +Avant de faire ça, retournez sur un TTY (CTRL+ALT+Fx), loggez vous, +puis installez SLiM (sudo pacman -Syu slim).
    +Configurons le:

    +
    echo "exec dbus-launch mate-session" > ~/.xinitrc && vim /etc/slim.conf
    +
    + + +

    Éditez la ligne +"sessions xfce4,icewm-session,wmaker,blackbox" de facon a +ce qu'elle ressemble a "sessions mate-session"
    +Puis ajoutez slim dans /etc/rc.conf, dans la section DAEMONS.
    +Normalement, tout devrait fonctionner!
    +Ah oui, et pour installer thunderbird, firefox, chromium, etc...

    +
    sudo pacman -Syu chromium thunderbird xchat firefox rhythmbox pidgin transmission-gtk vlc
    +
    + + +

    Voila! Et comme dirait @Spartition, c'est sale, mais qu'est-ce que c'est +bon!
    +A plus~

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/debuts-presentation-etc/index.html b/output/posts/debuts-presentation-etc/index.html new file mode 100644 index 0000000..3b12efc --- /dev/null +++ b/output/posts/debuts-presentation-etc/index.html @@ -0,0 +1,246 @@ + + + + + Débuts, présentation, etc... + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + Débuts, présentation, etc... +

    +
    +
    +
    +
    + Date + + Sat 18 August 2012 + +
    + By + Wxcafe +
    + Category + Notes +
    + + + + +
    +

    Bonjour!

    +

    Je m'appelle Wxcafé, et ça fait pas mal de temps que je sévis sur +Twitter, mais aussi sur IRC (Je traîne pas mal sur +irc.freenode.net/##nolife et #debian-fr)

    +

    J'ai 17 ans, je suis donc étudiant (bac général), je vis a Paris, et je +fais partie de ce genre de personne qui sont capables d'investir tout +leur temps et leur énergie a s’intéresser a un sujet en particulier, et +qui ne peuvent pas vivre sans leurs passions, avec une petite différence +cependant, qui est que je m’intéresse a plusieurs choses : +l'informatique, qui est un champ tellement large qu'on peut passer une +vie a apprendre des choses dessus, et plus particulièrement à +l'informatique avancée (Noyaux dérivés d'UNIX et de Linux, outils libres +{bien que n'étant pas un barbu intégriste [ceci est un troll assumé. Les +trolls seront a partir de maintenant indiqués avec le tag [tr]] du +libre, je préfère utiliser de l'open-source si c'est possible}, +programmation en C, python et java, etc...) , mais aussi a +l’électronique.

    +

    Dans un tout autre registre, je m’intéresse aussi +beaucoup aux différents aspects du féminisme et des égalités sexuelles +(anti-homophobie/transphobie/biphobie/etc , anti-sexisme, et cætera) , +et a la culture dite "geek" en général.

    +

    Je tenterai de poster ici le plus souvent possible, mais j'ai de gros +problèmes en terme de régularité de post, donc ne vous inquiétez pas si +vous ne voyez rien pendant deux semaines.

    +

    Merci beaucoup de votre attention, et a bientôt!

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/index.html b/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/index.html new file mode 100644 index 0000000..b0a711d --- /dev/null +++ b/output/posts/gnulinux-pour-les-non-technophiles-ou-los-libre-pour-votre-grand-mere/index.html @@ -0,0 +1,285 @@ + + + + + GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + GNU/Linux pour les non technophiles, ou l'OS libre pour votre grand-mère +

    +
    +
    +
    +
    + Date + + Wed 22 August 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    GNU/Linux est un vaste et extraordinaire territoire technologique, mais +je ne vais pas m'attarder ici sur les aspects profondément techniques de +ce territoire pour faire plutôt une sorte d'introduction a ce qu'est +vraiment GNU/Linux, pour les gens n'ayant aucune ou très peu de +connaissances en informatique.

    +

    GNU/Linux, que j’abrégerai ici en Linux pour plus de simplicité, est un +Système d'Exploitation. Un système d'exploitation est, pour simplifier, +un ensemble d'outils informatiques qui vous permettent d'utiliser votre +ordinateur, ainsi, Windows est un système d'exploitation. L'abréviation +de système d'exploitation (Operating System en anglais) est OS. Les 4 +principaux OS existants aujourd'hui sont Windows, Mac OS, GNU/Linux, et +Solaris. Les trois derniers sont issus d'un autre système, plus ancien, +nommé UNIX.

    +

    De ce fait, on pourrait penser que Linux remplace complètement Windows +une fois installé, et comprend une interface graphique, et toutes sortes +d'utilitaires permettant a l'utilisateur d'utiliser le système (sous +Windows, pensez a l'explorateur de fichiers, ou a Internet Explorer. +Pour l'interface graphique, pensez a... Pensez que votre système affiche +autre chose que des lignes de commande.) Or non, une fois installé, +Linux en lui même ne vous afficherait aucune interface graphique, et +s'il est effectivement livré avec des utilitaires, ils ne sont que des +programmes en ligne de commande. Autant les utilisateurs avancés sauront +s'en servir, et pourront argumenter que c'est plus efficace ou plus +rapide, autant les utilisateurs basiques préfèrent une interface +graphique. Alors comment en obtenir une?

    +

    Ici, il convient de faire une précision importante. Si il n'existe +qu'une seule version de Windows, ou de Mac OS, il existe en fait +plusieurs centaines de "versions" différentes de Linux. Appelées +distributions, ces dernière sont développées par des groupes +complètement séparés, et se basent sur le fait que Linux soit +entièrement placé sous licence libre (ce qui leur permet de l'utiliser a +leur guise, a condition que leur travail soit lui aussi placé sous +licence libre). De ce fait, de nombreuses distributions existent et se +développent en parallèle. On peut ainsi citer Debian, qui est l'une +des distributions les plus importantes, ou encore Ubuntu, qui est +l'une des plus connues et des plus simples a utiliser.

    +

    Ainsi, ces distributions intègrent une interface graphique. Cependant, +grâce a la liberté dont bénéficient les développeurs sous Linux, il +existe de nombreuses interfaces graphiques différentes : Unity, la +nouvelle interface d'Ubuntu; GNOME , une interface qui vise a la +simplicité; ou encore KDE, une interface utilisateur ressemblant a +Windows 7.

    +

    Ainsi, le choix astronomique de distributions Linux a bien un sens : +chacune d'entre elle intègre des outils différents. Par exemple, Debian +intègre GNOME 2, qui est l'ancienne version de GNOME, ce qui la rend +particulièrement stable. Ubuntu intègre Unity, ce qui en fait une +distribution particulièrement intuitive. Linux Mint intègre Cinnamon, +qui est une version dérivée de GNOME 3, ce qui permet encore une autre +expérience. Et Arch Linux n'intègre pas d'interface graphique du tout, +ce qui permet a l'utilisateur de choisir entre les multiples interfaces +existantes.

    +

    Ce qu'il est important de retenir de cela, c'est que Linux est un OS +complètement libre, ce qui signifie que n'importe qui peut modifier et +utiliser tout le code de Linux gratuitement et comme il l'entend. Ainsi, +Linux est un OS qui est véritablement créé par des passionnés, pour tous +et toutes. Surtout, il convient de retenir que Linux n'est pas compliqué +a utiliser, ni a installer. Windows et Mac OS ne le sont pas non plus. +Cependant, Linux donne la possibilité a l'utilisateur de le rendre +affreusement complexe, mais aussi de le rendre adapté a ses besoins, +quels que soient ceux ci. Et c'est la que réside l'incroyable puissance +de ce Système d'Exploitation. Il est extraordinairement adaptable.

    +

    N'hésitez donc pas a le présenter a vos proches, même s'ils ne sont pas +technophiles. Ils pourraient adorer, et peut être même le devenir :)

    +

    A bientôt!

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/index.html b/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/index.html new file mode 100644 index 0000000..ffcaa39 --- /dev/null +++ b/output/posts/introduction-a-bash-en-tant-que-language-de-programmation/index.html @@ -0,0 +1,418 @@ + + + + + Introduction a bash en tant que language de programmation. + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + Introduction a bash en tant que language de programmation. +

    +
    +
    +
    +
    +

    L’interpréteur de commandes bash (Bourne Again SHell) +est possiblement le shell le plus connu, notamment grâce a son +intégration en tant que shell par défaut dans les distributions Linux +les plus répandues (Debian - Ubuntu, Fedora, OpenSUSE, Mandriva - +Mageia, etc...).

    +

    Cependant, il n'est souvent connu qu'en tant qu’interpréteur de +commande. Alors qu'en réalité, le bash est un langage de programmation +(presque) complet! Ainsi, il intègre les structures de contrôle +habituelles ( pour mémoire, les structures de contrôle comprennent les +conditions (les ifs), les boucles (les while), et les choix (les case), +entre autres.), et est donc ce que l'on pourrait appeler un langage de +script, interprété, de la même façon que python, a la difference près +qu'il contient un prompt (un système d'entrée de commande interactif) +bien plus complet et développé que python.

    +

    Cependant, les programmes en bash ne sont executables que dans un +environnement de type UNIX, et donc pas sous Windows (cygwin +(cygwin.com) propose ceci dit un système permettant d'utiliser bash sous +windows. Il faut malgré tout convenir que cet environnement est bien +plus compliqué a manipuler, et globalement ne permet pas d'acceder a des +portages de qualité satisfaisante.)

    +

    Ainsi, il est possible de créer des fichiers .sh, contenant des +instructions bash mises a la suite (de la même façon qu'un script BATCH +Windows .bat), et faisant appel autant aux commandes internes de bash, +aussi bien que les commandes externes mises en place par les programmes +installés sur le système, exactement comme dans une invite de commande. +Ainsi, pour appeller firefox, la commande 'firefox' lancera le petit +panda roux directement dans la boite magique, tandis qu'un if +[condition] suivi d'un then (quelque chose) lancera le fameux quelque +chose suscité si la condition est vérifiée. Un peu comme en C, quoi.

    +

    De cette façon, et avec quelques informations et connaissances, il est +facile de comprendre le fonctionnement de la programmation en bash. +Quelques exemples commentés:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    #!/bin/bash 
    +# La ligne du dessus est très importante, c'est elle qui dit a bash quel doit être 
    +# l'interpreteur des commandes écrites dans ce script. Ici, on dit a bash d'interpréter 
    +# lui même les commandes comprises dans ce script. On aurait tout de fois pu lui faire 
    +# executer du python, par exemple, en mettant #!/usr/bin/python a la place.
    +echo "this is a test of bash as a simple script manager" # echo est une commande d'affichage de message.
    +echo "what's your name, user?" 
    +read your_name # la commande read permet de demander a l'utilisateur de donner une 
    +# information, stockée dans la variable en paramètre. 
    +echo $your_name "is your name" # echo permet aussi d'afficher la valeur de variables. 
    +# Ici, on renvoie la variable remplie précédemment, suivie d'un message. 
    +exit # cet appel a exit n'est pas obligatoire, mais donne un aspect plus 
    +# propre au code. Il ne quittera pas la session de terminal, cependant.
    +
    +
    + +

    Voila. Ce script bash ne sert pas a grand chose, mais il a le mérite +d'être clair quand aux capacités et a la simplicité du bash en tant que +language de programmation. Alors en effet, nous n'avons ici absolument +pas utilisé les capacités de bash en lui même, et n'avons fait que le +renvoyer a des programmes externes (sauf read, il est vrai). Voyons +maintenant la syntaxe de bash quand il s'agit d'utiliser les structures +de contrôle:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    #!/bin/bash 
    +echo "welcome to this second bash program. would you please kindly enter the name of the machine you're running this on?" 
    +read host_name 
    +if [ $host_name == $HOSTNAME ] ## voici la syntaxe du if. Attention a bien penser a mettre les espaces avant la première variable, et après la seconde. La variable $HOSTNAME ici utilisée est une variable présente par défaut sur le système. 
    +then echo "you told the truth!" 
    +fi ## le fi est la commande fermant le if, tout comme le EndIf en basic. C'est un peu vieillot, mais important en bash. 
    +if [ $host_name != $HOSTNAME ] ## l'opérateur != est l'inverse de ==, il vérifie donc si les deux variables ne sont pas les mêmes. 
    +then echo "you lied!" 
    +fi 
    +exit
    +
    +
    + +

    Voila un petit programme permettant d'apprendre la syntaxe du if en +bash. comme vous pouvez le voir, le language est plutôt lite, et la +structure if n'est pas très difficile a prendre en main.

    +

    Passons maintenant au while:

    +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    #!/bin/bash
    +echo "what is your name?"
    +read name
    +while [ 1 < 10 ]    ## le while se présente sous la forme while (truc); do (machin); done. Les [] sont en fait des programmes differents, inclus dans bash.
    +do echo "i love" $name
    +done
    +exit
    +
    +
    + +

    Ce petit programme permet d'observer les bases de while (qui est la +boucle de base en bash).

    +

    Le troisième opérateur de bash est case. Voyons:

    +
     1
    + 2
    + 3
    + 4
    + 5
    + 6
    + 7
    + 8
    + 9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    #!/bin/bash
    +echo "please enter a number between one and five"
    +read number
    +case $number in 
    +1)
    +echo "the choosen number was one"
    +;;
    +2)
    +echo "the choosen number was two"
    +;;
    +3)
    +echo "the choosen number was three"
    +;;
    +4)
    +echo "the choosen number was four"
    +;;
    +5)
    +echo "the choosen number was five"
    +;;
    +*)
    +echo "this number is not correct"
    +;; 
    +esac
    +exit
    +
    +
    + +

    case est un opérateur plus complexe a utiliser a bon escient, et sert a +faire des ifs multiples sans avoir a taper des dizaines de lignes de +code.
    +(pour ceux qui auraient du mal avec cet opérateur, il faut comprendre +que le code vérifie chacune des conditions : le 1) est validé si la +valeur de \$number est 1, le 2) est validé si cette valeur est 2, etc.. +le *) désigne toutes les valeurs, et est donc validé si aucune autre +valeur n'a précédemment acceptée.

    +

    Quelques notions manquent ici:
    +- les nombres aléatoires sont générés par un appel a la variable +\$RANDOM, qui renvoie un nombre aléatoire entre 0 et 32767 (un entier a +16 bits donc). il est possible de faire des invocations a des nombres +aléatoires plus grands, mais les méthodes permettant de faire cela sont +plus complexes, et je ne les aborderai donc pas ici.
    +- comme vous avez pu le constater, les variables sont désignées en tant +que telles par l'utilisation d'un symbole \$ au début de leur nom. +Ainsi, echo number renverra "number", tandis que echo \$number renverra +le résultat de la variable \$number.
    +être utilisées dans un programme bash.
    +- comme vous avez pu le constater, les commandes doivent tenir en +théorie en une ligne. Cependant, le caractère \ permet de retourner a +la ligne en faisant considérer a bash qu'il s'agit de la même ligne.

    +

    Globalement, il faut admettre que bash n'a pas vocation a être un +langage de programmation extrêmement développé. Sans framework +graphique, avec peu de manières d'utiliser de grandes variables, ou +encore une gestion de la mémoire risible, bash n'a rien d'un langage de +développement professionnel.
    +Cependant, le simple fait qu'il soit considéré comme un langage de +programmation a part entière font de lui un langage de script d'une +puissance incontestable, et sa simplicité et sa grande popularité font +de lui un langage de choix pour apprendre la programmation simplement et +sans trop se prendre la tête.

    +

    J'espère que cet article aura été utile a certain-e-s, et je vous +souhaite bonne chance dans votre découverte de la programmation (n'allez +pas voir ceux qui font de l'orienté objet, c'est des méchants :3)

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/la-cryptographie-avec-pgp-et-principalement-gnupg/index.html b/output/posts/la-cryptographie-avec-pgp-et-principalement-gnupg/index.html new file mode 100644 index 0000000..338d5c1 --- /dev/null +++ b/output/posts/la-cryptographie-avec-pgp-et-principalement-gnupg/index.html @@ -0,0 +1,383 @@ + + + + + La cryptographie avec PGP et principalement GnuPG + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + La cryptographie avec PGP et principalement GnuPG +

    +
    +
    +
    +
    + Date + + Mon 19 November 2012 + +
    + By + Wxcafe +
    + Category + Tutoriel +
    + + + + +
    +

    PGP (pour pretty good privacy) est un système de +chiffrement asymétrique (pour plus d'information sur le chiffrement +asymétrique, voir ici) utilisant en général les algorithmes RSA +et/ou DSA, et pouvant servir a chiffrer tout fichier, mais aussi a +signer des emails. Le système de signature consiste a s'identifier en +tant que la personne que l'on est, en certifiant de son identité, et +repose sur un système dit de Web of Trust.

    +

    Ce concept de Web of Trust est simple: si je valide le code vous +identifiant (votre clé), en certifiant que vous êtes qui vous êtes et +que je vous connais, et que d'autres personnes m'ont déjà +personnellement validé, les autres utilisateurs seront enclins a croire +que vous êtes en effet la personne que vous prétendez être. Bien +entendu, les utilisateurs validant trop de clés rapportées comme fausses +voient la valeur de leurs signatures baissée, et toutes les clés signées +par ces utilisateurs voient leur crédibilité baisser.
    +Inversement, les "bons utilisateurs" voient la valeur de leurs +signatures augmentée, ce qui augmente la crédibilité des clés qu'ils ont +signées.

    +

    Ceci dit, un email peut être a la fois signé et chiffré, de façon a être +sûr, non seulement que l’expéditeur de l'email est bien celui qu'il dit +être, mais aussi que l'email n'a pas été modifié entre l'envoi et +la réception (en effet, avec un chiffrement de type RSA/DSA, une +modification du corps de l'email rend ce dernier illisible, la clé +publique ne  correspondant plus a la phrase de passe du message), ce qui +offre bien évidemment des avantages non négligeables dans un +environnement ou la protection des échanges est importante (soit a peu +près partout sur internet, si vous tenez a votre vie privée. Pensez a +quitter Gmail aussi, par exemple).

    +

    Il est cependant a noter que les clés publiques sont généralement +situées sur un serveur de clés publiques, tel pgp.mit.edu ou encore +subkeys.pgp.net (certaines personnes préfèrent garder leur clés hors des +serveurs de clés publiques, craignant une compromission de ces serveurs. +Dans le cas d'utilisateurs normaux (c'est a dire n'échangeant pas de +secrets classés secret-défense par email), la protection offerte par les +serveurs de clé publiques est suffisante)

    +

    L'une des implémentations les plus connues et utilisées de PGP est sans +conteste GPG (GNU Privacy Guard) , qui comme son nom l'indique fait +partie du projet GNU, et qui (<troll> de façon surprenante pour un +programme GNU</troll>) est extrêmement efficace et claire.

    +

    Après ces explications techniques, voici venue le +moment intéressant/utile, a savoir l'application. Le chiffrement et la +signature de mails doivent cependant attendre un petit peu, étant donné +qu'il vous faut d'abord créer votre clé et la placer sur un serveur de +clés publiques, de façon à ce que votre destinataire puisse vous +identifier lorsqu'il recevra le mail, mais aussi a configurer votre +client mail pour utiliser gpg (je baserai les explications de cet +article sur Thunderbird, mais des explications efficaces sont trouvables +facilement sur les interwebs).

    +

    Tout d'abord, générons une clé GPG :

    +
     gpg --gen-key
    +
    + + +

    GPG va vous demander les méthodes de chiffrement que vous voulez +utiliser, le plus sur est de laisser la valeur par défaut. La question +suivante est de savoir quelle taille votre clé doit faire, il est +préférable de choisir la taille la plus importante possible (4096). GPG +veut ensuite savoir quand votre clé doit expirer. La méthode simple est +bien évidemment de ne jamais la faire expirer, il est cependant plus +intéressant dans une logique de sécurité de régler cette durée a six +mois/un an.

    +

    Des informations personnelles vous sont ensuite demandées, +concernant votre nom (mettez le vrai, tel qu'il apparaît sur votre carte +d'identité, si vous souhaitez utiliser votre véritable identité), votre +adresse mail (mettez la plus utilisée, vous pourrez en rajouter plus +tard), et un mot de passe pour la clé (utilisez un mot de passe +sécurisé!! Il est conseillé d'utiliser au moins 8 caractères, dont majuscules, +minuscules, caractères spéciaux et nombres (vous pouvez utiliser la +commande makepasswd, qui génère automatiquement un mot de +passe)

    +

    GPG va maintenant prendre un peu de temps pour générer le couple clé +publique/clé privée, vous devriez profiter de ce temps pour effectuer +des opérations autres sur votre ordinateur : taper des textes, lancer +des films, écouter de la musique... De façon à augmenter les chances +d'obtenir un nombre bien aléatoire (le générateur d'aléatoire se base +sur la RAM pour obtenir des bits au hasard)

    +

    Une fois cela fini, vous obtenez un couple clé publique/clé privée, que +vous ne pouvez pas visualiser entièrement pour l'instant. Il est +cependant possible (et recommandé) de les exporter pour les sauvegarder +via une commande:

    +
    gpg --armor --export --output=pubkey.gpg
    +
    + + +

    pour la clé publique, et

    +
    gpg --armor --export-secret-keys --output=seckey.gpg
    +
    + + +

    pour la clé privée. Il est possible et même souhaitable de copier ces +clés sur une clé USB, une carte SD, ou un autre support de stockage +résistant, de façon a avoir une solution de sauvegarde, au cas ou vous +perdiez ces clés sur ce PC.

    +

    Cela fait, listons les informations sur votre clé publique :

    +
    $ gpg --list-keys --fingerprint
    +pub     4096R/27D81AC8 2012-11-17
    +    Key fingerprint = 6345 A91A FF89 97E0 13D0 96A9 9E2A 1917 27D8 1AC8
    +uid             Clément Hertling (Wxcafe) 
    +uid             [jpeg image of size 14692]
    +sub     4096R/9ED7F77F 2012-11-17
    +
    + + +

    La partie pub indique que c'est une clé publique, 4096R indique que c'est +une clé RSA sur 4096 bits. La partie 27D81AC8 est +l'identifiant de la clé publique, Key fingerprint = 6345 A91A FF89 97E0 13D0 +96A9 9E2A 1917 27D8 1AC8 est appelé fingerprint de la clé. Les champs +uid sont des manières d'identifier la clé et la personne associée a +celle-ci, et enfin le champ sub est indicateur d'une subkey, système +uniquement pris en charge par GPG et non inclus dans les premières +versions de PGP, donc non-implémentées dans nombre de clients pgp.
    +Passons maintenant a la mise en place de cette clé publique sur un +serveur de clés : nous utiliserons ici le serveur pgp.mit.edu.

    +
    gpg --keyserver pgp.mit.edu --send-keys *ID de la clé a uploader*
    +
    + + +

    Maintenant que votre clé publique a été uploadée, vous pouvez l'utiliser +pour signer et chiffrer vos emails!
    +Installons donc l'extension Enigmail pour Thunderbird, permettant de +chiffrer/signer vos emails de façon transparente. Il conviendra de +paramétrer cette extension, via le menu OpenPGP dans Thunderbird, puis +Setup Wizard (l'option entre Help et About OpenPGP). Normalement, +Enigmail détecte votre installation de gpg automatiquement, si cependant +ce n'était pas le cas, vous pouvez utiliser la clé exportée tout a +l'heure (pubkey.gpg) en l'important (import key from file).

    +

    Selon les options que vous avez utilisées, vos emails seront +automatiquement signés et/ou chiffrés a l'envoi. Gardez cependant a +l'esprit que si tout le monde peut lire les mails signés, il n'en est +pas de même pour les mails chiffrés, pour lesquels il est nécessaire de +posséder la clé publique du correspondant en question, et de posséder +soi même une clé privée, donc d'utiliser OpenPGP aussi.
    +Concernant les signatures de clés, elles fonctionnent de manière très +simple :
    +Vous devez télécharger la clé de votre correspondant, via un

    +
     gpg --keyserver pgp.mit.edu --search-keys *ID de la clé de votre correspondant*
    +
    + + +

    (a noter que cette commande fonctionne aussi en cherchant une adresse +email ou un nom. Cependant, en cherchant via l'identifiant de la clé, +vous êtes sur de trouver votre correspondant. Globalement, l'email est +lui aussi assez sûr en terme de recherche de clés, tandis que le nom +donne rarement un résultat). L'étape suivante est de vérifier que votre +correspondant est bien la personne qui est spécifiée sur sa clé. Pour +cela, il convient d'avoir déjà vu physiquement cette personne et si +possible d'avoir vu une pièce d'identité lui appartenant, et d'avoir une +confirmation de cette personne que la clé que vous voyez lui appartient +bien.
    +Ceci fait, vous pouvez signer la clé via un

    +
     gpg --sign *ID de la clé a signer*
    +
    + + +

    puis la renvoyer au serveur via

    +
     gpg --keyserver pgp.mit.edu --send-key *ID de la clé a signer*
    +
    + + +

    Voila, la clé de votre correspondant est signée!

    +

    Ce tutoriel sur PGP/GPG est terminé, et votre sécurité est améliorée +grâce a cette superbe invention qu'est la cryptographie!

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/la-programmation-expliquee-simplement/index.html b/output/posts/la-programmation-expliquee-simplement/index.html new file mode 100644 index 0000000..08fb2af --- /dev/null +++ b/output/posts/la-programmation-expliquee-simplement/index.html @@ -0,0 +1,284 @@ + + + + + La programmation expliquée simplement + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + La programmation expliquée simplement +

    +
    +
    +
    +
    + Date + + Mon 27 August 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Salut!
    +Tout d'abord, je tiens a m'excuser de ne pas avoir eu le temps d'écrire +récement, mais j'ai eu la chance d'avoir un PC a monter, donc j'ai passé +pas mal de temps assez occupé.

    +

    Enfin, après un certain temps a farfouiller au millieu des connecteurs +SATA et a apprendre que, oui, l'alimentation sert aussi pour les disques +durs, je suis de retour pour un court article.
    +Du coup, je m'étais dit que j'allais reprendre sur le thème de +l'informatique expliquée au grand public, en tentant d'aller un peu plus +loin que la dernière fois sur le thème de la programmation
    +Ce qu'il faut comprendre, c'est la facon dont fonctionne un ordinateur. +Si a peu près tout le monde sait que "les ordinateurs, ils ne +comprennent que les 1 et les 0!", peu de gens savent comment cela +fonctionne en détail.

    +

    Si vous êtes sur ce blog, il y a pas mal de chance que vous ayez déjà +des notions de base en informatique. Ainsi, vous savez surement que les +ordinateurs fonctionnent avec des programmes, qui sont composés de +code.
    +Ainsi, il faut comprendre que le code (source) est "compilé" en un +fichier "binaire". Un fichier binaire est un fichier comprenant les +instructions telles qu’exécutées par le processeur, et donc absolument +illisible pour un humain.

    +

    La compilation est le processus qui transforme le code source en +binaire executable. Les binaires ont, sous Windows, l'extension .exe, +tandis que sous les systèmes UNIX-like, ils n'ont pas d'extension +particulière.
    +Ceci étant dit, il faut comprendre que certains langages sont plus +proches que d'autres du langage processeur, les langages les plus +proches sont dits de "bas niveau". Les langages les plus éloignés sont +donc dits de haut niveau.

    +

    Par exemple, l'assembleur est l'un des languages de plus bas niveau, +tandis que python par exemple est un langage de plus haut niveau. Les +langages de haut niveau sont souvent bien plus simples a comprendre et a +apprendre que les langages de bas niveau

    +

    Ainsi, en C, un langage de niveau relativement bas, pour afficher +"hello world" sur l'écran, le code nécessaire est :

    +
    #include 
    +void main() {
    +printf("hello world");
    +return 0;
    +}
    +
    + + +

    le même programme en python s'écrit :

    +
    print "hello world"
    +
    + + +

    et n'a pas besoin d'être compilé , puisqu'il peut être intepreté +directement.

    +

    Python utilise en effet un système similaire a Java en ayant un +interpréteur dit "runtime" ou "temps réel", qui interprète le programme +sans le compiler. Java utilise un système légèrement différent, puisque +le code a besoin d'être compilé, mais est interpreté par un interpréteur +et non par le processeur.

    +

    Cette méthode permet le fameux "code once, run everywhere", ce qui +signifie que le même code est exécutable sur quasiment tous les systèmes +d'exploitation (en fait, tous ceux sur lesquels l’interpréteur est +disponible.)

    +

    Voila, je vous laisse sur le fonctionnement de Java et de Python, et je +vais me coucher.
    +A bientôt!

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/la-separation-des-eglises-et-de-letat-une-idee-quelle-est-bonne/index.html b/output/posts/la-separation-des-eglises-et-de-letat-une-idee-quelle-est-bonne/index.html new file mode 100644 index 0000000..c70e708 --- /dev/null +++ b/output/posts/la-separation-des-eglises-et-de-letat-une-idee-quelle-est-bonne/index.html @@ -0,0 +1,313 @@ + + + + + La séparation des églises et de l'état, une idée qu'elle est bonne? + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + La séparation des églises et de l'état, une idée qu'elle est bonne? +

    +
    +
    +
    +
    + Date + + Thu 13 December 2012 + +
    + By + Wxcafe +
    + Category + Ranting +
    + + + + +
    +

    Aujourd'hui, et depuis 1901 (j'ai révisé mon histoire récemment), il +existe une loi dite de séparation des églises et de l'état, qui consiste +a faire en sorte que l'état n'ait rien a voir avec les differentes +églises, pour de sombres histoires d'indépendance et de laïcité. +(principes qui sont aujourd'hui en voie de disparition, mais ce n'est +pas le propos qui nous occupe ici). Cela dit, cette bonne idée +politique, si elle a évité a ses auteurs de nombreux tracas, et leur a +surement permis de conserver une tête en état de fonctionnement bien +reliée a leur colonne vertébrale, ne vous interesse que moyennement, et +vous voudriez retourner répondre a vos mails sur Gmail et micro-blogguer +(quel mot horrible...) sur twitter?

    +

    Ça tombe bien, vous abordez justement le sujet véritable de cet article +(non, mon blog n'est pas devenu un histoblog, désolé aux déçus...), a savoir +la centralisation qui se met progressivement en place sur internet depuis +quelques années : Twitter, Google, Facebook, Micro$oft, Apple, tous ces +acteurs du web (et pas que, pour certains...) ont commencé a prendre +pour manie de centraliser vos données : pour prendre un exemple simple, +si vous utilisez Gmail (qui depuis quelque temps, lit aussi vos mails +pour accorder la publicité, dites adieu a votre vie privée), vous avez +un compte Google Talk, probablement aussi un Google+.

    +

    L'outil le plus pratique aujourd'hui pour aggreger des flux RSS est +Google Reader, et vous l'utilisez aussi probablement. Votre téléphone +est un android? Ah, un Nexus? Vous avez donc toutes les applications +google installées, et Chrome mobile comme navigateur par défaut, qui est +synchronisé avec la version qui tourne sur votre PC (via les serveurs de +Google, bien sur). +Depuis peu, les recherches sur le moteur de recherche +sont elles aussi ajoutées a votre profil, enregistrées a jamais par +Google (qui n'est pas touchée, en tant que société américaine, par la +"loi des 10 ans" francaise.). Vous commencez a voir le truc? Non, ne +jetez pas ce telephone, enfin! (je refuse de rembourser tout smartphone +ayant été perdu a cause de cet article) J'ai pris ici comme exemple +Google, parce que c'est celui qui propose le plus de services, mais +Apple avec iCloud, iTunes et son iPhone fait pareil, tout comme M$ avec +WP8 et Skydrive.

    +

    Twitter et Facebook n'ont de rôle dans ce sujet qu'en ce que vous leur +fournissez des informations dont ils s'empressent de devenir seuls +propriétaires (cf les Conditions d'Utilisation de ces deux services), +puis de les revendre a des annonceurs faisant de la publicité +ciblée. Le problème est simple a apprehender, vous ne voulez pas que +l'un de ces services connaisse trop de choses sur vous (et ils recoupent +très bien les informations venant de sources differentes), car il est +évident qu'ils les vendent a des entreprises peu scrupuleuses quand +a leurs engagements de confidentialité, quand a leurs securité +aussi; mais surtout parce que depuis le 11 Septembre 2001 et le +Patriot Act, toute entreprise américaine doitfournir toutes ses +informations au gouvernement américain sans aucune intervention d'un +juge, ou de quelque institution de controle que ce soit.

    +

    Ce qui est, comme vous pouvez le comprendre, relativement +problématique. (pour ceux qui a ce point se disent "je n'ai rien a +cacher, donc je m'en fous si le gouvernement américain sait tout de +moi", je vous conseille d'aller lire cet article de Jean Marc +Manach, plein de bon sens...) Pour éviter cela, vous avez plusieurs +possibilités: utiliser des services concurrents pour tout (Facebook +Mail, Skydrive, Twitter et Google Reader par exemple), tout en vous +souvenant que comme ces entreprises sont toutes américaines, le +gouvenrnement américain détient tout de même vos informations, et que ca +lui prendra juste un peu plus de temps.

    +

    Vous pouvez aussi n'utiliser que des entreprises francaises, +mais cela ne regle que le problème du Patriot Act, et pas celui de +la revente de vos données. Et puis essayez de trouver un service équivalent +a Google Reader et fourni par une entreprise française, on en reparlera. +Non, la véritable alternative, c'est d'héberger vos services vous +même, d'avoir votre propre serveur sur lequel vous possedez le plus +de services possibles, et d'utiliser des concurents ou des services +libres au maximum pour les autres, ceux qui ne sont pas distribuables +(par exemple, les cartes sont difficiles a mettre en commun, +or plusieurs alternatives existent: Google Maps, <troll>Apple +Maps</troll>, Bing Maps, OpenStreetMaps, etc...). +Beaucoup de ces services sont cependant très facilement +décentralisables, surement parce qu'ils ont a la base étés conçus comme +des services décentralisés. Ainsi les emails, le web, le chat (via XMPP) +par exemple sont basés sur un système décentralisé.

    +

    De plus, votre serveur peut vous servir a beaucoup d'autres des +choses que vous feriez habituellement sur votre ordinateur +personnel: conserver une présence sur IRC, compiler du code, faire +du rendu vidéo, etc... En bref, un serveur peut vous servir +a effectuer toutes les opérations que vous effectuez sur votre +ordinateur sans les inconvénients de la consommation éléctrique +ni du bruit, mais vous permet aussi de ne dépendre aucunement +d'une entreprise américaine, et cependant de disposer de tous les +services utiles offerts par ces dernières.

    +

    Un serveur peut de plus vous permettre de controller parfaitement +tous ces services, sans aucune limitation d'aucune sorte, +voire de vous créer une page web. Bien entendu, il est bien plus +utile d'avoir un serveur si vous avez aussi un nom de domaine. +Heureusement, ils sont peu chers et souvent fournis avec le serveur.

    +

    Dans de prochains articles, je vous expliquerai comment louer puis +configurer votre serveur pour qu'il serve de serveur mail (IMAP/SMTP), +web, base de données, et proxy. Cela dit, comme c'est un serveur sous +linux, vous pouvez l'utiliser pour a peu près n'importe quoi.
    +Voila, a bientôt!

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/le-quenya-episode-o/index.html b/output/posts/le-quenya-episode-o/index.html new file mode 100644 index 0000000..431be6b --- /dev/null +++ b/output/posts/le-quenya-episode-o/index.html @@ -0,0 +1,250 @@ + + + + + Le Quenya - Épisode ø + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + Le Quenya - Épisode ø +

    +
    +
    +
    +
    + Date + + Tue 18 September 2012 + +
    + By + Wxcafe +
    + Category + Language +
    + + + + +
    +

    Le Quenya est, pour ceux qui ne connaissent pas (comme moi jusqu’à il y +a peu...), le nom que donnait Tolkien au dialecte principal parlé par +les Elfes dans les différentes œuvres de l'auteur, dont Le Seigneur des +Anneaux, le Hobbit, ou encore le Silmarillion. Il faut se rendre compte +avant de commencer cet article que l'une des œuvres les plus +impressionnantes de Tolkien, si ce n'est la plus grande, est +l'impressionnant travail linguistique passé sur les différentes langues +présentes dans son œuvre littéraire : L'elfique, qui est donc le quenya, +la langue des nains, qui est appelé le khazalide, etc.

    +

    En effet, a contrario des "langues" développées dans d'autres œuvres littéraires +telles Eragon ou Harry Potter, où l'auteur-e se contente de lier un mot +de français (ou d'anglais) a un mot de sa "langue", les langues de +l'oeuvre de Tolkien sont des langues complètes. Elles possèdent des +racines logiques, des systèmes de grammaire et de conjugaison propres, +une logique inhérente dans la prononciation ou l'orthographe, et ainsi +de suite.

    +

    Un véritable rêve de linguiste donc, puisque ces langues sont +pratiquement entièrement documentées par Tolkien lui même (voir +l'appendice E du SdA, particulièrement instructif a ce sujet.)

    +

    J'ai donc décidé d'apprendre le Quenya récemment, et je vais donc poster +ici des résumés des cours que je suis ( disponibles ici , une +traduction en français est disponible la en pdf ), et des infos ici +toutes les deux semaines.

    +

    Si ce sujet vous intéresse, le compte twitter @Quenya101 poste +régulièrement des informations sur le sujet, et pour plus d'infos sur le +sujet, vous pouvez en trouver par ici.

    +

    Et en tant que première leçon, vous pouvez apprendre que ce mot que vous +avez prononcé comme le Kenya tout le long de cet article se prononce en +fait [Kwenïa], ou bien Qwenya!

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/les-differentes-couches-dun-systeme-dexploitation/index.html b/output/posts/les-differentes-couches-dun-systeme-dexploitation/index.html new file mode 100644 index 0000000..477150a --- /dev/null +++ b/output/posts/les-differentes-couches-dun-systeme-dexploitation/index.html @@ -0,0 +1,292 @@ + + + + + Les différentes couches d'un système d'exploitation + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + Les différentes couches d'un système d'exploitation +

    +
    +
    +
    +
    + Date + + Thu 06 September 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Étant utilisateur plus ou moins fidèle de GNU/Linux depuis quelques +années (plus ou moins, parce que j'ai toujours un Windows en dual boot, +principalement pour les jeux (possiblement plus pour longtemps, avec +l'arrivée de Steam pour Linux... ) ), je commence a connaître plus ou +moins bien mon système. Or il y a plusieurs choses a savoir sur les +systèmes d'exploitation, et celle dont je vais parler aujourd'hui, c'est +le système de couches.

    +

    Un système d'exploitation (de type UNIX, \<troll>enfin un vrai système quoi. +\</troll>) incorpore plusieurs systèmes de couches.

    +

    Ainsi, Linux (le noyau) a commencé en étant un kernel monolithique, +c'est a dire que tous les composants sont intégrés au kernel. Ce qui +signifie que rien ne peut être ajouté au noyau sans recompiler celui ci. +Or, quand on sait que le noyau comprend entre autres les drivers du +matériel et des systèmes de fichier, cela peut poser des problèmes quand +a la taille du kernel et a la licence libre de ce dernier.

    +

    Depuis un certain temps, le kernel linux est devenu un kernel modulaire, ce qui +signifie que des modules peuvent être chargé a tout moment en cours +d’exécution, ce qui permet l'utilisation de nouveaux systèmes de +fichiers a chaud, ou l'insertion de matériel et l'installation de +drivers sans interrompre l’exécution du système (Windows utilise un +système de fausse installation de drivers pour le matériel externe, et +un système de pré-installation des drivers pour les périphériques dits +"plug and play")

    +

    Après le noyau intervient le système. Or, au tous premiers instants du +boot, les systèmes GNU/Linux utilisent un système permettant de limiter +l'utilisation de ressources systèmes si elles ne sont pas nécessaires, +et incorpore ainsi un système dit de "runlevels"

    +

    Ainsi, au runlevel 0, le système s'éteint après avoir booté. Ainsi, ce +runlevel permet de tester le bon démarrage du système sans avoir a +effectuer de manipulation pour le ré-éteindre

    +

    Le runlevel 1 est appelé mode single user, et c'est un nom plutôt adapté +étant donné que ce runlevel donne accès a un système en étant +automatiquement loggé en tant que root, avec tous les autres +utilisateurs désactivés, de même que tous les systèmes de réseaux

    +

    Le runlevel 2 est appelé mode multi user, et vous mets en face d'un +système classique. en ligne de commande, mais avec tous les systèmes de +réseau désactivés.

    +

    Le runlevel 3 est le même que le 2, mais avec les systèmes de réseaux +activés.

    +

    Le runlevel 4 n'est pas officiellement défini, et est censé être +activable en fonction des besoins de l'utilisateur. Sur la plupart des +distributions grand public, ce runlevel est lié au...

    +

    Runlevel 5! Multi-user, networking, with working GUI! c'est le système +tel que vous le connaissez, avec l'interface graphique et le système de +login graphique.

    +

    Le runlevel 6, enfin, est le bien nommé "reboot", qui reboot la machine +quand il devient le runlevel courant.

    +

    (Il est a noter que Debian, et donc toutes les distribs qui en sont +dérivées, ne font pas de distinction entre les differents runlevels du 2 +au 5. Ainsi, Ubuntu fonctionne par défaut au runlevel 2, avec un login +et une interface graphique, et un mode réseau fonctionnel, bref avec des +fonctionnalités qui ne sont normalement disponibles que sous le runlevel 5.)

    +

    Il est possible de changer de runlevel grâce a la commande runlevel +(oui, c'est évident...)

    +

    Les systèmes Linux utilisent aussi un système dit de SandBox , qui en +informatique est un système permettant d'isoler les processus les uns +des autres. Ainsi, la pile réseau, qui est le système auquel les +différents processus envoient les différents paquets qui doivent sortir +de la machine , et qui redistribue ces paquets, est isolée du reste du +système, en cela qu'aucun des autres processus ne peuvent modifier cette +pile hors du runlevel 1 ou 2.

    +

    De la même façon, le navigateur chrom/ium fait fonctionner tous les +onglets, ainsi que toutes les extensions, dans des processus différents. +Certaines distributions linux implémentent un système de cette sorte +pour toutes les applications, ou seulement pour certaines. ainsi Chakra +Linux a un système d'installation d'applications dans des disques +virtuels, ce qui permet une sécurité totale du processus.

    +

    Voila, j'espère vous en avoir appris un peu sur le fonctionnement des +différentes couches de linux, et j'espère que cet article vous poussera +a tester un peu votre système et a vous amuser avec les différents +runlevels

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/les-systemes-de-fichiers/index.html b/output/posts/les-systemes-de-fichiers/index.html new file mode 100644 index 0000000..1fd39d3 --- /dev/null +++ b/output/posts/les-systemes-de-fichiers/index.html @@ -0,0 +1,336 @@ + + + + + Les systèmes de fichiers + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + Les systèmes de fichiers +

    +
    +
    +
    +
    + Date + + Tue 25 September 2012 + +
    + By + Wxcafe +
    + Category + Teaching +
    + + + + +
    +

    Un système de fichiers. Vous en avez surement déjà entendu parlé si vous +avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous +connaissez surement NTFS, EXT4, ou encore FAT32.

    +

    Ces différents noms désignent en effet des systèmes de fichiers. Mais +qu'est-ce qu'un système de fichiers?

    +

    Pour comprendre cela, il faut déjà savoir ce qu'est exactement un +fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la +plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio +(kibioctet), en fonction du système de fichier utilisé.), qui est +donc composé de bits, interprétés différemment en fonction du type de +fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il +n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, +ou il commence ni où il s'arrête (je schématise un peu, mais c'est +l'idée).

    +

    Ainsi, le système de fichier donne un cadre et un standard à +l'arborescence des fichiers. Par exemple, le système de fichier ext4 +utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de +disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio +et mesurer la taille des fichiers en blocs de cette façon. Les systèmes +de fichiers nécessitent l'inclusion de drivers dans le noyau pour +pouvoir être pris en compte.

    +

    Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, +reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu +près tout type de partition récente.

    +

    Il convient de bien faire la différence entre le système de fichier et +l'arborescence des fichiers. Si l'arborescence des fichiers est en fait +une entité virtuelle englobant la racine / et tous les fichiers et +dossiers contenus dedans, le système de fichier permet a votre système +GNU/Linux de distinguer les différents fichiers composants cette +arborescence.

    +

    Détaillons maintenant les types de fichiers les plus répandus:

    +
      +
    • +

      FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, + soit la définition d'un système de fichier), remplissent leur rôle le + plus simplement possible. Ne permettant (historiquement) que des noms de + 8 caractères (plus extension de trois caractères), ni chiffrement, ni + système de distinction d'utilisateurs (DOS étant un système + mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, + utlisants respectivement des blocs de 16 et 32 Kio.

      +
    • +
    • +

      NTFS :. Le NTFS (pour New Technology File System, rapport a Windows + NT) est un système de fichier qui est apparu avec Windows XP, et qui + était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a + FAT différentes capacités dont le chiffrement, les liens symboliques, la + compression et les quotas pour les volumes, permettant de limiter la + taille maximum occupée dans une partition.

      +
    • +
    • +

      ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. + Ne différant pas énormément de NTFS, je le mentionne principalement + parce qu'il est prévu qu'il soit le défaut pour Windows 8. + Il apporte principalement la redondance, c'est a dire que chaque + fichier possède une somme de contrôle en 64 bits stockée dans un fichier + séparé pour éviter les corruption de disque.

      +
    • +
    • +

      Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers + les plus utilisés sous linux pour le grand public. (Je traiterai ici + d'ext4, puisque c'est le plus récent.) Il dispose de toutes les + fonctions que l'on peut attendre d'un système de fichiers moderne, ni + plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, + acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite + "par extent", ce qui signifie que la création d'un fichier réserve + automatiquement les zones contiguës de façon a réduire la fragmentation.

      +
    • +
    • +

      ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) + programmeur Hans Reiser, est a retenir pour avoir été le premier système + de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des + 4 milliards. Le but de ce système est de créer un système polyvalent, a + la fois système de fichiers et base de donnée (de part sa grande + capacité en terme de nombre de fichiers et de l'utilisation d'un + journal.)

      +
    • +
    • +

      Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi + l'allocation par extent, mais possède de plus un système de + sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers + montées en même temps (système pratique et utile pour faire des + snapshots de systèmes.). Il permet aussi de redimensionner a chaud la + taille des partitions, en les agrandissant ou en les rétrécissant, est + compatible avec LVM, a un système de checking intégré (btrfsck), et + utilise un algorithme de compression appelé LZ4, qui accélère les accès + aux fichiers compressés d'environ 30% par rapport a LZO, le système + utilisé dans ext4.

      +
    • +
    • +

      HFS+ : le système de fichier présent sur tous les macs a des capacités + relativement standards, et ressemble énormément a l'ext3. Il supporte + cependant les liens directs vers les dossiers, fonction rare sur les + systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau + dans les années a venir

      +
    • +
    • +

      ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux + et *BSD, est, tel Btrfs, a la fois un système de fichier et un + remplaçant/compatible avec LVM, C'est un système de fichiers conçu + principalement pour les serveurs, et il intègre ainsi un système de + redondance des données pour éviter les corruptions, un mode RAID-Z + (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, + etc...

      +
    • +
    +

    Comme on a pu le voir, les systèmes de fichiers disponibles sont +légions. Cependant, le plus adapté a Linux et a une utilisation grand +public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier +n'est pas aujourd'hui proposé par défaut sur les distributions les plus +utilisées, au profit de l'ext4, qui commence a accuser son âge...

    +

    Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au +fonctionnement du système, sont en fait de première importance, et ce +choix ne devrait pas être laissé au hasard, et être mis a jour +régulièrement (pour éviter les failles de sécurité...)

    +

    Bon courage, et bon choix pour votre prochain système.

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/linformatique-a-lecole/index.html b/output/posts/linformatique-a-lecole/index.html new file mode 100644 index 0000000..e5b2dbe --- /dev/null +++ b/output/posts/linformatique-a-lecole/index.html @@ -0,0 +1,286 @@ + + + + + L'informatique a l'école + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + L'informatique a l'école +

    +
    +
    +
    +
    + Date + + Mon 15 October 2012 + +
    + By + Wxcafe +
    + Category + Ranting +
    + + + + +
    +

    Après avoir lu cet article paru sur écrans.fr, et au vu des +nombreuses réflexions que j'ai eu sur ce sujet au cours des années, je +commence a me demander si la réponse logique ne serait pas d'enseigner +les bases de l'informatique (bases d’électronique, de programmation et +de logique formelle) dès le collège.

    +

    En effet, l'exemple qui me revient toujours est celui des technoprêtres +de warhammer 40 000, dans un univers ou la technologie est ritualisée et +incomprise même des plus savants, qui se contentent de reproduire ce qui +existe, et parfois par chance de retrouver un schéma explicatif lisible +par une machine, et qu'ils ne comprennent pas eux mêmes, ou toute +technologie est ointe d'onguents sacrés, entourée d'encens avant d'être +péniblement actionnée par des assistants ne comprenant rien a cette +technologie (ayant lu Hackers - Heroes of the Computer Revolution de +Steven Levy, c'est l'ambiance que l'on retrouve quand l'auteur décrit +l'ambiance près des machines IBM au MIT, au début de l'ouvrage), et il +me semble que de plus en plus la société se rapproche de cela.

    +

    Cette culture de l’ingénierie, qui existait beaucoup lors des débuts de +l'informatique (telle que décrite par exemple par Steve Wozniak dans son +livre iWoz) disparait pour laisser place a une culture de la +consommation et de l'utilisation de contenus existants, et même a une +certaine peur de la compréhension de la technologie. Ceux qui s'y +intéressent sont considérés comme marginaux (combien de hackers créent +des outils sur lesquels seront construits tous les systèmes du siècle a +venir, tels des Dennis Ritchie en puissance? Combien d'entre eux ne sont +pas intégrés a la société dite "normale"?), et on peut souvent observer +les réactions de peur que lancent les actions des hackers, ne serait-ce +que dans les journaux (combien de journaux 'mainstream' ont-ils parlés +des hackers en bien, c'est a dire tels qu'ils sont réellement, depuis +les années 80?) ou a la télévision.

    +

    Ainsi, la culture et la connaissance de ces appareils que +sont les ordinateurs, qui aujourd'hui se trouvent du fond de nos +poches a dans l'espace en passant par l’intérieur des pacemakers +jusqu’à être une composante indispensable de la société, se perdent et +rendent ainsi la compréhension de ces appareils impossible (j'ai eu +la désagréable surprise récemment de voir un camarade de classe +me poser ingénument la question "Ah, mais en fait, quand tu installes +Linux, ça change le fond d'écran et les icônes?". Au-delà du niveau, +la misère de cette question est que cette personne n'avait probablement +aucune idée de la façon dont fonctionnait son ordinateur, a part +pour le fond d'écran en question et pour les fameuses icônes.) pour +le grand public, et cet évolution crée de fait une sorte d'oligarchie de +techno-comprenants, seuls capables de manier et de créer la technologie.

    +

    C'est pour cela qu'il me semble intéressant, important, peut être même +requis, d'inclure au programme du collège puis du lycée des cours +d’électronique et d'informatique tels que décrits plus haut, de façon a +ce que les élèves comprennent le monde qui les entoure. Car c'est la le +but du cycle scolaire secondaire, me semble-t-il, et non pas de former +des futurs travailleurs. Sinon, pourquoi y aurait-il des cours de +musique, d'arts plastiques, ou encore de philosophie? Si le but du cycle +secondaire est bien d'ouvrir l'esprit des élèves sur le monde et sur ce +qui les entoure, alors les cours sur l'informatique s'imposent comme une +évidence, puisque ceux-ci nous entourent aujourd'hui bien plus que quoi +que soit d'autre...

    +

    Ces cours seraient susceptibles de s’insérer en un mélange entre des +cours de technologie (qui aujourd'hui sont bien plus orientés physique +et machines-outils qu'informatique ou électronique, alors que la +technologie d'aujourd'hui et vraisemblablement de demain aussi est +l'informatique) et de physique, pour le côté électronique, et de façon a +donner enfin aux cours de physique un intérêt quelconque, sortir au delà +de la théorie et de l'abstraction complète que sont actuellement ces +cours et passer un peu dans la réalisation, avec des arduinos par +exemple.

    +

    Vous aussi, intéressez vous a cela, de façon a ce que les jeunes ne +finissent pas par ne rien comprendre a ce qui est aujourd'hui l'une des +composante les plus importantes du monde tel qu'il est programmé.

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/posts/update-a-propos-du-blog/index.html b/output/posts/update-a-propos-du-blog/index.html new file mode 100644 index 0000000..2d3d442 --- /dev/null +++ b/output/posts/update-a-propos-du-blog/index.html @@ -0,0 +1,247 @@ + + + + + Update a propos du blog + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +

    + Update a propos du blog +

    +
    +
    +
    +
    + Date + + Tue 18 September 2012 + +
    + By + Wxcafe +
    + Category + Notes +
    + + + + +
    +

    Bonsoir! Un petit post pour faire un peu le point sur ce blog.
    +Comme vous avez pu le remarquer, j'ai un peu de mal a tenir les délais +que je m'étais fixés pour ce blog (un post tous les 8 jours), et après y +avoir un tantinet réfléchi, ceci est du a deux points principaux :

    +
      +
    • +

      Tout d'abord, le manque d'inspiration, tout simplement. C'est assez +compliqué de trouver des sujets intéressants liés a l'informatique, et +qui méritent un article. Je vous invite d'ailleurs a me suggérer des +sujets via les commentaires ou twitter (@Wxcafe)

      +
    • +
    • +

      Ensuite, le délai de 8 jours est trop court pour me permettre de faire +les recherches nécessaires, tout en manageant mes cours et mon temps +libre.

      +
    • +
    +

    A cause de cela, j'ai pris la décision de changer le rythme de parution +des articles a un *minimum* d'un post tous les 10 jours. Bien entendu, +si j'ai de l'inspiration en trop, plus de posts sont envisageables.

    +

    Voila. A part ca, je tiens a vous remercier de me lire (c'est assez +étonnant de voir ca...), et je précise que je vais ajouter une page +About Me, qui bien entendu rassemblera des informations sur moi, ma vie, +mon oeuvre :P

    +

    Ceci dit, je vais bosser un peu sur le prochain article.

    +

    A plus tard!

    +
    +
    +
    +
    + +
    +
    + +
    + + \ No newline at end of file diff --git a/output/theme/css/bootstrap.css b/output/theme/css/bootstrap.css index 08503e9..8d6d244 100644 --- a/output/theme/css/bootstrap.css +++ b/output/theme/css/bootstrap.css @@ -1021,7 +1021,11 @@ pre.prettyprint { pre code { padding: 0; +<<<<<<< HEAD color: #f8f8f2; +======= + color: inherit; +>>>>>>> origin/master white-space: pre; white-space: pre-wrap; background-color: transparent; diff --git a/pelicanconf.py b/pelicanconf.py index 1003d31..7bbb03a 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -5,7 +5,11 @@ from __future__ import unicode_literals # Misc Settings AUTHOR = u'wxcafé' SITENAME = u'Wxcafé' +<<<<<<< HEAD SITEURL = '//wxcafe.net' +======= +SITEURL = 'file:///home/wxcafe/code/blog-source/output' +>>>>>>> origin/master TIMEZONE = 'Europe/Paris' DEFAULT_LANG = u'fr' DEFAULT_PAGINATION = 10 @@ -35,6 +39,10 @@ MD_EXTENSIONS = [ # Blogroll LINKS = ( ('Source!', 'https://github.com/wxcafe/blog-source', 'code'), +<<<<<<< HEAD +======= + ('Zerobin', 'http://paste.wxcafe.net', 'paste'), +>>>>>>> origin/master ('Public Git', 'http://git.wxcafe.net', 'github-sign'), ) @@ -43,8 +51,14 @@ SOCIAL = ( ('Twitter', 'https://twitter.com/wxcafe', 'twitter'), ('Github', 'https://github.com/wxcafe', 'github'), ('Email', 'mailto://wxcafe@wxcafe.net', 'envelope'), +<<<<<<< HEAD ('Gpg', 'https://pub.wxcafe.net/wxcafe.asc', 'key'), ('IRL', 'https://www.openstreetmap.org/relation/105146', 'map-marker') +======= + ('Gpg', 'https://data.wxcafe.net/wxcafe.asc', 'key'), + ('Finger', 'finger://wxcafe@wxcafe.net', 'terminal'), + ('IRL', 'http://leloop.org/where.html', 'map-marker') +>>>>>>> origin/master ) # Categories on right-side bar but not on top menu diff --git a/themes/bootstrap2/static/css/bootstrap.css b/themes/bootstrap2/static/css/bootstrap.css index 08503e9..8d6d244 100644 --- a/themes/bootstrap2/static/css/bootstrap.css +++ b/themes/bootstrap2/static/css/bootstrap.css @@ -1021,7 +1021,11 @@ pre.prettyprint { pre code { padding: 0; +<<<<<<< HEAD color: #f8f8f2; +======= + color: inherit; +>>>>>>> origin/master white-space: pre; white-space: pre-wrap; background-color: transparent; diff --git a/themes/bootstrap2/templates/base.html b/themes/bootstrap2/templates/base.html index 270f76d..62a03b3 100644 --- a/themes/bootstrap2/templates/base.html +++ b/themes/bootstrap2/templates/base.html @@ -7,7 +7,10 @@ +<<<<<<< HEAD +======= +>>>>>>> origin/master