Actuellement en kiosque !

Linux Pratique °25 Hors-Série N Découvrez le web du futur ! HTML 5 disponible chez votre marchand de journaux jusqu'à fin décembre 2012 et sur : www.ed-diamond.com gage dans Découvrez un nouveau lan x Magazine Hors-série 63 ! GNU/Linu grammation Go, le langage de pro gle le novembre 2 développé par▪ Toutes Goo les bases pour commencer (historique, en kiosque ! compilation, syntaxe de base, ...) ▪ Des explications sur les différents types de variables (chaînes, pointeurs, tableaux, ...) ▪ Et pour aller + loin : les fonctions, la programmation orientée objet, le traitement des fichiers, les tests unitaires, ...

Sous réserve de toutes modifications. Un numéro complet pour explorer et maîtriser le langage Go !

le 2 novembre 2012 chez votre marchand de journaux Pratique est édité par Les éditions Diamond B.P. 20142 / 67603 Sélestat Cedex Tél. : 03 67 10 00 20 édito Fax : 03 67 10 00 21 Alors que GNOME 3.6 vient tout juste de faire son apparition, les E-mail : [email protected] [email protected] critiques négatives demeurent... Pourtant, de nombreux efforts ont Service commercial : [email protected] été fournis, en termes d’ergonomie, pour reconquérir le cœur des Sites : www.linux-pratique.com utilisateurs. La faute à qui, ou plutôt à quoi ? GNOME Shell semble www.ed-diamond.com avoir été l’élément déclencheur... Canonical s’est d’ailleurs empres- Directeur de publication : Arnaud Metzler sée à l’époque de créer sa propre interface pour Ubuntu (Unity) qui, Chef des rédactions : Denis Bodor au passage, n’a pas elle non plus enthousiasmé les foules. Un autre Rédactrice en chef : Fleur Brosseau point qui reste très controversé est le renommage des applications Secrétaire de rédaction : Véronique Sittler formant le noyau du bureau - pourtant intégrées à GNOME depuis Conception graphique : Kathrin Scali Responsable publicité : Valérie Fréchard plusieurs années et bien connues de ses utilisateurs, avec des termes Tél. : 03 67 10 00 27 - [email protected] plus « génériques ». Nautilus devient ainsi « Fichiers », Service abonnement : Tél. : 03 67 10 00 20 devient « Discussion », Epiphany devient « Web », etc. Un choix Photos & Illustrations : www.fotolia.com curieux, certes, mais compréhensible au fond : celui qui n’a jamais Impression : entendu parler d’Epiphany (sinon au moment de manger la galette) pva, Druck und Medien-Dienstleistungen GmbH, Landau, Allemagne ne cliquera peut-être pas instinctivement sur ledit lanceur pour sur- Distribution France : fer sur le Web... (bien qu’il soit classé, dans la rubrique « Internet » (uniquement pour les dépositaires de presse) des applications et qu’une infobulle, voire son nom complet, indique MLP Réassort : clairement « navigateur web »... hum hum...). Plate-forme de Saint-Barthélemy-d’Anjou. Tél. : 02 41 27 53 12 Pour les nostalgiques de l’ancien GNOME, sachez qu’il existe un Plate-forme de Saint-Quentin-Fallavier. Tél. : 04 74 82 63 04 fork, le projet MATE, dont le développement a commencé fin 2011. Il Service des ventes : est proposé depuis plusieurs mois dans la distribution Linux Mint et Distri-médias : Tél. : 05 34 52 34 01 il se pourrait qu’il fasse prochainement son apparition dans le dépôt

Imprimé en Allemagne - PRINTED in Germany principal de Fedora (à l’occasion de la sortie de Fedora 18, prévue Dépôt légal : À parution pour le 04 décembre). Autre signe qui vient confirmer le désintérêt N° ISSN : 0183-0872 des utilisateurs vis-à-vis de GNOME 3 : l’adoption probable d’Xfce Commission Paritaire : K78 990 comme environnement de bureau par défaut pour Debian 7, une gage dans Périodicité : Bimestrielle Prix de vente : 6,50 Euros distribution pourtant fidèle à GNOME depuis ses débuts... Pas assez intuitive ? Trop « bling bling » ? Il est vrai que l’interface Avertissement : de GNOME 3 est quelque peu déroutante (enfin, tout est relatif, car si Découvrez un nouveau lan Les Éditions Diamond ne sont pas respon- gazine Hors-série 63 ! sables du service technique lié à l’utilisation du on la compare à celle de Windows 8, il n’y a rien de plus standard ;-)) x Ma CD-ROM livré avec ce numéro. En cas de pro- et ’est la première à proposer quelque chose de vraiment différent blème, veuillez vous adresser aux concepteurs Linu en termes d’expérience utilisateur. C’est peut-être là l’explication du GNU/ de la distribution ou consulter les sites Web et forums officiels dédiés au support des utilisateurs. peu de succès qu’elle rencontre ; les utilisateurs ont finalement du mal à s’y retrouver. Beaucoup crient haut et fort que GNOME 3 est La rédaction n’est pas responsable des textes, illus- incompréhensible, voire inutilisable pour les débutants. Au contraire, trations et photos qui lui sont communiqués par leurs auteurs. La reproduction totale ou partielle des articles je pense que ces derniers doivent très bien s’en sortir, car eux, publiés dans Linux Pratique est interdite sans accord n’ont aucun à priori. Ceux qui râlent le plus sont finalement ceux écrit de la société Les Éditions Diamond. Sauf accord particulier, les manuscrits, photos et dessins adressés qui l’utilisent depuis quelques années (j’en fais partie, mea culpa...). à Linux Pratique, publiés ou non, ne sont ni rendus, Les habitudes (bonnes ou mauvaises) ont la vie dure... ni renvoyés. Les indications de prix et d’adresses figurant dans les pages rédactionnelles sont données Si GNOME 3 est le « mal aimé » des desktops du moment, n’est- à titre d’information, sans aucun but publicitaire. ce pas avant tout parce qu’il est mal connu ? Car les addicts de Toutes les marques citées dans ce numéro sont GNOME 3, eux, ont appris à le personnaliser, à l’adapter à leurs déposées par leur propriétaire respectif. Tous les logos représentés dans le magazine sont la propriété de leur besoins (merci les extensions pour GNOME Shell !), usent et abu- ayant droit respectif. sent des raccourcis clavier pour le contrôler et de ce fait, trouvent que leur bureau n’a en rien perdu de son usabilité. Ils se sont simple- ment appropriés leur nouvel environnement. C’est comme cela que l’on passe d’un « GNOME 3 est une abomination » à « GNOME 3 ça déchire ! ».

www.linux-pratique.com Fleur Brosseau

Linux Pratique n°74 | 3 sur le cd-rom OpenMediaVault 0.3

OpenMediaVault : une alternative à FreeNAS pour mettre facilement en place votre NAS multifonction

OpenMediaVault (http://www.openme- créée ; à savoir qu’OpenMediaVault uti- diavault.org/) est un NAS « nouvelle lise un disque entier pour le système, ce génération », basé sur Debian Squeeze. dernier ne pourra donc héberger aucune Par défaut, il offre la plupart des ser- éventuelle partition de données utilisa- vices courants : SSH, (S)FTP, NFS teur. Et toutes les données qui pour- (v3/v4), SMB/CIFS et Rsync. Il est en raient s’y trouver seront donc écrasées outre possible de lui ajouter d’autres pendant l’installation. Il est donc vive- fonctionnalités grâce à son système ment recommandé de disposer d’un de plugins : LVM, LDAP, AFP, un client deuxième disque dur pour exploiter BitTorrent, un serveur DAAP, UPS pleinement les fonctionnalités offertes (alimentation sans interruption), ... par OpenMediaVault. Vous devrez en outre disposer au minimum d’1 GiB de RAM et de 2 GiB d’espace disque. L’installation terminée, redémarrez le système pour lancer le serveur ; dans les logs qui apparaissent à l’écran, une adresse IP est indiquée : c’est sur elle un panneau latéral, sous forme d’arbo- que vous devez pointer votre navigateur rescence. On pourra commencer par web pour accéder à l’interface d’admi- se rendre dans la section Système > nistration. Renseignez le login et le mot Gestionnaire de mises à jour, afin de de passe (par défaut, login : admin, mot mettre à jour le système (les mises à de passe : openmediavault). jour sont prises en charge par le ges- L’intérêt d’une solution comme Si vous souhaitez vous logger sur la tionnaire de paquets Debian). OpenMediaVault réside dans sa grande console du serveur, utilisez le login et Vous pourrez ensuite vous rendre simplicité d’installation et de configura- le mot de passe que vous avez ren- dans la section pour acti- tion. En effet, ce système a été pensé seignés lors de l’installation. L’une des Services ver ceux dont vous avez besoin. Du avant tout pour une utilisation dans un commandes qui peut alors vous être côté de la gestion des disques (sec- environnement personnel ou bien au utile est omv-firstaid, qui vous per- sein de petites structures profession- mettra notamment de configurer l’in- tion Stockage), OpenMediaVault prend nelles, de manière à ce que sa prise terface réseau, ou de changer le mot en charge la gestion de l’énergie et le en main soit accessible à tous, sans de passe de l’interface web (ceci peut monitoring via SMART ; il supporte les bagage technique poussé. toutefois être réalisé via l’interface gra- systèmes de fichiers Ext3, Ext4, XFS phique d’administration). et JFS, permet la mise en place d’un La procédure d’installation utilise l’instal- RAID 0/1/5/6, gère les ACL et les par- leur Debian et s’avère donc relativement L’interface est simple et intuitive. Les tages. De nouveaux utilisateurs et des aisée. Une unique partition Ext4 est différentes tâches sont réparties dans dossiers partagés pourront être créés dans la section Gestion des droits d’ac- cès. On notera également la possibi- lité de planifier des tâches (Système > Tâches Cron). Le wiki du projet (http://wiki.open- mediavault.org) propose quelques informations et conseils concernant la configuration ; vous pourrez trouver par ailleurs quelques tutoriels vidéo sur YouTube (chaîne « openmediavault »).

4 | Linux Pratique n°74 www.linux-pratique.com sommaire Linux Pratique n°74

actus wEB 06 Toute l'actualité Linux et open source 40 HTML 5 : structuration 44 Consultez les statistiques de votre site web APPLICATIF avec AWStats 10 Calibre, un outil multifonction pour gérer vos e-books Geeks 12 GNOME Boxes, la solution de virtualisation 48 Raspberry Pi : mini PC, maxi possibilités ? « desktop »

DocFetcher, votre allié pour indexer et (ré) 14 I3, le « tiling window manager » pour tous exploiter vos documents 56

En couverture DÉCISIONNEL Gestion de parc avec GLPI 16 La gestion de configuration simplifiée avec 60 Ansible 71 Le dessin assisté par ordinateur sous Linux avec LibreCAD et FreeCAD

74 Pas Nagios : pourquoi ?

système & réseau Code 22 Protéger des données sensibles : 76 Text-To-Speech avec Python, quelques solutions rapides et Google translate Gérez vos machines virtuelles à distance ! 29 80 Bonne pratique : préférer un UID à une 32 Système de fichiers sous Linux et clé incrémentale déploiement de Btrfs 36 Plus d’espace disponible ? Redimensionnement via LVM 27/69/70 Abonnements & Commandes

www.linux-pratique.com Linux Pratique n°74 | 5 actus

» openSUSE 12.2 outils Publiée le 7 septembre, cette nouvelle release Sunflower : un gestionnaire de fichiers est basée sur le noyau Linux 3.4.6 et intègre par défaut le bootloader GRUB2. Le système de léger et totalement personnalisable fichiers Btrfs, proposé à l’installation, a bénéfi- cié d’améliorations permettant entre autres une meilleure gestion des erreurs. L’environnement KDE SC est proposé en version 4.8.4 (une mise à jour vers le version 4.9.1 est d’ores et déjà dispo- nible) et la distribution intègre également GNOME 3.4 et Xfce 4.10. Bien entendu, on retrouve les ver- sions les plus récentes d’une sélection plus per- tinente de logiciels libres : LibreOffice 3.5, GIMP 2.8, Firefox 14, X.Org 1.12, etc. Côté program- mation, on notera la présence du langage Go de Google (dans sa version 1.0.2). Le démarrage du système s’avère bien plus rapide et on notera l’amélioration globale de l’ergonomie, notamment au niveau des petites utilitaires graphiques. Une image ISO de la dernière version d’openSUSE peut être récupérée ici : http://software.opensuse. Composé d’un double panneau, Sunflower (http://code.google.com/p/sunflower- org/122/fr. À noter pour finir la nomination toute fm/) propose une gestion par onglets des différents emplacements ouverts et s’avère très simple à utiliser. Il s’intègre très bien dans l’environnement GNOME, récente du développeur français Vincent Untz à mais peut tout à fait être utilisé dans un autre environnement de bureau. la présidence du conseil openSUSE. Le projet est jeune, mais propose d’ores et déjà un lot très intéressant de fonc- » TilEm2 tionnalités ; il offre par exemple la possibilité d’ouvrir directement une console Nous vous avions présenté TilEm dans Linux au sein du gestionnaire de fichiers et une ligne de commandes demeure omni- Essentiel hors-série n°2 dédié à l’émulation et présente au bas de l’interface. Bien entendu, comme la plupart des logiciels au retrogaming. Il s’agit d’un émulateur de calcu- du genre, il gère les bookmarks et les points de montage et propose un histo- latrice z80 (TI73 à TI86). Les amateurs du genre rique de navigation, le tout permettant de se rendre très rapidement dans les seront heureux d’apprendre qu’une toute nouvelle répertoires les plus utilisés. Ce gestionnaire de fichiers comporte par ailleurs version développée activement depuis 3 ans a vu quelques outils : un outil de recherche avancée bien sûr, mais aussi un outil le jour. TilEm2 est ainsi une réécriture complète de comparaison de répertoires ou de renommage de fichiers par lot. de son prédécesseur ; au programme : une toute Les possibilités de Sunflower peuvent être étendues au moyen de plugins ; un nouvelle interface, le plein de nouvelles fonction- exemple de plugin est d’ailleurs proposé sur le site du projet. Les plugins intégrés nalités (envoi/réception de variables, sauvegarde par défaut ne sont pas tous activés ; il faudra vous rendre dans les préférences des programmes, capture d’écran statique ou ani- du logiciel pour activer ceux dont vous avez besoin ; le plugin de pré-visualisation mée, enregistrement de macros, nouveau pack de rapide des images peut notamment être utile. La fenêtre de dialogue des préfé- skins) et un cœur d’émulation vraiment libre. Tous rences vous permet de personnaliser le logiciel dans les moindres détails (appa- les modèles z80 sont pris en charge. À découvrir rence, comportement des onglets, sélection de l’éditeur par défaut, contenu de la sur http://lpg.ticalc.org/prj_tilem/index.html. barre d’outils, (dés)activation des plugins, etc.). Il est donc particulièrement simple d’adapter ce gestionnaire de fichiers à vos besoins particuliers. » DotClear 2.4.4 Le projet est encore à ce jour en phase alpha de développement (v.0.1a-45) ; nous À l’occasion de son 9ème anniversaire, le projet n’avons rencontré toutefois aucun problème particulier lors de notre utilisation. Des a publié une nouvelle version au début du mois paquets DEB et RPM sont mis à disposition pour la plupart des distributions. d’août (http://dotclear.org/download). Celle-ci vient corriger plusieurs bugs, notamment celui qui affectait la programmation des billets. À souligner également, la mise à jour de DC Loader, le script Bureautique d’installation rapide, plus rapide et plus soigné. L’équipe de développement nous informe égale- Visionnez vos PDF en 3D ! ment de la préparation d’une version « parallèle » PDFCube (http://code.100allora.it/pdfcube/) est un logiciel qui permet de Dotclear, qui deviendrait à terme une version de visualiser un document PDF sous forme d’un cube ; le passage d’une complètement revue du CMS. La mise en plugins page à l’autre est ainsi animé d’un mouvement de rotation assez élégant, des catégories, des commentaires et trackbacks, qui peut faire bonne impression lors d’une présentation. Il s’utilise très et du gestionnaire de médias, fait notamment par- facilement : tie des gros changements envisagés. pdfcube [file] [options]

6 | Linux Pratique n°74 www.linux-pratique.com actus desktop GNOME 3.6 : le plein de fonctionnalités et quelques retouches pour davantage de cohérence Pas mal de nouvelles fonctionnalités par type de fichiers et les résultats sont affi- majeures dans cette nouvelle mouture chés au fur et à mesure de la frappe. Elle est qui a fait encore une fois beaucoup par- effectuée dans tous les fichiers, sans indexa- ler d’elle (pro et contre GNOME 3, les tion préalable. La disparition du découpage discussions demeurent... ). Pêle-mêle : de la fenêtre en deux panneaux a laissé des notifications plus intelligentes, une place à un panneau « à la demande » pour vue d’ensemble des activités retra- le déplacement ou la copie de fichiers. La vaillée (remarquez en effet que les fenêtre de dialogue de connexion à un ser- onglets Fenêtres et Applications ont dis- veur propose désormais à l’utilisateur de ce même menu, supporte désormais les paru), un nouveau design pour de nom- copier/coller l’URL cible ou de la saisir direc- comptes Kerberos et Active Directory. La breuses applications (le gestionnaire tement ; les URL récemment utilisées sont barre de notifications a été remaniée elle de fichiers, Empathy, Evolution, l’ana- par ailleurs listées dans la fenêtre. aussi, de façon à corriger certaines imper- lyseur de disques Baobab, le vision- fections ; désormais, elle ne gênera plus GNOME 3.6 est basé sur le tout nouveau neur de fontes...), un nouvel écran de l’utilisateur qui souhaite atteindre le coin Gstreamer 1.0, plus léger et plus performant. verrouillage plus attrayant et plus fonc- inférieur droit de son logiciel par exemple. À noter aussi la présence de la bibliothèque tionnel (affichage de l’heure et des notifi- graphique 1.2, de la boîte à outils cations, des contrôles pour votre lecteur Côté applications, on notera l’arrivée de Gtk+ 3.6 ou encore de GLib 2.34. de médias). La fenêtre de réglage des Machines (GNOME Boxes), dont vous paramètres système bénéficie d’une trouverez une présentation en page 12 de Vous pouvez découvrir ce nouveau bureau interface plus soignée. La navigation ce magazine. À souligner également la GNOME via l’image ISO mise à disposition web offre une bien meilleure accessi- refonte de l’utilitaire de disques, qui apporte à l’adresse http://www.gnome.org/getting- bilité ; l’interface comporte en outre de son lot de nouvelles fonctionnalités : barre /. Sinon, vous pouvez simplement nouvelles options visuelles. de progression et blocage de l’extinction attendre la mise à jour de votre distribu- du système lors des opérations de forma- tion (GNOME 3.6 sera notamment intégré tage ou de redimensionnement, mesure à Fedora 18, dont la sortie est prévue pour des performances du disque, un monteur le 27 novembre). d’images disque... . Le navigateur Epiphany Et pour le futur ? Les applications Calendrier, repose désormais sur la version 1.10 de Musique et Photos sont en préparation, a WebKitGTK+, qui gère WebGL et l’accélé- priori planifiées pour la version 3.8. L’équipe ration du compositing ; il intègre par ailleurs de développement est par ailleurs en train la fonction Do Not Track, ainsi qu’un tableau de réfléchir à la mise en place de la feuille de de bord présentant les vignettes des sites route des prochaines releases. La version les plus visités, des possibilités que d’autres 3.12 serait rebaptisée 4.0 et constituerait les navigateurs offrent déjà depuis un moment. bases du système GNOME OS (prévu pour Enfin, le gestionnaire d’archives File Roller le printemps 2014). Rappelons que ce der- prend en charge le format propriétaire RAR Le menu utilisateur a quant à lui été res- nier, même s’il pourra être installé comme dans sa version 3. tructuré et propose par défaut l’extinc- toute autre distribution Linux, est plutôt assi- tion de l’ordinateur (auparavant, il était Un gros travail a été effectué sur Nautilus, milable à une plateforme de développement nécessaire d’appuyer sur [Alt] pour voir rebaptisé « Fichiers », qui offre maintenant et est en quelque sorte destiné à devenir un apparaître cette option). Le gestionnaire une fonction de recherche particulièrement véritable sandbox pour tester les diverses de comptes en ligne, accessible via performante et rapide : elle est récursive, évolutions des applications GNOME.

Parmi les options à retenir : -b permet de définir la couleur également de programmer les modalités de visionnage du document d’arrière-plan, -t permet de définir la couleur de la face supé- via l’option --program (on définit le temps d’affichage et le type de rieure du cube (les couleurs doivent être exprimées au format transition). Les couleurs et autres options peuvent être configurées r:g:b) ; l’option -n permet de désactiver le mode plein écran. à la fois en ligne de commandes ou directement dans un fichier Le visionneur se pilote ensuite au clavier ; les touches [C] et de configuration .pdfcuberc. L’option --help affiche la liste des [A] permettent de passer d’une page à l’autre. Par ailleurs, options disponibles et quelques exemples d’utilisation. il est possible de zoomer sur 5 zones prédéfinies de votre Le programme pourra être installé en compilant les sources document via les touches [H], [J], [K], [L] et [Z]. (./configure, make, sudo make install), après avoir installé les La dernière version 0.0.5, parue début juillet, permet la visuali- dépendances requises : libpoppler-dev et libpoppler-- sation de PDF en orientation portrait ou paysage. Elle propose dev, libgtkglext1-dev, libboost-program-options-dev.

www.linux-pratique.com Linux Pratique n°74 | 7 actus

» Firefox et Thunderbird 16 Web La fondation Mozilla a publié une nouvelle version de ses deux applications phares à la mi-octobre. Mozilla Thimble vous apprend à coder ! Pour le navigateur web, cette 16ème version Thimble (https://thimble.webmaker.org/en-US/editor) est un service récem- marque notamment le début de la prise en charge ment mis en ligne par la fondation Mozilla ; il est issu du projet Webmaker des web apps et de VoiceOver (l’outil d’accessibilité (une initiative de la fondation destinée à favoriser l’apprentissage des techno- de Mac OS X). Globalement, l’application s’avère logies du Web, selon les bonnes pratiques, en fournissant des outils adaptés bien plus réactive aussi. Les développeurs seront aux utilisateurs débutants). L’objectif de Thimble ? Proposer aux utilisateurs heureux d’utiliser la toute nouvelle boîte à outils un éditeur de pages web simple, qui leur permettra d’appréhender plus aisé- intégrée au navigateur et pourront constater que ment les langages HTML et les préfixes -moz- ont été retirés de certaines CSS. Selon les créateurs du propriétés CSS3. Côté messagerie, le développe- projet, il est en effet essen- ment s’est principalement focalisé sur la correc- tiel que tout un chacun com- tion de bugs, améliorant ainsi la performance et prenne les rudiments du la sécurité de Thunderbird. On notera également développement web. que la fonction Filelink, qui permet d’envoyer des pièces jointes à ses contacts quelle que soit leur Cet éditeur en ligne est taille, supporte maintenant le service Box.com, qui scindé en deux panneaux : s’ajoute ainsi à Ubuntu One et YouSendIt. à gauche, vous codez ; à droite, vous pouvez visuali- » Firefox version tablette ser le rendu de votre code en temps réel. Pour l’uti- Une version de Firefox pour Android a fait son liser, il faut tout de même apparition sur le Play Store de Google. Cette connaître les balises « de base » qui permettent de structurer une page (

, version adaptée au Web mobile comprend plu-

, ...,

, ,

, etc.). Des conseils concernant la syntaxe – qui sieurs nouveautés, dont des fonctionnalités de apparaissent « à la volée » – ainsi que des avertissements en cas d’erreur recherche ou de sélection de texte. Elle bénéficie permettent de progresser. En outre, des modèles prédéfinis permettront aux en outre d’un design moderne et allégé, avec une moins aguerris de se mettre sur les rails plus rapidement. page de démarrage personnalisable permettant aux utilisateurs d’accéder à leurs sites préférés en Une fois le contenu créé, il est possible de le partager (via Twitter, Google+ un clic. Elle garantit également un niveau élevé de et Facebook) ; il ne sera pas indexé par les moteurs de recherche, mais vous sécurité et de gestion de la vie privée, en intégrant pourrez inviter des personnes à le consulter en leur communiquant l’URL de les modules Do not Track, Master Password et votre page. Ce service est une bonne idée pour compléter son apprentissage HTTP Strict Transport Security. Les développeurs des langages du Web et s’avère pratique pour mettre rapidement en ligne un pourront quant à eux créer des applications et des petit bout de code HTML. sites web riches en HTML5, JavaScript, CSS et d’autres standards ouverts. » VirtualBox 4.2.0 p2p Cette version majeure a été publiée mi-septembre. Elle comporte pas mal de nouvelles fonctionnalités Kwooty, votre client NZB pour KDE4 parmi lesquelles : le support de Windows 8, le sup- NZB ? C’est quoi ? NZB est un format de fichier basé sur XML utilisé sur les port expérimental du glisser-déposer depuis l’hôte newsgroups ; les fichiers volumineux hébergés par les serveurs de news- vers les invités Linux (requiert l’installation des groups sont découpés en Additions Clients via le menu Devices > Install Guest plusieurs morceaux et un Additions), la possibilité de démarrer une VM dès le fichier NZB regroupe les boot d’un système Linux, OS X et Solaris, la possibi- références des différents lité d’effectuer des captures d’écran du contenu de posts à récupérer pour avoir la fenêtre de la VM courante, ou encore le support le fichier dans son intégra- des images au format QED, QCOW (complet pour lité. Le rôle d’un client NZB la v1 et en lecture seule pour la v2) et VHDX (en est donc de récupérer les lecture seule). L’interface graphique propose doré- fichiers adéquats... navant de créer des groupes de machines virtuelles, Kwooty est l’un d’entre eux permet la modification de quelques paramètres pen- et a bénéficié cet été d’une dant l’exécution de la machine et l’assistant d’ins- mise à jour. Ses atouts ? tallation intègre un mode expert. Cette version est Support multi-serveur, téléchargement intelligent des Par2, vérification et répa- packagée pour le plupart des distributions et peut ration automatique des fichiers, extinction programmable du système, support être téléchargée à l’adresse https://www.virtualbox. de connexion SSL, gestion de file d’attente et des priorités, etc. En outre, il est org/wiki/Linux_Downloads. capable d’extraire automatiquement les archives au format RAR, ZIP et 7z. Kwooty est disponible dans les dépôts de la plupart des distributions.

8 | Linux Pratique n°74 www.linux-pratique.com actus Du côté DES SOLUTIONS PRO

WEB TRAVAIL COLLABORATIF phpMyFAQ, ou comment Blue Mind, une solution créer rapidement une FAQ complète de messagerie personnalisée ? d’entreprise phpMyFAQ, comme son nom l’indique, est une application qui Blue Mind (http://www.blue-mind.net) est une plateforme col- permet de mettre en place un système de questions/réponses laborative open source, basée sur Java, relativement récente sur votre site web. Compatible PHP 5.2 ou supérieur, elle (la première bêta ayant été publiée en mars 2012). Elle pro- supporte de nombreuses bases de données (MySQL, pose un webmail, un calendrier et la gestion de contacts, le tout PostgreSQL, SQLite, SQL Server et MariaDB). L’installation orienté vers le travail collaboratif. Ses interfaces utilisateur « full et la configuration se font entièrement via une interface web, JavaScript » sont particulièrement riches et simples à utiliser. dans votre navigateur. Ainsi, le webmail permet la création de boîtes partagées et la mise phpMyFAQ est compatible LDAP et Active Directory, et permet en place de filtres, le glisser-déposer de pièces jointes depuis le l’authentification HTTP via Single Sign On. Elle offre en outre bureau, l’auto-complétion des adresses, etc. Le calendrier séduit une gestion fine des utilisateurs et des permissions. Simple à par son ergonomie et son large éventail de fonctionnalités ; il utiliser grâce à son éditeur WYSIWYG, cette application permet permet de gérer les utilisateurs et les ressources et propose la en outre de gérer aisément les enregistrements de la FAQ, les recherche de disponibilité des participants. Il est possible de créer commentaires, etc. des agendas individuels, de groupes ou de ressources. Il offre par ailleurs un mode déconnecté, qui permet de continuer à s’organiser L’application intègre un module de statistiques, permettant d’ana- même si vous n’êtes pas connecté à Internet ; une fois la connexion lyser le comportement des utilisateurs au travers de la FAQ. rétablie, vos modifications sont automatiquement envoyées au Par ailleurs, elle intègre le support du bouton like de Facebook, serveur. Blue Mind permet par ailleurs de gérer plusieurs carnets réseau sur lequel il est possible de partager du contenu ; il est d’adresses (publics, pri- également possible de connecter son compte Twitter à l’appli- vés ou partagés) et per- cation, de manière à ce que ses followers puissent suivre l’évo- met la synchronisation lution de la FAQ. Les utilisateurs pourront aisément trouver les avec Microsoft Outlook, questions de leur choix via une puissante fonction de recherche. T h u n d e r b i r d o u Votre FAQ pourra être aisément personnalisable via un système votre appareil mobile de templates basé sur les derniers standards (HTML5 et CSS3). (iPhone, A ndroid, De plus, un système de sauvegarde et de restauration garantit BlackBerry et iPad). la pérennité de votre base de connaissances. Blue Mind est packagé Une pré-version alpha de phpMyFAQ 2.8.0 est disponible pour Debian, Ubuntu depuis fin août (http://www.phpmyfaq.de/download.php). Cette et Red Hat. Son instal- version, régie par la Mozilla Public License 2.0, apporte notam- lation est simplifiée via la présence d’un assistant graphique. La ment le support multisite, la sauvegarde automatique pendant dernière version en date est une version RC2 de Blue Mind 1.0, l’édition des FAQ, et propose une interface d’administration plus sortie fin septembre ; elle apporte principalement quelques cor- ergonomique. rections de bugs.

ERP/CRM globale de l’ergonomie, elle a apporté pas création de modules externes répondant à mal de nouvelles fonctionnalités pour les des besoins précis. Les développeurs ont Dolibarr 3.2.0 utilisateurs, comme la possibilité de créer par ailleurs beaucoup plus de liberté dans On ne présente plus Dolibarr, un ERP/ des champs personnalisés sur les tiers, l’ajout de leurs propres codes et modules. CRM libre et gratuit, destiné aux petites et adhérents et produits, la possibilité d’im- Un module est dorénavant organisé en un moyennes entreprises. Gestion des clients porter des contacts via l’assistant d’impor- seul et même répertoire, cette structure et fournisseurs, factures, commandes, tation, la possibilité de créer des factures devant notamment favoriser l’apparition stocks, agenda, mailing, etc., toutes les à partir d’expéditions de commandes, des de nouveaux modules complémentaires fonctionnalités sont prises en charge par e-mails améliorés, etc. La documentation sur le Dolistore. cette application ! Celle-ci se veut extrê- officielle, disponible sur le wiki du projet, a Une version de maintenance numérotée mement modulaire, chacun a ainsi la pos- quant à elle été mise à jour et complétée. 3.2.2 est disponible depuis la mi-septembre sibilité d’activer uniquement les fonctions Le plus gros des changements a été réa- (à récupérer sur http://www.dolibarr.fr/tele- dont il a besoin. lisé en profondeur, où le code de Dolibarr chargements). Dolibarr est disponible pour Une mise à jour majeure (3.2) a été publiée a été « nettoyé » de manière à faciliter Linux (paquets DEB et RPM), Mac OS X et avant l’été. En plus de l’amélioration l’intégration de futures extensions ou la Windows.

www.linux-pratique.com Linux Pratique n°74 | 9 APPLICATIF

Calibre, un outil multifonction pour gérer vos e-books Fleur Brosseau Tout est dit dans le titre : Calibre est une application open source et gratuite - compatible Linux, Mac OS X et Windows -, qui permet d’organiser votre collection d’e-books. Il devient ainsi facile d’y naviguer, d’éditer les métadonnées des différents fichiers, de rechercher de nouveaux ouvrages et même de dialoguer avec votre liseuse électronique puisque Calibre prend en charge plusieurs modèles.

• L’importation de contenu de sites d’in- bibliothèque. Après avoir sélectionné 1. Que peut faire formations ou de flux RSS : ces conte- votre langue, vous pouvez préciser le Calibre ? nus sont convertis en e-books pour modèle de liseuse électronique que pouvoir être éventuellement transfé- vous utilisez (dans notre cas, il s’agit Calibre est une application qui permet rés puis consultés sur votre appareil ; d’un Kindle Touch d’Amazon) et éven- de gérer vos e-books, à la manière • Son propre serveur web pour vous tuellement renseigner vos paramètres d’une bibliothèque, mais elle permet de connexion à votre compte de mes- bien plus ! Elle propose : permettre d’accéder à votre collec- tion d’e-books via un navigateur sagerie de manière à ce que Calibre • Un visionneur d’e-books intégré, web, depuis n’importe quel ordina- puisse envoyer vos e-books vers votre supportant la plupart des formats ; teur ou autre appareil. liseuse par mail, si votre matériel sup- porte ce service (Fig. 2). • De synchroniser le contenu de votre bibliothèque avec votre liseuse électronique ; 2. Installation et • Un système de conversion d’e-books. découverte de De nombreux formats sont pris en charge ; en entrée : CBZ, CBR, CBC, l’interface CHM, DJVU, EPUB, FB2, HTML, L’installation est facilitée par la présence HTMLZ, LIT, LRF, MOBI, ODT, PDF, de packages dans les dépôts des distri- PRC, PDB, PML, RB, RTF, SNB, TCR, butions les plus courantes. On notera au TXT, TXTZ ; en sortie : AZW3, EPUB, passage que Calibre nécessite pas mal FB2, OEB, LIT, LRF, MOBI, HTMLZ, de dépendances (Python et Django). Au PDB, PML, RB, PDF, RTF, SNB, TCR, premier lancement du logiciel, un assis- TXT, TXTZ ; tant vous invite à créer votre première Fig. 2

Ceci fait, vous voilà devant l’interface principale ; votre liseuse devrait être automatiquement détectée (si elle est connectée à votre ordinateur évidem- ment...). Un Quick start guide apparaît dans la liste des ouvrages disponibles. Nous ne voyons pas encore le contenu de notre Kindle ; pour y remédier, cli- quez simplement sur l’icône Appareil dans la barre d’outils. De retour dans la bibliothèque, il est possible d’ajou- ter un nouvel ouvrage via le premier bouton de la barre d’outils ; vous pour- rez au choix sélectionner un fichier sur votre disque ou saisir un ISBN. Fig. 1 : Calibre, pour organiser votre bibliothèque d’e-books

10 | Linux Pratique n°74 www.linux-pratique.com APPLICATIF

Fig. 3

Fig. 4

L’affichage de l’ensemble de vos logiciel (Fig. 5) comporte les mêmes Mais le principal intérêt d’une appli- e-books pourra par la suite être filtré fonctionnalités que n’importe quel appa- cation comme Calibre réside dans la via l’un des critères se trouvant dans reil du genre : on peut sauter d’une page possibilité d’effectuer des conversions le panneau latéral gauche (auteur, for- à l’autre, effectuer une recherche tex- de format. Vous pourrez par exemple mat, éditeur, tags, etc.). Vous pourrez tuelle, agrandir ou diminuer la taille de la transformer un fichier PDF ou EPUB donc naviguer plus rapidement dans police, ajouter des signets, etc. en AZW3, compatible avec votre votre collection. Kindle. L’outil de conversion permet un Un clic droit sur l’un des items de la paramétrage très précis, puisqu’il est liste affiche le menu contextuel qui possible de définir la taille de police, vous donne accès à l’ensemble des la hauteur des lignes, l’encodage des opérations disponibles. Vous pourrez caractères, d’effectuer un rechercher/ par exemple éditer les métadonnées remplacer, etc. (Fig. 3), que Calibre aura rempli (ou Pour accéder à votre bibliothèque tenté de remplir) en interrogeant des depuis n’importe quel appareil, le ser- bases de données en ligne. veur de Calibre peut être activé au Fonctionnalité intéressante, Calibre choix, via l’icône Connecter/Partager Fig. 5 permet par ailleurs de récupérer des ou via les préférences du logiciel, actualités issues de divers sites d’in- dans la section partage (port 8080 formations ; vous pouvez même plani- par défaut). À noter que le serveur ne fier le téléchargement de ces données Le bouton Obtenir des livres permet de fonctionne pas sans Calibre, on veillera à la fréquence et à l’heure souhai- rechercher un livre en particulier (par donc à ce que le logiciel soit bien lancé tée (Fig. 4). Ceci fait, vous pourrez auteur, par titre...) et offre également un sur la machine hôte. Enfin, Calibre est envoyer ces différents flux d’informa- accès rapide aux principales boutiques capable de communiquer avec iTunes tions sur votre liseuse. en ligne d’e-books. Ainsi, sans sortir du et permet d’exporter vos e-books vers logiciel, vous pourrez rechercher de iPhone ou iPad ; nous n’avons cepen- N’hésitez pas à vous rendre dans les nouveaux ouvrages grâce à l’outil mis dant pas testé cette fonctionnalité... préférences de l’application, parmi à votre disposition (Fig. 6) ; sélection- lesquelles vous trouverez divers para- nez les boutiques à interroger, tapez mètres concernant l’interface, l’import/ vos mots-clés et faites votre choix ! On 4. Conclusion export des données, la conversion de notera la présence d’un indicateur de Calibre est doté d’une interface très format, etc. DRM dans la liste des résultats. intuitive et on apprécie ses fonctions d’indexation qui permettent de trier les 3. Organisez, e-books selon le critère de son choix, ainsi que l’outil de recherche intégré convertissez, lisez... permettant d’acquérir rapidement de Comme précisé plus haut, les livres de nouveaux contenus. La possibilité votre bibliothèque pourront être visua- d’agréger des flux d’informations est lisés via un simple clic droit. Attention également très pratique. Bien entendu, toutefois, les e-books protégés par des on se tournera préférentiellement vers DRM (comme ceux achetés sur Amazon) les œuvres tombées dans le domaine ne peuvent évidemment pas être visua- public ou bien libres de droits pour pro- lisés via Calibre ! La liseuse intégrée au Fig. 6 fiter pleinement de cet outil...

www.linux-pratique.com Linux Pratique n°74 | 11 APPLICATIF

GNOME Boxes, la solution de virtualisation « desktop » Fleur Brosseau GNOME Boxes est un outil conçu pour l’environnement de bureau éponyme, qui permet de se connecter à des applications exécutées sur un autre système - virtuel, local ou distant - Windows, Mac OS ou Linux. Ce nouveau logiciel est apparu quelques semaines avant la sortie d’Ubuntu 12.04. Il n’était alors proposé qu’en version de développement. Disponible en version 3.5.92 depuis le 19 septembre, Boxes est aujourd’hui proposé dans une version peaufinée dans la dernière release du bureau GNOME, publiée fin septembre. L’occasion pour nous de tester cette nouvelle application.

1. Que permet de faire 2. Installation et pré-requis GNOME Boxes ? Aujourd’hui, Boxes se trouve dans les dépôts de la plupart des distributions cou- rantes, son installation s’en trouve donc facilitée. Boxes dans sa toute dernière ver- GNOME Boxes (https://live.gnome. sion (3.5.92) se trouve ainsi dans les dépôts d’Ubuntu Quantal (12.10), Fedora 18, org/Boxes), baptisé « Machines » sur Mageia Cauldron (la version de développement de Mageia) – autrement dit les dis- les environnements de bureau franci- tributions intégrant la dernière version du bureau GNOME. Vous le trouverez éga- sés, n’est pas vraiment conçu pour les lement chez Debian Wheezy/Sid et openSUSE, mais en version inférieure (3.4.3). administrateurs système, ni destiné aux entreprises. Son but est en effet de pro- Le paquet gnome-boxes sera donc installé aisément via votre gestionnaire de poser une solution simple, à des utilisa- paquets habituel. teurs qui souhaiteraient accéder à leur Pour fonctionner, GNOME Boxes nécessite que votre processeur supporte la vir- poste de travail à distance ou bien ins- tualisation matérielle. Pour le vérifier, saisissez la commande suivante : taller et gérer sans difficulté une ou plu- sieurs machines virtuelles en local. $ cat /proc/cpuinfo | grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca À terme, le projet devrait remplacer cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm le (virt- constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf m a n a g e r ), conçu par Red Hat. pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 [...] Contrairement à ce dernier, Boxes est focalisé sur l’utilisation des OS invités et Dans la liste, vous devez voir vmx, comme ici (pour un processeur Intel), ou svm non pas sur l’administration de la machine (dans le cas d’un processeur AMD). En outre, il se peut que les capacités de vir- hôte. En outre, sa fonction de visionneur tualisation soient désactivées par défaut dans le BIOS du système. N’hésitez pas de bureau à distance pourrait faire de à faire un tour dans sa configuration, afin d’activer la virtualisation si nécessaire. Boxes le remplaçant de au sein Enfin, la commande suivante vous permettra de vérifier que tout est ok avant de du bureau GNOME. lancer Boxes : Le logiciel est codé en langage Vala et est diffusé sous licence GNU LGPL ver- $ gnome-boxes --checks sion 2. Pour la création de machines vir- The CPU is capable of virtualization: yes tuelles locales, GNOME Boxes s’appuie The KVM module is loaded: yes sur KVM et SPICE (Simple Protocol for Si le module KVM n’est pas chargé, vous pouvez y remédier en chargeant le Independent Computing Environments). module à la main : L’accès aux machines distantes est quant à lui réalisé via , SPICE et VNC. $ sudo modprobe kvm L’utilisation de libvirt devrait égale- $ sudo modprobe kvm-intel ment lui permettre de gérer des machines créées avec VMware ou Virtualbox. (ou kvm-amd selon le cas...)

12 | Linux Pratique n°74 www.linux-pratique.com APPLICATIF

Du côté de la barre d’outils de Boxes, on notera la présence d’une icône permet- tant de basculer en mode plein écran, ainsi qu’un moniteur de ressources sys- tème. Là, diverses options nous sont proposées : on peut tout d’abord visua- liser l’identité de la VM (virtualiseur, URI), puis l’espace disque et la quantité de RAM qui lui sont attribués (un sys- tème de curseur permet de modifier ces valeurs). Dans la section Affichage, on peut (dés)activer le partage du presse- Figure 1 papiers et le redimensionnement de l’in- vité et enfin, dans Périphériques, il est possible d’activer la redirection USB. On pourra effectuer une dernière véri- systèmes, notamment Windows XP fication, pour voir si les modules sont à 7 et Fedora, un mode d’installation L’ensemble des machines virtuelles bien chargés : express vous est proposé ; après avoir créées apparaissent en miniatures dans sélectionné le fichier image, l’étape sui- la fenêtre principale de Boxes. Un clic $ lsmod | grep kvm vante vous propose alors d’activer ce sur l’icône en haut à droite (en forme de kvm_intel 132543 0 mode, puis de renseigner nom d’utilisa- coche) permet de sélectionner une ou kvm 412517 1 kvm_intel teur et mot de passe avant de continuer. plusieurs machine(s) pour suppression ou pour les marquer comme favorites. À présent, Boxes est prêt à être utilisé... Remarquez la possibilité de redimen- L’application s’avère au final extrême- sionner à volonté la fenêtre de Boxes, ment simple à utiliser, rapide et stable. comme n’importe quelle autre applica- 3. Découverte de La facilité d’installation des machines tion et ce, sans pour autant perturber virtuelles est très appréciable. l’outil l’affichage, qui s’adapte automatique- Au premier lancement du logiciel, ... rien, ment aux nouvelles dimensions. ou presque. Seul un bouton Nouveau Si vous souhaitez utiliser Boxes en tant 4. Boxes 3.6 habite l’interface.Instinctivement, on que visionneur de bureau à distance, L’équipe de développement a bien tra- clique dessus afin de créer notre pre- vous devez saisir l’URL de la machine vaillé depuis la version de prévisualisa- mière « box », ou système virtuel. dont vous souhaitez visualiser le bureau. tion, en corrigeant de nombreux bogues Au choix, nous indiquons ensuite une À savoir que Boxes prend en charge les et en proposant davantage de fonction- URL ou un fichier ISO du système protocoles VNC, SPICE ou RDP. Pour nalités. Boxes a été conçu pour détermi- à installer (Fig. 1), puis on clique sur le bon fonctionnement de la connexion, ner automatiquement la quantité de RAM Continuer. À noter que l’application liste on n’oubliera pas, bien entendu, de lan- et d’espace disque nécessaire en fonc- ici les images ISO qu’elle a détecté auto- cer le serveur adéquat sur la machine tion de l’OS à installer (via libosinfo). matiquement sur le système hôte ou distante (x11vnc, spice-server, Eh bien dorénavant, la version 3.6 pro- que vous avez précédemment utilisées ; xrdp...) et éventuellement de paramé- pose un nouveau bouton permettant de un simple clic sur l’une d’entre elles et trer le pare-feu en conséquence pour personnaliser ces paramètres ; parmi le système se lance. Pour certains permettre la connexion. ceux-ci, on appréciera la possibilité de renommer la machine virtuelle, ce qui s’avère plus pratique lorsque l’on en gère plusieurs. En outre, vous dispose- rez dorénavant d’une zone de recherche pour accéder plus rapidement à la VM de votre choix. Globalement, l’affichage et les animations sont bien plus fluides. L’utilisation en ligne de commandes a elle aussi été améliorée ; la commande gnome-boxes --checks retourne en effet davantage d’informations (à propos de libvirt et du contexte SELinux) et une machine virtuelle pourra être sim- plement lancée comme suit :

$ gnome-boxes Figure 2 : Boxes, installé sur une Fedora 17, permet ici de faire tourner une machine virtuelle hébergeant une distribution Lubuntu.

www.linux-pratique.com Linux Pratique n°74 | 13 APPLICATIF

DocFetcher, votre allié pour indexer et (ré)exploiter vos documents Fleur Brosseau DocFetcher est une application qui permet d’effectuer des recherches dans le contenu des fichiers se trouvant sur votre disque. Sur le site du projet, on l’assimile même à une sorte de moteur de recherche Google, mais en local. Et pour cause : saisissez les termes ou l’expression régulière de votre choix et vous n’avez plus qu’à parcourir la liste des résultats pour retrouver le passage qui vous intéresse...

1. Présentation DocFetcher est publié sous licence open source EPL (Eclipse Public License) ; il fonctionne sous Linux, Mac OS X et Windows, sur systèmes 32 ou 64 bits. Son fonctionnement nécessite un JRE (Java Runtime Environment) en version 1.6.0 ou supérieur. Son installation sous Linux consiste à récupérer une archive sur le site du projet, à en extraire le contenu et à exécuter le script .sh fourni. Pour commencer, DocFetcher sup- porte un ensemble de formats de fichiers plutôt conséquent : OpenOffice.org (ODT, ODS, ODG, ODP, OTT, etc.), Microsoft Office (DOC, DOCX, XLS, XLSX, PPT, etc.), Microsoft Outllook (PST), Microsoft Visio (VSD), PDF, SVG, HTML, RTF, Abiword (ABW) et format texte simple. Figure 1 Il supporte également les formats d’ar- chive ZIP, 7Z, RAR et TAR.*. sont listés juste en-dessous ; une 2. Première étape : On notera que DocFetcher est en fenêtre de pré-visualisation vous per- outre capable de détecter les paires met de parcourir le contenu du fichier l’indexation de fichiers HTML, c’est-à-dire, le sélectionné dans la liste (les termes Bien entendu, comme toute applica- fichier HTML en lui-même, ainsi que le recherchés sont surlignés). tion de ce genre, DocFetcher néces- répertoire d’éléments qui lui est asso- Sur la gauche, vous trouverez les dif- site qu’il existe un index des différents cié ; il traite alors l’ensemble comme férents filtres qu’il est possible d’appli- fichiers dans lesquels vous souhai- un seul et même document. quer à la liste de résultats : par taille tez lancer des recherches. La créa- Son utilisation est assez intuitive minimum et/ou maximum, par type tion d’un nouvel index s’effectue de la (Fig. 1) : un champ de recherche en de fichier, par emplacement sur le façon suivante : un clic droit dans la haut de la fenêtre principale vous disque. Le raccourci [Ctrl]+[F] permet zone Search Scope affiche le menu permet de saisir le ou les termes de ramener le focus sur le champ de contextuel avec l’option Create Index recherché(s). Les différents résultats recherche. From. Vous avez alors le choix entre

14 | Linux Pratique n°74 www.linux-pratique.com APPLICATIF

, , (autre- Folder Archive Outlook PST Note ment dit, les mails de Microsoft 3. Formuler sa Outlook) ou Clipboard. On choisit requête et organiser Notez que le lien des paramètres avan- l’option Folder afin de définir les cés vous mène directement à l’édition du répertoires que nous souhaitons les résultats fichier de configuration de l’application (DocFetcher-1.1.3/conf). Outre les indexer (Fig. 2). DocFetcher accepte bien sûr les opé- options concernant l’apparence et l’affichage, La fenêtre de dialogue qui apparaît rateurs OR, AND et NOT (que l’on saisira remarquez la présence de l’option Analyzer ensuite vous propose de préciser toujours en majuscules) au sein de vos (en fin de fichier), qui définit le type d’ana- des extensions de fichier personnali- requêtes. Il est également possible : lyse durant l’indexation. Si vous envisagez sées pour les recherches plein texte • d’utiliser des caractères jokers (wild- d’indexer une majorité de fichiers de code, et les archives zip) et de définir éven- cards), autrement dit * et ?, mieux vaut fixer ici sa valeur à 1, afin d’avoir tuellement des expressions régu- • d’effectuer la recherche d’une por- une analyse de contenu plus adaptée. lières permettant d’exclure certains tion de phrase, en entourant celle-ci fichiers de l’indexation. Par exemple, par des doubles-cotes ; pour don- Une fois les résultats affichés, il est pour exclure les fichiers PDF de l’in- ner plus de poids à l’un des termes possible de trier ceux-ci en cliquant dexation ou pourra écrire : .*\.pdf. recherchés, on pourra le précéder du sur l’entête de colonne correspondant Ceci fait, on peut cliquer sur Run pour caractère +, (par taille, par nom de fichier, etc.). Les lancer l’indexation. Celle-ci est bien • de pondérer les différents termes, colonnes peuvent quant à elle être réor- entendu plus ou moins longue selon c omme c ec i : ‘’ t e r m e 1 ^ 5 ganisées par simple glisser-déposer. la quantité de fichiers à indexer... Le terme2^2’’, site du projet annonce une vitesse de 200 fichiers par minute environ. • de procéder à une recherche de simi- larité ou de proximité, à l’aide du 4. Son principal Bien entendu, un index est créé à caractère ~. Par exemple, la requête atout : la précision un instant t et la base documen- crypt~ retournera les termes « cryp- taire peut être amenée à changer. ter », « script », etc. Pour une recherche En effet, les atouts de DocFetcher réside C’est pourquoi DocFetcher vérifie à de proximité, on précisera en outre le dans la précision avec laquelle il est pos- chaque démarrage s’il n’y a pas eu nombre de mots séparant les termes sible de définir les éléments à indexer, de modifications dans les répertoires recherchés, comme ceci : ‘’terme1 ainsi que les nombreux filtres propo- indexés, auquel cas il se charge de terme2’’~10. sés pour affiner les résultats. Simple à mettre l’index à jour automatique- prendre en main, DocFetcher est une • de restreindre la recherche à certaines ment. Lorsque l’application n’est pas solution plutôt séduisante pour indexer métadonnées (filename, title, lancée, un démon peut s’exécuter en ses fichiers et profiter ultérieurement author, etc.) : filename:’’terme1 arrière-plan (il faut dans ce cas ajou- d’une véritable base documentaire. terme2’’ ter le script fourni aux programmes lancés au démarrage du système) Les préférences du logiciel (Fig. 3) sont Liens et ainsi surveiller les répertoires accessibles via l’une des icônes se trou- indexés ; s’il détecte des modifica- vant en haut à droite de l’interface prin- Le site du projet : http://docfetcher. tions, celles-ci sont consignées puis cipale. On peut y remarquer notamment sourceforge.net/en/index.html signalées à DocFetcher dès son pro- que c’est l’opérateur OU qui est utilisé par Le Wiki du projet : http://docfetcher. chain lancement. défaut dans les requêtes (et non ET). sourceforge.net/wiki/doku.php

Figure 2 Figure 3

www.linux-pratique.com Linux Pratique n°74 | 15 en Couverture

La gestion de configuration simplifiée avec Ansible Benoît Benedetti

Certains administrateurs abandonnent l’idée d’utiliser de tels outils, malgré les avantages apportés. Ceux qui les adoptent doivent éga- lement utiliser un outil de déploiement (comme Fabric [FABRIC]) et un outil d’exécution de commandes (comme Func [FUNC]) pour répondre à toutes les tâches d’administration d’un parc de plu- Si vous avez testé, ou êtes sieurs machines. utilisateur d’un système de Michael Dehaan [BLOG] est arrivé au même constat. Michael a tra- vaillé pour des grands comptes, dont Red Hat, chez qui il a déve- gestion de configuration, comme loppé Cobbler [COBBLER] et faisait également partie de l’équipe l’un parmi les plus connus à l’origine de Func. Il sait donc de quoi il parle, connaît bien les besoins en administration système, et a voulu développer un outil CFEngine, Puppet ou Chef, pour répondre à ces exigences. Un outil unique, qui permette de vous savez que leur courbe gérer la configuration, déployer des fichiers et exécuter des com- mandes parallèlement sur un ensemble de serveurs. Un outil qui d’apprentissage est forte. Il soit simple à installer, simple à prendre en main et à utiliser. Et vous faudra apprendre une Ansible [ANSIBLE] est né début 2012. syntaxe, installer les outils clients Le fonctionnement de Ansible est on ne peut plus simple (Fig. 1). Il ne nécessite pas de serveurs avec des fichiers à la configuration et serveurs appropriés, voire complexe, ou un processus démon installé sur les clients qui leur adopter la « philosophie » d’un permet de récupérer leur configuration. Installé sur une station d’ad- ministration, Ansible contient la configuration dans un format simple tel logiciel. et communique avec les clients via SSH, protocole sûr et éprouvé, disponible et installé dans tout parc de machines Linux. Ansible ne (Source: http://ansible.github.com)

16 | Linux Pratique n°74 www.linux-pratique.com en Couverture

nécessite pas d’ouvrir de nouveaux ports, ou d’autoriser un que l’on peut préciser un fichier de notre choix par l’option processus avec les droits root à s’exécuter sur vos machines, --inventory (-i), nous allons créer le fichier ~/.ansible/ ce qui sera un plus pour être accepté par l’équipe réseau. hosts dans le répertoire personnel de l’utilisateur qui a ins- Pour exécuter une commande sur vos machines, Ansible tallé Ansible. Commencez par créer le dossier qui va conte- utilise des modules. Plusieurs sont déjà disponibles et vous nir la configuration d’Ansible : pouvez écrire les vôtres dans le langage de votre choix, en $ mkdir ~/.ansible utilisant l’API de Ansible. Pour exécuter des tâches plus com- plexes, composées de plusieurs commandes, Ansible utilise Puis, créez le fichier ~/.ansible/hosts suivant, qui des playbooks, des scénarios écrits dans un langage simple. contient pour l’instant seulement notre machine locale : 1. Installation localhost Écrit en Python, Ansible utilise au minimum la version 2.6 Nous pouvons exécuter notre première commande : du langage. Si vous souhaitez installer Ansible sur des sys- $ ansible localhost -i ~/.ansible/hosts --ask-pass -a «whoami» tèmes plus anciens, ou contrôler des clients ne disposant SSH password: pas de Python 2.6, vous trouverez les instructions sur la localhost | success | rc=0 >> page d’installation officielle [DOCUMENTATION]. toto Dans cet article, nous allons installer et utiliser Ansible ansible whoami depuis une machine d’administration sous Debian 6. exécute la commande sur la machine localhost ~/.ansible/hosts Plusieurs méthodes d’installation sont décrites dans la docu- listée dans le fichier . Pour mentation officielle : nous allons installer via Git la version éviter de préciser le fichier à chaque appel, vous pouvez uti- ANSIBLE_HOSTS en cours de développement, soit la version 8 : liser la variable d’environnement :

$ sudo aptitude -y install git python-jinja2 python-yaml $ export ANSIBLE_HOSTS=~/.ansible/hosts python-paramiko #quelques dépendances Ajoutez la ligne suivante à votre fichier ~/ansible/ $ git clone git://github.com/ansible/ansible.git hacking/env-setup pour initialiser cette variable d’envi- Cloning into ansible... ronnement à chaque début de session : Remarquez que je n’ai pas exécuté la commande git via sudo pour installer les sources d’Ansible dans un dossier ... particulier, un utilisateur sans privilèges pouvant récupérer export MANPATH=$PREFIX_MANPATH:$MANPATH export ANSIBLE_HOSTS=~/.ansible/hosts et exécuter Ansible. Pour l’utiliser, chargez l’environnement, depuis le dossier ansible récupéré : # Print out values unless -q is set $ source ansible/hacking/env-setup ... PATH=/home/user/ansible/bin:/usr/local/bin:/usr/bin:/bin:/usr/ Par défaut, les commandes sur les machines distantes sont local/games:/usr/games exécutées avec l’utilisateur qui a lancé ansible (ici l’utilisa- PYTHONPATH=/home/user/ansible/lib: toto ANSIBLE_LIBRARY=/home/user/ansible/library teur , comme indiqué par la sortie de notre première MANPATH=/home/user/ansible/docs/man: commande ansible). Pour exécuter des commandes sous Reminder: specify your host file with -i un utilisateur différent, passez l’option --remote-user (-u). Done. L’option --ask-pass (ou -k) utilise l’authentification par mot de passe et vous demandera le mot de passe de l’uti- Vous pouvez ajouter la commande précédente à la fin de lisateur qui va exécuter la commande. Par simplicité, vous votre fichier ~/.bashrc pour initialiser l’environnement pouvez générer une paire de clés SSH, qui couplée avec d’Ansible à chacune de vos sessions : ssh-agent, vous évitera de taper le mot de passe à chaque ... exécution : source ~/ansible/hacking/env-setup $ ssh-keygen 2. Lister ses machines et Puis, ajoutez la clé générée à ssh-agent : $ ssh-agent bash ;ssh-add /home/toto/.ssh/id_rsa_ansible premières commandes Enter passphrase for /home/toto/.ssh/id_rsa_ansible: Dans sa forme la plus simple, Ansible exécute une com- mande sur une ou plusieurs machine(s). Ces machines Copiez la clé publique dans le dossier de l’utilisateur sur la doivent être listées dans un fichier d’inventaire, par défaut machine distante : /etc/ansible/hosts. Ce fichier n’existe pas. Étant donné $ cat ~/.ssh/id_rsa_ansible.pub >> ~/.ssh/authorized_keys que nous travaillons avec un utilisateur non privilégié, et

www.linux-pratique.com Linux Pratique n°74 | 17 en Couverture La gestion de configuration simplifiée avec Ansible

Note #un groupe dev [dev] Vous devrez bien sûr renouveler ces manipulations lors 192.168.0.10 de l’ajout de machines supplémentaires à gérer. Et les 192.168.1.10 adapter, vu que nous travaillons sur la machine locale pour le moment et que nous avons effectué une simple #un groupe web copie en local ici. [web] front.example.fr a.exemple.fr La commande initiale peut maintenant être simplement b.exemple.fr appelée par : c.exemple.fr d.exemple.fr $ ansible localhost -a «whoami» e.exemple.fr

Vous pouvez utiliser l’option --sudo (-s), pour exécuter une #un groupe db commande via sudo sur la machine distante. Étant donné [db] que vous avez sécurisé sudo (enfin, j’espère), il vous fau- db.exemple.fr dra utiliser l’option --ask-sudo-pass pour demander d’af- db.exemple.net ficher un prompt supplémentaire pour la saisie du mot de #un groupe de groupes prod, incluant les groupes web et db. passe. L’option --sudo-user (-U) permet d’exécuter sudo #notez l’utilisation de ‘children’ pour indiquer avec l’utilisateur précisé, au lieu de root par défaut. Une #que les noms qui suivent font référence commande qui utiliserait un mélange de toutes ces options #à d’autres groupes existants et non à des machines: nous donnerait : [prod:children] web $ ansible localhost -a «ls /home/tata» -k -u titi -s -K -U tata db SSH password: sudo password: Pour exécuter une commande avec ansible, on cible une ... ou des machine(s) avec un motif. Nous avons déjà vu l’uti- lisation du nom de la machine pour motif, avec localhost Cet appel d’ansible se connecterait à localhost avec comme motif. Vous pouvez cibler une machine par IP, un l’utilisateur titi en demandant son mot de passe (-k). Il groupe ou un groupe de groupes : exécuterait la commande ls dans le répertoire /home/tata de localhost sous l’utilisateur tata via sudo (il faut bien $ ansible 192.168.0.10 -a «uname -a» #une machine sûr que titi soit autorisé sur localhost à utiliser une telle $ ansible web -a «uname -a» #un groupe commande sous sudo en tant que tata) en demandant son $ ansible prod -a «uname -a» #un groupe de groupes mot de passe. Dans un groupe, vous pouvez limiter le nombre de machines Si vous utilisez beaucoup d’options de manière récur- ciblées avec [x-y], x étant l’indice de la première machine rente, vous pouvez créer un fichier ~/.ansible.cfg pour du groupe à cibler, y la dernière (la numérotation de l’in- les déclarer. La commande ansible utilisera tous les dice commence à zéro). Dans notre fichier exemple, la paramètres de ce fichier par défaut. Un fichier d’exemple commande s’exécuterait sur les machines a.example.fr, ansible/examples/ansible.cfg est disponible dans les b.example.fr et c.example.fr : sources d’Ansible rapatriées par Git. $ ansible web[1-3] -a «uname -a» # machines d’indice 1 à 3 du groupe web 3. Gérer des groupes de Pour un nom de machine, vous pouvez utiliser le joker * dans votre motif, pour cibler plusieurs machines en même machines temps (all est un alias de * tout court) : Notre fichier ~/.ansible/hosts ne liste qu’une machine. Vous pouvez bien sûr ajouter autant de machines que néces- $ ansible * -a «uname -a» #cible toutes les machines du fichier hosts... $ ansible all -a «uname -a» #...all et * sont équivalents saire, par IP ou nom DNS, pour gérer l’ensemble de votre $ ansible 192.168.* -a «uname -a» #toutes les machines dont l’IP parc. Ce fichier accepte également des groupes, voire des commence par 192.168 groupes de groupes, pour organiser vos machines, comme $ ansible *.fr -a «uname -a» #toutes les machines de nom finissant par dans l’exemple suivant : ‘.fr’

#des machines n’appartenant à aucun groupe Le caractère * s’applique sur tous les noms de machine du localhost hosts 10.0.1.10 fichier d’inventaire , indépendamment de leur appar- #on peut utiliser des plages dans des listes d’IP...: tenance ou non à un groupe. En utilisant le caractère :, vous 10.0.2.[01:20] pouvez combiner différents motifs : #...comme dans des noms DNS: servers[01:20].exemple.fr $ ansible localhost:192.168.*:web -a «uname -a»

18 | Linux Pratique n°74 www.linux-pratique.com en Couverture

4. Les modules 5. Playbooks La commande ansible exécute obligatoirement une tâche Jusqu’à présent, nous nous sommes servis exclusive- en précisant le module à utiliser par l’option -m. Jusqu’à ment de la commande ansible. Comme l’ont montré les présent, nous avons exécuté une tâche de type ligne de exemples d’utilisation, elle est parfaite pour effectuer des commandes, car le module command est utilisé par défaut tâches ponctuelles, et conçue pour cela : stopper un service, si aucune option -m n’est précisée : redémarrer une machine, copier un fichier. Par contre, elle s’avère limitée pour gérer complètement la configuration d’un $ ansible localhost -a «uname -a» # est équivalent à ... parc de machines. Imaginons que vous utilisiez ansible $ ansible localhost -m command -a «uname -a» pour installer une ou plusieurs machine(s). Quelques temps plus tard, vous désirez installer une machine supplémentaire On passe des arguments à un module avec l’option de manière similaire. Rejouer une à une les commandes -a. Les arguments utilisables dépendent du module, ansible (en supposant que vous les ayez sauvegardées !), comme com mand qui accepte une commande à exé- ne s’avère pas optimale pour cette situation. cuter entre guillemets, comme nous l’avons déjà vu. Par contre, tous les modules acceptent la forme clé=valeur Ansible permet de grouper et de jouer plusieurs tâches, simi- comme paramètre. Dans la documentation officielle des laires à celles exécutables par la commande ansible, dans modules [MODULES], vous trouverez leur liste, ainsi que les un playbook. Un playbook offre d’autres fonctionnalités, qui paramètres clé=valeur qu’ils supportent. Les modules dis- vont vous permettre de centraliser la configuration de votre ponibles par défaut permettent d’effectuer les tâches d’ad- infrastructure, à la manière d’un Manifest de Puppet, ou d’un ministration les plus courantes : cookbook Chef. À la différence de ces derniers, un play- book est facile à écrire et à lire, dans le format YAML. Ce $ ansible localhost -m file -a «path=/etc/foo.cfg owner=toto group=root format est simple à assimiler et sa page d’introduction dans mode=0600» # modifier les attributs d’un fichier la documentation officielle [YAML] suffira comme base pour $ ansible localhost -m apt -a «name=tmux state=installed» #installer un rédiger un playbook. module via apt... $ ansible localhost -m yum -a «name=tmux state=installed» #.. ou via yum Les attributs les plus importants, et obligatoires, d’un play- $ ansible localhost -m service -a «name=rsyslog state=restarted» book sont les machines cibles sur lesquelles exécuter le #redémarrer un service playbook et la (ou les) tâche(s) à exécuter. Une tâche est $ ansible localhost -m copy -a «src=conf/foo.cfg dest=/etc/foo.cfg composée d’un nom pour la décrire et d’une action. Une owner=root group=root mode=0600» #copier un fichier action est simplement l’appel à un module. De nombreux autres attributs optionnels sont utilisables. Voyons un exemple simple : Note Dans le cas de la copie d’un fichier, l’utilisateur exécutant --- ansible doit avoir les droits pour lire le fichier source. #hosts peut prendre pour valeur une machine, un groupe ou un groupe de groupes Il existe encore d’autres modules pour gérer les utilisateurs, les - hosts: localhost groupes, les clés SSH, MySQL ou PostgreSQL. Je vous renvoie vars: vers la page dédiée aux modules de la documentation officielle #On peut déclarer des variables utilisables dans les différentes sections citée précédemment. Si vous n’y trouvez pas votre bonheur, #sous la forme «nom: valeur». Le nom peut prendre n’importe quelle chaîne vous pouvez écrire votre propre module [MODULEDEV], dans #de caractères. le langage de script de votre choix. Pour cela, gardez en tête le #La valeur peut être complexe comme un test... principe d’exécution d’un module : is_debian: «’$ansible_distribution’ == ‘Debian’» #...ou une simple valeur numérique • Ansible crée une connexion SSH vers la machine cible, limite: 20 • Le module/script est copié vers cette machine, tasks: • Le module est exécuté avec les arguments passés à - name: Une première tâche qui installe le module PHP d’Apache ... ansible -a via l’option , action: apt name=libapache2-mod-php5 state=installed • Le module doit retourner le résultat de son exécution au #...seulement si la variable is_debian est vraie format JSON à ansible. only_if: ‘$is_debian’ #on peut assigner un tag à une tâche Si votre module fait appel à une librairie (par exemple un tags: php5 module écrit en Ruby qui utiliserait une gem), cette librai- rie doit être présente sur la machine cible qui exécute au - name: Une deuxième tâche qui utilise un template jinja final le module. Un module doit également essayer d’être action: template src=conf_files/php.ini.j2 dest=/etc/php5/apache2/ idempotent le plus souvent possible : si une tâche a déjà php.ini été réalisée, elle ne doit pas être à nouveau exécutée. Par tags: phpconf #Si elle est effectuée, on exécute un handler qui redémarre Apache exemple, le module copy ne copie pas un fichier si la source notify: restart serveur web et la destination sont égales (elles sont comparées via md5).

www.linux-pratique.com Linux Pratique n°74 | 19 en Couverture La gestion de configuration simplifiée avec Ansible

Dans cette phase, ansible-playbook récupère un handlers: #Le handler qui redémarre Apache ensemble d’informations sur la machine cible, sous la forme - name: restart serveur web de couples paramètre/valeur au format JSON, pour son action: service name=apache state=restarted usage interne et utilisable dans les playbooks qu’il exécute. C’est l’équivalent de Facter chez Puppet et Ohai pour Chef. Même sans en connaître plus sur un playbook, la simple Pour connaître ces différents paramètres et leur valeur, uti- lecture du listing précédent suffit à comprendre son fonction- lisez le module setup sur une machine cible comme suit : nement et son effet. Imaginons que nous l’ayons enregistré dans un fichier ~/.ansible/php.yml. Pour vérifier que le $ ansible all -m setup #pour, par exemple, récupérer les playbook va bien s’exécuter sur les machines attendues, informations de toutes les machines ou... --list-hosts $ ansible localhost -m setup #...juste une machine en utilisez l’option : particulier. ... $ ansible-playbook ~/.ansible/php.yml --list-hosts «ansible_distribution»: «Debian», hosts in play 1: unnamed «ansible_distribution_release»: «NA», localhost «ansible_distribution_version»: «6.0.5», «ansible_eth0»: { Une fois cette vérification facultative faite, pour appliquer le «device»: «eth0», playbook, lancez la commande suivante : «ipv4»: { «address»: «192.168.0.13», $ ansible-playbook ~/.ansible/ifconfig.yml «netmask»: «255.255.255.0», SSH password: «network»: «192.168.0.0» sudo password: } PLAY [localhost] ********************* ... GATHERING FACTS ********************* ok: [localhost] Un autre moyen de définir des variables est dans le fichier TASK: [Une première tâche qui installe le module PHP d’Apache...] ****** hosts qui liste les machines : ok: [localhost] TASK: [Une deuxième tâche qui utilise en template jinja] ************** fatal: [localhost] => {‘msg’: «[Errno 2] No such file or directory: u’/ ... conf_files/php.ini.j2’», ‘failed’: True} #Variables s’appliquant au groupe web fatal: [localhost] => {‘msg’: «[Errno 2] No such file or directory: u’/ [web:vars] conf_files/php.ini.j2’», ‘failed’: True} limit=20 PLAY RECAP ********************* ... localhost : ok=2 changed=0 unreachable=1 failed=0 Un moyen plus organisé de gérer vos variables, sans sur- La sortie de la commande est explicite. Toutes les tâches charger votre fichier hosts ou vos playbooks, est d’exter- sont exécutées par ansible-playbook dans l’ordre indi- naliser ces données. Pour les données d’une machine, elles qué dans le playbook, et l’exécution d’un playbook s’inter- seront contenues dans le fichier host_vars/nom_de_la_ rompt dès qu’une erreur est rencontrée. Comme ici, lors de machine et dans group_vars/nom_du_groupe pour la deuxième tâche, pour laquelle un fichier fait défaut. Nous un groupe, fichiers au format YAML. Les dossiers host_ allons y revenir. vars et group_vars sont à créer dans le dossier conte- nant le fichier hosts. Pour revenir à notre exemple, si la Note variable limit n’était définie ni dans le playbook, ni dans hosts, on pourrait créer le fichier de variables pour local- Je les ai omis ici par souci de lisibilité, mais la commande host ~/.ansible/host_vars/localhost suivant : ansible-playbook partage certains paramètres avec la commande ansible, comme les options -u, -k, -K --- ou -U pour la connexion utilisateur et sudo. Le fichier limit: 20 de configuration ~/.ansible.cfg est également lu par ansible-playbook pour simplifier son utilisation. Un dernier moyen est de passer les variables directement sur la ligne de commandes : Vous pouvez jouer seulement une tâche en particulier, si celle-ci a été taggée dans le playbook : $ ansible-playbook ~/.ansible/php.yml --extra-vars=»limit=20»

$ ansible-playbook ~/.ansible/ifconfig.yml --tags «php5» L’utilisation des variables est vraiment intéressante avec les templates. Les templates s’utilisent dans une action par Les variables sont intéressantes à utiliser dans vos play- le module template (l’utilisation du module template books. Vous pouvez les y déclarer directement, comme est également possible avec la commande ansible tout pour les variables limit et is_debian. Cette dernière court). Le format de template utilisé est le format Jinja2 est complexe, elle utilise un test pour savoir si $ansible_ de Python [JINJA2]. Dans notre deuxième tâche, on uti- distribution est égale à la chaîne D e bian. La lise le template conf_files/php.ini.j2, qui contient valeur de ansible_distribution est récupérée par la ligne suivante (on utilise un chemin relatif au dossier ansible-playbook lors de la phase GATHERING FACTS. ~/.ansible ; le dossier conf_files est donc à créer, en

20 | Linux Pratique n°74 www.linux-pratique.com en Couverture

plus du fichier php.ini.j2 bien sûr. Une API REST et une interface web Vous pouvez également utiliser un 6. Optimiser cliente de cette API [COMMANDER] chemin absolu pour vos templates l’exécution de vos sont en cours de développement, dans un playbook) : pour paramétrer Ansible depuis votre tâches navigateur et pas seulement via la ... console. Surveillez les différentes post_max_size = {{ limit }}M Les commandes a n s i b l e et annonces et leur lot de nouveautés, ... ansible-playbook acceptent l’op- tion --fork (-f) pour s’exécuter via pour un projet qui s’affirme peu à peu {{ limit }} sera remplacé par plusieurs processus en parallèle : comme une alternative sérieuse aux la valeur de la variable limit dans systèmes de gestion de configuration le fichier destination /etc/php5/ $ ansible all -a «uname -a» -f 15 existants. apache2/php.ini : La commande ansible permet égale- ... ment d’exécuter une tâche longue en post_max_size = 20M Références arrière-plan avec l’option -B, et de sur- ... veiller son exécution avec -P. [FABRIC] fabfile.org Pour en finir avec notre aperçu d’un Le fonctionnement par défaut de [FUNC] playbook, vous vous rappelez de Ansible est appelé mode Push, qui http://func.et.redhat.com/ la notion d’idempotence de l’exé- fait toute sa simplicité : une machine [BLOG] cution d’un module ? Si l’exécution d’administration « pousse » des http://michaeldehaan.net/ d’un module a modifié le système commandes, des fichiers vers des [COBBLER] cible (nouveau fichier, paquetage...), machine cibles. il retourne alors une notification de https://fedorahosted.org/cobbler/ modification à ansible-playbook. Un mode Pull est disponible, mode [ANSIBLE] http://http://ansible.cc Dans une tâche, on peut déclencher intéressant si vous avez un parc un handler avec l’attribut notify, si le important à gérer et que le mode Push [DOCUMENTATION] module de l’attribut action a effectué montre ses limites. Ce mode permet à http://ansible.cc/docs/ des modifications. une machine de récupérer une copie gettingstarted.html de la configuration en local depuis le Techniquement, un handler se défi- [MODULES] http://ansible.cc/ poste maître, grâce à la commande nit comme une tâche, avec un nom et docs/modules.html ansible-pull. Ansible sera ensuite une action, action qui peut faire appel exécuté via cron sur chaque machine, [MODULEDEV] http://ansible.cc/ à n’importe quel module. En pratique, en mode local (option -c local). Le docs/moduledev.html un handler utilisera généralement le mode Pull nécessite donc d’instal- module service pour redémarrer un [YAML] http://ansible.cc/docs/ ler Ansible en local sur toutes les service. Comme c’est le cas de notre YAMLSyntax.html machines à gérer. handler « restart serveur web », qui [JINJA2] redémarre Apache seulement si notre http://jinja.pocoo.org/docs/ deuxième tâche est effectuée (lors de la 7. Conclusion création ou de la mise à jour du fichier [PLAYBOOK1] http://ansible.cc/ Bien qu’étant une simple introduction docs/playbooks.html /etc/php5/apache2/php.ini). à Ansible, cet article a démontré l’inté- Les playbooks offrent de nombreuses [PLAYBOOK2] http://ansible.cc/ rêt qu’Ansible peut présenter pour une docs/playbooks2.html autres possibilités [PLAYBOOK1] plus infrastructure qui aurait besoin d’une avancées [PLAYBOOK2], et de nom- solution de gestion de configuration, [PLAYBOOK3] breuses options [PLAYBOOK3] et qui ne peut s’investir dans des solu- https://gist.github.com/2979474 vous trouverez des exemples dans tions trop complexes et veut se baser [PLAYBOOK4] https://github. les sources du projet [PLAYBOOK4]. sur l’existant tel que SSH pour être com/ansible/ansible/tree/devel/ Vous pouvez inclure un ou plusieurs rapidement opérationnelle. examples/playbooks playbooks dans un autre playbook pour Un plugin [VAGRANT-ANSIBLE] factoriser au maximum la configuration [PRATIQUES] http://ansible.cc/ de votre parc. La rédaction et l’organi- pour utiliser Ansible avec Vagrant docs/bestpractices.html [VAGRANT] est disponible. Il vous sation de vos playbooks dépendra de [VAGRANT-ANSIBLE] votre stratégie de gestion de configu- permettra aussi bien d’évaluer Ansible, que de tester vos playbooks et com- https://github.com/dsander/ ration, sachant que vous trouverez sur vagrant-ansible la documentation officielle une liste de mandes, si vous comptez l’adopter. bonnes pratiques pour bien démar- Ansible est un projet qui évolue vite, la [VAGRANT] http://vagrantup.com/ rer [PRATIQUES], comme des conseils version 0.8 a déjà dû être stabilisée au sur l’organisation de l’arborescence de moment où vous lirez ces lignes et la [COMMANDER] https://github. vos dossiers et fichiers. version 0.9 en train de pointer son nez. com/ansible/ansible-commander

www.linux-pratique.com Linux Pratique n°74 | 21 système & réseau

Protéger des données sensibles : quelques solutions rapides Fleur Brosseau Tout le monde a sur son disque dur un ou plusieurs fichier(s) contenant des informations très personnelles (liste de mots de passe, comptabilité, etc.). Bien que les risques d’attaques soient minimes et que vous ayez confiance en chacun des membres de votre foyer, vous seriez plus serein si ces informations critiques n’étaient lisibles que par vous et vous seul. Pour ce faire, voici quelques solutions simples et rapides à mettre en place.

Quelques rappels ~$ aespipe < fichier à chiffrer > fichier de sortie préliminaires... Vous devez alors saisir un mot de passe ; ce dernier doit faire 20 caractères minimum. Chiffrer un fichier consiste à rendre son contenu indéchiffrable s’il est consulté tel quel. Le seul moyen d’accéder au contenu ~$ aespipe < secret.txt > protected.txt est de détenir une ou deux clés selon l’algorithme utilisé pour Password: le chiffrement. On en distingue en effet deux types [1] : ~$ cat protected.txt # q 0 K#P • les algorithmes symétriques : une même clé sert à chif- ⃞ ## # +(0 # +! frer et à déchiffrer le message et n’est connue que des ~$ deux correspondants. Parmi les plus connus : DES (Data Encryption Standard), triple DES, AES (Advanced L’algorithme utilise des clés de 128, 192 ou 256 bits. L’option Encryption Standard), RC2 et RC4, IDEA (International -e permet de spécifier un algorithme de chiffrement parmi : Data Encryption Algorithm), Blowfish. AES128 (par défaut), AES192 et AES256. Le fichier d’origine • les algorithmes asymétriques : ils sont basés sur 2 clés, une n’étant pas écrasé, on pensera à le supprimer si nécessaire... clé publique et une clé secrète, qui dépendent mathématique- L’option -d permet de déchiffrer les données : ment l’une de l’autre. La clé publique peut être diffusée sans risque, à autant de personnes que nécessaire, mais la clé ~$ aespipe -d < protected.txt > unencrypted.txt secrète, qui sert à déchiffrer le message, doit être bien pro- tégée. Ce mode de chiffrement présente l’avantage de per- mettre l’authentification mutuelle des deux correspondants. Il 1.2 mcrypt permet également de signer un document. L’algorithme asy- Il s’agit d’une commande , qui vient remplacer la com- métrique le plus utilisé est sans aucun doute le RSA, du nom mande crypt, devenue aujourd’hui obsolète. On l’utilise de de ses créateurs Rivest, Shamir et Adleman. la façon suivante :

Concernant les protocoles de chiffrement, qui utilisent ~$ mcrypt -a chacun un ou plusieurs algorithme(s), on pourra retenir : Kerberos, RPC-Secure, SSL, PGP et SSH. La sécurité d’un où désigne l’un des algorithmes de chiffrement sup- protocole dépend principalement de l’algorithme utilisé et de portés par le programme, dont vous pouvez visualiser la la longueur de la clé. liste via :

~$ mcrypt --list 1. Chiffrer un fichier On vous demande ensuite de saisir une phrase de passe (2 1.1 aespipe fois). Vous obtenez alors un fichier d’extension .nc, dont le Le programme aespipe (http://loop-aes.sourceforge.net/ contenu est illisible. Ici encore, le fichier d’origine n’est pas aespipe/) s’utilise de la façon suivante : supprimé automatiquement, n’oubliez pas de le supprimer !

22 | Linux Pratique n°74 www.linux-pratique.com système & réseau

Puis, pour déchiffrer le fichier, on saisira la commande : 1.5 GNU Privacy Guard (GPG) ~$ mcrypt -d fichier.nc GPG, implémentation GNU du standard OpenPGP, per- Enter passphrase: met d’échanger des messages signés et/ou chiffrés, ce qui File secret.nc was decrypted. garantit l’authenticité et/ou la confidentialité du message. GPG est basé sur un système de clés asymétriques. 1.3 bcrypt 1.5.1 Gestion des clés bcrypt (http://bcrypt.sourceforge.net/) est un utilitaire de On commence par générer une paire de clés : chiffrement basé sur l’algorithme Blowfish. Le fichier chiffré est protégé par une phrase de passe de 8 caractères mini- ~$ gpg --gen-key mum. Le programme est très simple à utiliser : S’ensuit une série de questions concernant le type de clés, ~$ bcrypt leur taille, la durée de validité, puis vous devez saisir votre nom, votre e-mail et enfin, la phrase de passe (le commen- On obtient alors un fichier d’extension .bfe, illisible. À savoir taire est optionnel). Une fois les clés générées, s’affichent à que contrairement à ses homologues, bcrypt supprime par l’écran la partie publique (pub), l’empreinte de la clé, l’iden- défaut automatiquement le fichier d’origine ; pour cela, il tifiant associé (uid) et la partie privée (sub). l’écrase avec des données aléatoires avant suppression, afin En cas de perte ou d’usurpation de votre clé privée, vous d’éviter une possible récupération des données. pourrez révoquer celle-ci à l’aide de la commande : La commande admet plusieurs options : -c pour ne pas compresser les fichiers avant le chiffrement, -r pour ne pas ~$ gpg --gen-revoke xxxxxxxx supprimer les fichiers d’origine, -sN pour spécifier le nombre Remplacer xxxxxxxx par les 8 caractères identifiant votre clé. de passes à effectuer lors de l’écrasement du fichier d’ori- gine avec les données aléatoires (3 par défaut). À savoir que pour consulter la liste des clés créées, il faut saisir : Pour déchiffrer le fichier : ~$ gpg --list-keys ~$ bcrypt fichier.bfe Les clés publiques et privées sont stockées respectivement Après avoir saisi la phrase de passe, le fichier est à nou- dans les fichiers ~/.gnupg/pubring.gpg et ~/.gnupg/ veau lisible. secring.gpg. Votre clé privée doit rester confidentielle, elle contient toutes les informations vous concernant. La 1.4 OpenSSL clé publique est celle que vous devez fournir à vos corres- Le projet OpenSSL est basé sur les bibliothèques de chif- pondants, afin qu’ils puissent vérifier la validité des informa- frement les plus utilisées dans le monde libre. Il implémente tions que vous leur envoyez. Pour transférer la clé sur un les protocoles réseau SSL (Secure Sockets Layer) et TLS serveur de clés : (Transport Layer Security), ainsi que les standards cryptogra- phiques qui y sont liés. On pourra l’utiliser pour chiffrer/déchif- ~$ gpg --keyserver --send-key frer des fichiers, générer des certificats, le calcul de signature Par exemple : de messages, gérer des mails chiffrés ou signés, etc. ~$ gpg --keyserver pgp.mit.edu --send-key 67705950 C’est le chiffrement de fichiers qui nous intéresse ici. Pour gpg: envoi de la clé 67705950 au serveur hkp pgp.mit.edu chiffrer un fichier : Pour supprimer une clé publique de votre trousseau : ~$ openssl enc -a -aes-256-cbc -in secret.txt -out protected.aes ~$ gpg --delete-keys enc correspond à la commande de chiffrement. L’option -a permet d’encoder les données en base64 après le chiffre- 1.5.2 Options de chiffrement ment ; les options -in et -out permettent respectivement de spécifier un fichier d’entrée et de sortie. On utilise ici l’algo- Selon le cas considéré dans cet article, nous souhaitons rithme AES 256 bits en mode CBC (Cipher Block Chaining) chiffrer un fichier pour notre propre usage. On utilisera donc (voir [2] pour plus d’informations sur ce mode) ; pour obtenir la commande : la liste des algorithmes pris en charge, saisissez simple- ~$ gpg --default-recipient-self --encrypt ment openssl enc -h. Comme précédemment, le fichier d’origine n’étant pas écrasé, on pensera à le supprimer si On obtient alors un fichier .gpg, dont le contenu est illisible nécessaire... (il est sous forme binaire). Seul le mot de passe de la clé Ensuite, l’option -d permet de déchiffrer les données en privée permettra de le déchiffrer. Le fichier d’origine, quant entrée : à lui, n’est pas supprimé. L’option --encrypt utilisée ici peut être abrégée en -e. ~$ openssl enc -d -a -aes-256-cbc -in protected.aes -out unencryted.txt L’option --recipient (ou -r) permet d’introduire l’identifiant

www.linux-pratique.com Linux Pratique n°74 | 23 système & réseau Protéger des données sensibles : quelques solutions rapides

de l’utilisateur à qui est destiné le fichier chiffré ; si elle n’est Puis, on crée le point de montage : pas utilisée, GnuPG vous demande de saisir cet identifiant, à moins d’utiliser l’option --default-recipient, qui comme ~$ mkdir ~/crypto son nom l’indique, utilisera la clé par défaut (la première clé Ceci fait, on crée le système de fichiers chiffré, puis on du trousseau, ou celle explicitement définie comme clé par monte le répertoire : défaut avec l’option --default-key). L’option --default- recipient-self permet de s’affranchir de l’étape de véri- ~$ encfs ~/.crypto-src/ ~/crypto/ fication de la validité de la clé. Création du nouveau volume encrypté. Pour déchiffrer le fichier .pgp : Veuillez choisir l’une des options suivantes : entrez «x» pour le mode de configuration expert, ~$ gpg --output fichier.txt --decrypt fichier.gpg entrez «p» pour le mode paranoïaque préconfiguré, toute autre entrée ou une ligne vide sélectionnera le mode normal. Sachez qu’il est possible de chiffrer un fichier pour plusieurs ?> personnes distinctes en procédant de la façon suivante : Configuration normale sélectionnée.

~$ gpg --recipient --recipient --encrypt Configuration terminée. Le système de fichier à créer a les propriétés suivantes : L’option --recipient prend en argument les identifiants Cryptage du système de fichiers : «ssl/aes» version 3:0:2 des clés publiques de chacune des personnes concernées. Encodage de fichier «nameio/block», version 3:0:1 Taille de clé : 192 bits Taille de bloc : 1024 octets Chaque fichier contient un en-tête de 8 octets avec des données IV 2. Chiffrer tout un répertoire uniques. Noms de fichier encodés à l’aide du mode de chaînage IV. 2.1 EncFS File holes passed through to ciphertext. EncFS (http://www.arg0.net/encfs) est un système de [...] fichiers chiffré basé sur FUSE, permettant de chiffrer vos fichiers de façon transparente. Le montage d’un système de Nouveau mot de passe : fichiers EncFS met en jeu 2 répertoires : le répertoire source (à chiffrer) et le point de montage. Chaque fichier du point de montage correspond à un fichier du répertoire source ; Note chacun est la version déchiffrée de son homologue dans le Attention ici, il est nécessaire d’utiliser les chemins répertoire source. La clé du chiffrement est stockée, chiffrée, abso- de chacun des répertoires, sans quoi encfs vous dans le répertoire source ; un mot de passe est nécessaire lus retournera une erreur. pour la déchiffrer. À savoir que les volumes EncFS n’occupent pas une taille fixe sur le disque ; la taille est variable selon la quantité de Vu que nous lançons cette commande pour la première fois, fichiers se trouvant dans le point de montage. De plus, les le programme nous demande plusieurs choses, notamment volumes EncFS doivent obligatoirement adopter le type de le mode de configuration à utiliser. En effet, plusieurs modes système de fichiers du répertoire source. Il est à noter égale- sont proposés, vous pouvez ainsi personnaliser plus ou ment que les outils de sauvegarde peuvent n’enregistrer que moins le chiffrement. Nous optons ici pour le mode normal. les fichiers qui ont été modifiés dans le répertoire source. Pour les montages ultérieurs, seul le mot de passe vous sera demandé. Attention : quiconque a accès au répertoire source pourra tout de même visualiser le nombre de fichiers qui s’y trou- Remarquez que suite à cette commande, un fichier XML vent, quelles sont leurs permissions, leur taille et leur date (.encfs6.xml) a été créé dans le répertoire à chiffrer. Ce de dernière modification. fichier comporte les caractéristiques du chiffrement, ainsi que la clé. Si ultérieurement vous souhaitez déplacer vos 2.1.1 Mise en pratique répertoires de données, n’oubliez pas de déplacer égale- ment ce fichier .encfs6.xml ! Pour commencer, on veillera à installer, si ce n’est déjà fait, le paquet encfs ou fuse-encfs, puis le paquet fuse ou On pourra constater que le montage est bien effectif via : fuse-utils (le nom des paquets variant selon la distribu- tion utilisée). ~$ mount | grep crypto encfs on /home/toto/crypto type fuse.encfs La première étape consiste à créer les répertoires néces- (rw,nosuid,nodev,relatime,user_id=500,group_id=500,default_permissions) saires ; dans notre exemple, ils se trouveront tous deux dans le répertoire personnel de l’utilisateur principal. On crée tout Vous pouvez alors créer autant de fichiers et de répertoires d’abord le répertoire à chiffrer : que nécessaire dans le point de montage, puis constater qu’à chacun correspond l’équivalent chiffré dans le réper- ~$ mkdir ~/.crypto-src toire source :

24 | Linux Pratique n°74 www.linux-pratique.com système & réseau TIPS ~$ ls -l crypto/ drwxrwxr-x. 2 toto toto 4096 4 sept. 15:17 secret1 -rw-rw-r--. 1 toto toto 14 4 sept. 15:17 secret2 ~$ ls -l .crypto-src/ Simplifiez votre total 8 drwxrwxr-x. 2 toto toto 4096 4 sept. 15:17 LZVMZc8C0ynd0LkTMJB1t98r installation : -rw-rw-r--. 1 toto toto 22 4 sept. 15:17 n8PKVZQO33pqt7-,J1YxmH90

Le système de fichiers pourra être démonté via : clonez vos ~$ fusermount -u crypto applications ! Une fois démonté, le point de montage apparaît vide et le contenu du répertoire source est illisible bien entendu. Vous installez votre distribution favorite À savoir que vous pouvez obtenir des informations sur le répertoire chiffré via la sur un nouveau PC ? Vous avez pour commande : habitude d’ajouter toujours le même lot d’applications après chaque instal- ~$ encfsctl info .crypto-src/ lation ? Alors simplifiez-vous la vie et Configuration version 6; crée par EncFS 1.7.4 (version 20100713) utilisez votre gestionnaire de paquets Cryptage du système de fichiers : «ssl/aes» version 3:0:0 (utilisation de 3:0:2) pour automatiser tout ça... Il faudra bien Encodage de fichier «nameio/block», version 3:0:0 (utilisation de 3:0:1) Taille de clé : 192 bits entendu disposer de sur les Using PBKDF2, with 107215 iterations 2 machines. Salt Size: 160 bits Sur la première machine, on ouvre Taille de bloc : 1024 octets Chaque fichier contient un en-tête de 8 octets avec des données IV uniques. Synaptic et on se rend dans Fichier > Noms de fichier encodés à l’aide du mode de chaînage IV. Enregistrer les sélections. Vous sélec- File holes passed through to ciphertext. tionnez alors l’emplacement de sau- vegarde de votre choix, puis cochez L’outil encfsctl permet également de modifier le mot de passe, comme suit : la case Enregistrer l’état complet, pas ~$ encfsctl passwd .crypto-src/ seulement les changements au bas Veuillez entrer le mot de passe Encfs actuel de la fenêtre de dialogue. La liste est Mot de passe : stockée dans un simple fichier texte Veuillez entrer le nouveau mot de passe Encfs que vous n’aurez qu’à transférer sur la Nouveau mot de passe : Vérifier le mot de passe : nouvelle machine. Clé de volume mise à jour avec succès. Si vous utilisez Ubuntu, sachez que les dépôts PPA ne sont pas pris en On notera pour finir qu’il existe un utilitaire graphique permettant de gérer aisément compte par cette procédure. Pour les les systèmes de fichiers chiffrés avec EncFS : il s’agit de Cryptkeeper (http://tom. récupérer également, copiez le réper- noflag.org.uk/cryptkeeper.html), que l’on trouvera dans les dépôts de la plupart /etc/apt/sources.list.d/ des distributions. toire sur un support de stockage amovible 2.2 dm-crypt/LUKS par exemple, afin de le recopier sur la nouvelle machine. De nombreuses distributions suggèrent aujourd’hui, lors de l’installation, de chiffrer tout ou partie du disque dur, via dm-crypt/LUKS. Sur cette dernière, ouvrez Synaptic puis rendez-vous dans Fichier > Lire les Note sélections. Recherchez le fichier enre- gistré plus haut, ainsi que la liste des Ce chiffrement via dm-crypt/LUKS se fait au niveau du système de fichiers dans son ensemble, au niveau de la partition. On veillera à ne pas l’assimiler au mode PPA, vérifiez rapidement la liste qui de chiffrement via eCryptfs, proposé parfois pour votre répertoire personnel, qui apparaît dans la fenêtre de dialogue, puis lui, se fait au niveau fichier. De ce fait, même si le contenu des fichiers n’est pas cliquez sur Ajouter à la sélection. lisible, certaines informations demeurent accessibles : leur nombre, leur taille, la Toutes vos applications préférées, y date de dernière modification, etc. En outre, via eCryptfs, la protection des données compris celles installées via des PPA, dépend du mot de passe de l’utilisateur : celui-ci devra être suffisamment robuste se trouvent à présent référencées dans pour contrer une attaque ! Le chiffrement via dm-crypt est protégé par une phrase Synaptic ; il ne vous reste plus qu’à cli- de passe, en général beaucoup moins évidente à trouver... quer sur Appliquer pour tout installer sur votre nouvelle machine ! Concrètement, ceci implique qu’il faudra saisir une phrase de passe au démar- rage pour accéder à tout ou partie des partitions de votre système. Cette phrase de passe pourra être modifiée si besoin, à l’aide de la commande cryptsetup.

www.linux-pratique.com Linux Pratique n°74 | 25 système & réseau Protéger des données sensibles : quelques solutions rapides

Figure 2

Figure 1

On commencera par lister les informations liées à la partition concernée avec : possibilité de cacher ou non le volume créé (s’il est caché, il ne sera pas appa- ~# cryptsetup luksDump /dev/disk/by-path/pci-0000:00:0f.0-scsi-0:0:0:0-part2 rent dans votre navigateur de fichiers). On repère ainsi le slot (marqué ENABLED) qui est utilisé pour stocker la phrase de Indiquez ensuite l’emplacement du passe saisie lors de l’installation du système et la création du disque chiffré. On fichier à chiffrer (qui servira de conte- ajoute alors une nouvelle phrase de passe : neur pour votre volume TrueCrypt). Sélectionnez ensuite un algorithme de ~# cryptsetup luksAddKey /dev/disk/by-path/pci-0000:00:0f.0-scsi-0:0:0:0-part2 chiffrement et la taille souhaitée pour On saisit tout d’abord la phrase de passe existante pour débloquer le périphérique, votre conteneur. Et enfin, sélectionnez puis on entre deux fois la nouvelle phrase. On pourra vérifier le bon déroulement le système de fichiers souhaité (parmi de l’opération en exécutant une nouvelle fois la commande précédente. À ce stade, FAT et Ext2/3/4). Votre volume chiffré deux slots sont utilisés ; les 2 phrases de passe fonctionnent. Pour supprimer la est créé ! phrase de passe précédente, on utilisera : Ensuite, pour mettre vos données en ~# cryptsetup luksRemoveKey /dev/disk/by-path/pci-0000:00:0f.0-scsi-0:0:0:0-part2 sécurité, dans la fenêtre principale, Entrez la phrase secrète LUKS à effacer : effectuez un clic droit sur le Slot 1, puis sélectionnez Select File and Mount (Fig. 1). Choisissez alors le fichier pré- 2.3 TrueCrypt cédemment créé ; une fois la phrase TrueCrypt (http://www.truecrypt.org/) permet de chiffrer tout ou partie d’un disque de passe correctement saisie (Fig. 2), dur, d’une clé USB, d’un système d’exploitation... Il fonctionne sous Linux, Mac OS le fichier est alors monté dans /media/ X et Windows ; son code source est disponible, mais ce n’est pas un logiciel libre. truecrypt1. Vous n’avez plus qu’à Le principe : TrueCrypt permet de créer un disque virtuel chiffré contenu dans glisser dans ce dernier toutes les infor- un fichier et de le monter comme un disque physique réel. Ainsi, tout ce qui sera mations et fichiers sensibles à proté- stocké dans un volume TrueCrypt sera entièrement chiffré. ger ! On cliquera ultérieurement sur Sur le site du projet, vous pouvez récupérer une archive contenant un fichier exécutable Dismount pour démonter le volume. pour votre système d’exploitation. L’exécution de ce fichier permet de lancer l’installa- tion de TrueCrypt, en ayant pris soin d’installer les pré-requis au préalable : les outils et bibliothèques FUSE (paquet fuse-utils), les device mapper tools (paquet dmsetup). Références Notons au passage que les packs de langue ne sont pas (encore) disponibles pour Linux, [1] Algorithmes et protocoles : vous devrez donc vous contenter d’une interface en anglais. Si vous souhaitez désins- http://fr.wikipedia.org/wiki/ taller TrueCrypt, il faudra exécuter le script truecrypt-uninstall.sh. Cryptographie#Algorithmes_et_ protocoles On commencera par créer un nouveau volume (Create Volume) ; l’assistant apparaît alors à l’écran. Il vous propose de créer au choix un répertoire chiffré sur votre disque [2] Les modes d’opération : dur ou bien une partition chiffrée (s’il vous reste de l’espace disque libre, ou bien http://fr.wikipedia.org/wiki/ sur un périphérique de stockage externe, du type clé USB). Ceci fait, vous avez la Mode_d’opération_(cryptographie)

26 | Linux Pratique n°74 www.linux-pratique.com Profitez de nos offres systèd’abonnementme & résea spécialesu Abonnez-vous ! disponibles au verso ! Économisez plus de *

*20 Sur le prix de vente unitaire France Métropolitaine % Numéros de

Téléphonez au 03 67 10 00 20 ou commandez Linux par le Web Pratique Les 3 bonnes raisons de vous abonner : 6 par ABONNEMENT :  Ne manquez plus aucun numéro.  Recevez Linux Pratique dès sa parution chez vous ou dans votre entreprise. €*  É conomisez 9,00 €/an ! 4 façons de commander facilement : 30 au lieu de 39,00 €* en kiosque  par courrier postal en nous renvoyant le bon ci-dessous Économie : 9,00 €*  par le Web, sur www.ed-diamond.com  

par téléphone, entre 9h-12h et 14h-18h au 03 67 10 00 20 *OFFRE VALABLE UNIQUEMENT EN FRANCE MÉTROPOLITAINE

 par fax au 03 67 10 00 21 Pour les tarifs hors France Métropolitaine, consultez notre site : www.ed-diamond.com 

Bon d’abonnement à découper et à renvoyer à l’adresse ci-dessous Tournez svp pour découvrir toutes les offres d’abonnement >>

Voici mes coordonnées postales : Société : Nom : Prénom : Édité par Les éditions Diamond Adresse : Service des Abonnements B.P. 20142 - 67603 Sélestat Cedex Tél. : + 33 (0) 3 67 10 00 20 Code Postal : Fax : + 33 (0) 3 67 10 00 21 Ville : Pays : Vos remarques : Téléphone : e-mail :

En envoyant ce bon de commande, je reconnais avoir pris connaissance des conditions générales de vente des éditions Diamond Tournez svp pour découvrir www.linux-pratique.com Linux Pratique n°74 | 27 à l’adresse internet suivante : www.ed-diamond.com/cgv et reconnais que ces conditions de vente me sont opposables. toutes les offres d’abonnement système & réseau

28 | Linux Pratique n°74 www.linux-pratique.com système & réseau

Gérez vos machines virtuelles à distance ! Fleur Brosseau Tout est dit dans le titre : le projet PhpVirtualBox a été créé dans le but de proposer une interface web de gestion des machines virtuelles VirtualBox. À base d’Ajax et développée en PHP, cette interface moderne - identique à l’interface utilisateur de VirtualBox - permet d’accéder et de contrôler à distance vos différentes machines virtuelles. Cette application trouvera par exemple tout son intérêt si vos VM se trouvent sur un même serveur et que plusieurs utilisateurs s’y connectent...

D’autres paramètres sont disponibles, ils sont réperto- 1. Pré-requis riés dans le wiki du projet ( http://code.google.com/p/ 1.1 Compatibilité et dépendances phpvirtualbox/wiki/vboxwebServiceConfigLinux). PhpVirtualBox (http://code.google.com/p/phpvirtualbox/) Une fois le fichier /etc/default/ renseigné, est compatible avec les versions 3.2.x et supérieures de on démarre le service via : VirtualBox, ainsi qu’avec la plupart des navigateurs web récents. Son fonctionnement requiert bien entendu un ser- sudo service vboxweb-service start veur web supportant PHP ≥ 5.1.0. Il peut être installé sur un Les utilisateurs de SELinux, devront ajouter une règle sup- système Linux, FreeBSD, Solaris, Mac OS X et Windows. plémentaire pour vboxwebsrv ; cette règle permet de Rappelons que le paquet bridge-utils est par ailleurs rendre le port du webservice de VirtualBox (18083) acces- nécessaire pour créer des interfaces réseau virtuelles à sible à un service exécuté dans un contexte HTTP (comme associer à des interfaces réseau physiques. Apache) : Enfin, le service vboxweb-service (issu du paquet virtualb ox) doit être configuré pour être lancé à semanage port -a -t http_port_t -p tcp 18083 chaque démarrage. Il s’agit d’un script /etc/init.d/ (Rappelons au passage que la commande semanage est vboxweb-service créé automatiquement à l’installation issue du paquet policycoreutils). de VirtualBox sur votre système ; il peut être utilisé pour démarrer et stopper /usr/bin/vboxwebsrv. Sous Debian Assurez-vous enfin de faire partie du groupe vboxusers. et Ubuntu, on lancera la commande : Dans le cas contraire :

sudo update-rc.d vboxweb-service defaults sudo adduser toto vboxusers

1.2 Configuration pré-installation 2. Installation Le fichier /etc/default/virtualbox (à créer s’il n’existe pas) doit contenir au minimum la ligne suivante : Passons à présent à l’installation de l’application. On com- mence par récupérer l’archive du projet sur http://code. VBOXWEB_USER=toto google.com/p/phpvirtualbox/downloads/ (version 4.1-7 lors de la rédaction de l’article). On décompresse l’archive Cette variable désigne l’utilisateur qui exécute les machines obtenue, puis on déplace le répertoire obtenu à la racine du virtuelles VirtualBox sur le système ; si plusieurs utilisateurs serveur web (typiquement /var/www/). sont concernés, vous devez n’en choisir qu’un. De plus, si votre serveur web (où tourne PhpVirtualBox) n’est sudo cp -R phpvirtualbox-4.1-7 /var/www/ vboxwebsrv pas exécuté sur le même hôte que , il vous fau- Ensuite, on édite le fichier config.php-example contenu dra également définir une seconde variable : dans le répertoire. On y renseigne le nom d’utilisateur appar- vboxusers VBOXWEB_HOST=nom_de_lhote tenant au groupe et son mot de passe (dans les premières lignes du fichier) :

www.linux-pratique.com Linux Pratique n°74 | 29 système & réseau Gérez vos machines virtuelles à distance !

Figure 1

Figure 2

L’interface est complètement identique /* Username / Password for system 3. Gérer ses VM via user that runs VirtualBox */ à celle de VirtualBox. Vous dispose- var $username = ‘toto’; une interface web rez du même assistant pour la créa- var $password = ‘motdepasse’; tion d’une nouvelle machine (Fig. 2), Enfin, on ouvre un navigateur web, ainsi que des mêmes options de para- Comprenez que ces informations de puis on saisit l’IP correspondant au métrage des machines. connexion doivent être identiques à serveur web (dans notre cas, local- À savoir que si jamais vous modi- celles que vous utilisez pour ouvrir host) : http://localhost/phpvirtualbox/. une session utilisateur sur votre Une boîte de dialogue vous invite à fiez les paramètres d’une machine machine. Ceci fait, on renomme le renseigner le login et le mot de passe ; virtuelle en dehors de l’interface de fichier config.php-example en à la première connexion il s’agit de : PhpVirtualBox, il ne faut pas oublier de rafraîchir l’affichage via l’option config.php. admin/admin. prévue à cet effet (menu Machine > sudo mv config.php-example config.php L’interface de PhpVirtualBox apparaît Actualiser) dans l’interface principale, dans le navigateur (Fig. 1). On peut que l’on retrouve également dans le commencer par se rendre dans les gestionnaire de médias. Note préférences de l’application (menu Notez que l’application recherche À noter qu’il est conseillé de faire File > Preferences) pour passer la lan- automatiquement la présence du tourner PhpVirtualBox sur le ser- gue de l’interface en français (section répertoire ~/VirtualBox VMs/ veur de virtualisation, car le mot de Language). On peut également pré- qui contiendrait les machines vir- passe de l’utilisateur qui administre ciser la langue directement dans le tuelles ; s’il existe et si des machines les machines virtuelles transite en fichier de configuration : virtuelles sont déjà créées, elles clair du serveur web jusqu’à l’hôte sont listées dans le panneau latéral de VirtualBox ! var $language = ‘fr’; gauche. Pour modifier le répertoire

Figure 3 Figure 4

30 | Linux Pratique n°74 www.linux-pratique.com système & réseau

Figure 6

Figure 5

par défaut des machines, rendez-vous à distance (à récupérer à l’adresse nisation temporelle entre l’hôte de dans le menu Fichier > Paramètres > https://www.virtualbox.org/wiki/ VirtualBox et les machines virtuelles Général. Downloads). Il est également possible (Fig. 6) ; d’utiliser n’importe quel client RDP N’oubliez pas en outre de modi- • toujours dans la section Système, ( - voir la figure 4 -, Vinagre, fier immédiatement le mot de passe vous découvrirez quelques para- rdesktop, ...), le port étant à définir de connexion via le menu Fichier > mètres supplémentaires dans l’on- dans les paramètres d’affichage de Changer mot de passe. Au passage, glet Accélération ; chaque VM (onglet Bureau à distance) si vous souhaitez désactiver le sys- • la possibilité de saisir une adresse IP (Fig. 5). Par exemple, on pourra saisir tème d’authentification, ajoutez sim- dans la configuration de l’affichage dans une console externe : plement la ligne suivante au fichier à distance ; phpvirtualbox/config.php : rdesktop -f 127.0.0.1:3389 • des paramètres supplémentaires pour configurer le NAT ; var $noAuth = true; L’option -f permet de passer en • des boutons supplémentaires dans mode plein écran. Le raccourci le gestionnaire de médias virtuels [Ctrl]+[Alt]+[Entrée] permet de sortir Note (New, Add et Add iSCSI). du plein écran. Vous avez oublié votre mot de Vous pouvez même personnaliser passe ? Dans ce cas, vous pou- l’icône de chaque machine virtuelle ! vez réinitialiser les paramètres de 4. Fonctionnalités Pour ce faire, ajoutez la directive sui- connexion en renommant le fichier vante dans le fichier config.php : phpvirtualbox/recovery.php avancées en phpvirtualbox/recovery. L’intérêt de PhpVirtualBox réside éga- var $enableCustomIcons = true; php-diasbled ; puis, vous pour- lement dans quelques fonctionnalités rez lancer PhpVirtualBox et vous supplémentaires que l’on ne retrouve Ceci fait, il est possible d’éditer l’icône connecter avec l’identifiant et le pas dans l’interface classique de d’une machine virtuelle parmi les para- mot de passe par défaut, à savoir VirtualBox. Pour les activer, on ajou- mètres à définir (section Général). L’URI admin/admin. tera dans le fichier config.php : de l’icône peut être absolue ou relative. La configuration des utilisateurs var $enableAdvancedConfig = true; 5. En cas de mise à s’effectue dans le menu Fichier > (Cette ligne est d’ailleurs présente par Paramètres > Utilisateurs. À savoir jour... défaut dans le fichier, il ne reste qu’à que les utilisateurs qui ont le statut la décommenter). Si des mises à jour de PhpVirtualBox sont d’« admin » ont accès à la section disponibles, copiez simplement les nou- Users et de ce fait, pourront ajouter, Voici la liste des fonctionnalités veaux fichiers de l’application au même modifier ou supprimer des utilisateurs. apportées : emplacement que l’installation existante ; Une fois lancées, toutes les machines • un onglet Input, dans la section les précédents fichiers peuvent être écra- virtuelles sont accessibles via le bou- Général des paramètres ; il permet sés sans problème. On n’oubliera pas ton Console (Fig. 3) ; la fenêtre de de définir le type de clavier et de sou- d’éditer le nouveau fichier de configu- visualisation peut même être déta- ris/tablette utilisé (PS/2 ou USB) ; ration pour y renseigner les paramètres chée du reste de l’interface si besoin. • un timer haute précision (HPET) nécessaires (nom d’utilisateur et mot de Attention, il est nécessaire d’avoir ins- fait son apparition dans la sec- passe, langue de l’interface, etc.) et éga- tallé le pack d’extension d’Oracle au tion Système, ainsi qu’une option lement pour activer d’éventuelles nou- préalable pour bénéficier du bureau permettant de désactiver la synchro- velles fonctionnalités.

www.linux-pratique.com Linux Pratique n°74 | 31 système & réseau

Système de fichiers sous Linux et déploiement de Btrfs Mejri Issam Lorsque vous envisagez d’installer une distribution GNU/Linux, l’installateur commence classiquement par la création de deux ou de plusieurs partitions, ainsi que d’un système de fichiers qui doit obligatoirement être inscrit sur ces partitions. Le choix du système est parfois automatique, mais cela n’empêche pas que l’on puisse en choisir un qui réponde à ses besoins...

Un système de fichiers est trans- fichiers plus performant. C’est ce qui • Minix : le premier système de parent pour l’utilisateur, mais ce qui a poussé la communauté Linux, en fichiers de Linux. Bien que limité, il importe le plus c’est de comprendre la 1992, à créer une interface, le VFS est pratique pour les systèmes de manière la plus adéquate de le confi- (Virtual File System), permettant au fichiers sur disquette ou en RAM ; gurer, afin d’avoir un système stable noyau Linux de s’adapter à n’importe on peut cependant le considérer et performant. quel type de système de fichiers. comme obsolète. Au système de fichiers Minix succéda • Ext : la version améliorée de Minix ; 1. Revenons un Ext/Ext2. Son développeur princi- il est aujourd’hui également obsolète pal est Rémy Card (voir interview et est remplacé par Ext2. peu en arrière... http://www.april.org/groupes/ entretiens/remy_card.html), un • Ext2 : le premier système de fichiers Les premières versions du noyau développeur français connu pour ses développé spécifiquement pour Linux ont été basées sur le système contributions au noyau Linux. Ext2 est Linux, d’un niveau de production de fichiers Minix. Minix est un sys- le système de fichiers révolutionnaire et aux normes Unix. Il est rapide et tème d’exploitation Unix créé en 1987 qui s’intégra au noyau Linux en 1993. nécessite moins d’écritures que les par le professeur Andrew Tanenbaum autres, il occasionne donc moins de l’université Vrijie d’Amsterdam. Ce En 1999, Ext2 a été à son tour amé- d’usure des supports de stockage, dernier utilisait ce micro-noyau pour lioré avec Ext3 (une version journa- notamment les disques SSD, les enseigner la théorie des systèmes lisée d’Ext2), introduit dans le noyau clés USB ou les cartes mémoire. d’exploitation à ses étudiants. Il publia en 2001. Les fichiers peuvent avoir jusqu’à le code source de Minix dans son une taille de 2 To (2048 Go), tandis fameux ouvrage « : 2. Les principaux qu’une partition peut atteindre 32 To, Design and Implementation ». voire 128 To, selon la taille des blocs Son adversaire, le finlandais Linus types de systèmes et l’architecture. Torvalds, lut avec grand intérêt le • Ext3 : le successeur de Ext2 depuis livre de Tanenbaum et commença de fichiers 1999. Il est journalisé et surtout, il en s’inspirant de Minix à écrire from L’interface VFS du noyau fait de Linux est entièrement compatible avec scratch un nouveau noyau plus connu un système d’exploitation capable Ext2. Le journal n’est autre qu’une aujourd’hui sous le nom de Linux. de supporter n’importe quel système extension de Ext2. Il est donc pos- de fichiers, pour peu que la société Minix était loin d’être parfait, il lui man- sible d’utiliser un système de fichiers qui l’a créé diffuse sa technologie en quait plusieurs fonctionnalités, ce qui Ext3 comme étant Ext2, avec les open source et développe le module le rendait inutilisable sur des ser- mêmes commandes, les mêmes adéquat. veurs de production ou des machines manipulations. Il est possible de à forte charge. Il était alors indispen- Voici une liste non exhaustive des sys- transformer en quelques secondes sable de migrer vers un système de tèmes de fichiers : un système Ext2 en Ext3, et vice

32 | Linux Pratique n°74 www.linux-pratique.com système & réseau

versa. C’est l’un des systèmes de loppé par un ensemble de compa- que les données ne sont pas épar- fichiers de choix pour Linux, et le gnies, principalement Oracle. C’est pillées sur des blocs physiquement plus utilisé pour sa souplesse. ce système de fichiers que nous éloignés sur le système de fichiers ; allons vous faire découvrir dans cet on améliore ainsi les opérations de • Ext4 : le successeur de Ext3, intro- article. lecture/écriture. duit en 2006. Il est compatible avec son prédécesseur et incarne la toute Autre fonctionnalité révolutionnaire : première ébauche d’un système de la notion de copy-on-write. Si des fichiers « nouvelle génération » : il 3. Le système données sont écrites sur un bloc de permet notamment l’allocation par mémoire, alors ce dernier sera copié extent, permettant de minimiser la de fichiers Btrfs à un autre endroit du disque dur et fragmentation (voir plus loin). les nouvelles données seront enre- (Butter FS) gistrées sur la copie au lieu de l’être • ReiserFS : c’est le premier système sur l’original. Ainsi, si un fichier est de fichiers journalisé à être intégré Le système de fichiers Btrfs, déve- loppé principalement par la firme corrompu accidentellement, Btrfs à Linux, avant même Ext3. Sa force vous permet de récupérer une copie réside, outre dans son journal, dans Oracle, ainsi que par plusieurs contri- butions provenant de Red Hat, Intel exacte de ce dernier d’un autre l’organisation indexée des entrées emplacement ! Dans le jargon Btrfs, des répertoires et la manipulation et SUSE, a été créé pour pallier les limites des autres systèmes de fichiers on appelle cette technique le scrub- des fichiers de petite taille. Ses per- bing (nettoyage), un service permet- et pour répondre aux besoins des formances sont exceptionnelles en tant de traquer les corruptions au administrateurs, qui n’ont pas trouvé présence de milliers de fichiers, de sein du système de fichiers. faible à moyen volume ; il devient leur bonheur avec Ext3, ReiserFS... La notion de sous-volumes (subvo- plus lent sur des gros fichiers. Il est Les dernières versions du noyau Linux lumes) dans Btrfs permet d’avoir au redimensionnable à chaud. Malgré intègrent Btrfs, vous pouvez donc l’uti- sein du système de fichiers un arbre ses grandes qualités, ReiserFS liser nativement lors de la création de séparé contenant des répertoires est moins utilisé pour diverses rai- vos partitions pour accueillir vos don- et des fichiers, donnant la possibi- sons, la principale étant l’impos- nées personnelles, ou encore monter lité d’avoir diverses arborescences sibilité de convertir un système de la partition racine du système pour simultanément et donc une indé- fichiers Ext2/Ext3 en ReiserFS et qu’elle utilise Btrfs au lieu du « vieux » pendance totale par rapport au sys- vice versa. Ext3 ! tème principal. On peut ainsi créer • XFS : XFS est le plus ancien des La question qui vous vient à l’esprit un sous-volume et le monter ensuite systèmes de fichiers journali- en lisant ces lignes est peut-être la pour l’utiliser pour des besoins sés sous Unix. Créé par Silicon suivante : mais qu’est-ce que ce sys- particuliers. Graphics en 1993, il a été porté sous tème de fichiers a apporté de nou- La technique des sous-volumes Linux en 2001. Outre des capaci- veau par rapport à ses ancêtres ? La tés de stockage quasi illimitées (16 mène à une fonctionnalité intéres- réponse se trouve dans le paragraphe sante, longtemps attendue par les exbibytes !), il dispose d’un système suivant... de journalisation très performant et administrateurs paranoïaques : celle de mécanismes avancés comme la des instantanés ou snapshots en défragmentation en ligne, la possibi- 3.1 Fiche technique anglais. Un instantané n’est autre lité d’effectuer des snapshots (copie de Btrfs qu’une image du système de fichiers instantanée du système de fichiers à un instant donné. Si vous envisa- Je ne m’appesantirai pas sur les à un instant donné), le redimension- gez d’effectuer une opération au détails techniques, mais j’insisterai nement à chaud, la réservation des niveau de votre système, comme sur les principales fonctionnalités qui bandes passantes pour les entrées une mise à jour ou une migration peuvent vous servir au quotidien. et sorties... logicielle ou même un upgrade de Btrfs est basé sur la notion d’extent. votre distribution Linux, Btrfs vous • JFS : un système de fichiers journa- Un extent est une zone de stockage donne la possibilité de sauvegarder lisé issu de la technologie IBM pour contiguë, attribuée d’avance lors de votre système à l’aide des snapshots AIX. Il est disponible sous licence la création d’un fichier sur le système et de revenir en arrière (restauration) GPL. de fichiers. La taille de cette zone peut dans le cas où les opérations effec- tuées échouent et que votre système • Btrfs : ce système de fichiers, pro- atteindre des centaines de Mo (un noncé ButterFS, sera sûrement le nombre entier de blocs). Lors d’une devient instable. futur système de fichiers intégré nouvelle écriture sur le fichier (mise La disponibilité des données et l’évo- nativement dans la plupart des dis- à jour par exemple), les données sont lution des performances d’entrée/sor- tributions Linux les plus courantes. ajoutées dans l’extent. Cette fonc- tie sur disque sont aussi les points Ce système de fichiers, basé sur la tionnalité permet d’éliminer le disper- forts de Btrfs. En effet, vous pou- notion de copy-on-write, est déve- sement des fichiers et de s’assurer vez utiliser le RAID 1, ou RAID 0,

www.linux-pratique.com Linux Pratique n°74 | 33 système & réseau Système de fichiers sous Linux et déploiement de Btrfs

ou les deux à la fois pour le stockage de vos données et pour la description de celles-ci (métadonnées). La créa- # btrfs filesystem df /mnt/mybtrfs/ Data: total=8.00MiB, used=0.00 tion d’une partition Btrfs utilisant des disques en miroir avec System, DUP: total=8.00MiB, used=4.00KiB plus de deux disques SCSI par exemple devient alors un System: total=4.00MiB, used=0.00 jeu d’enfant. Metadata, DUP: total=61.56MiB, used=24.00KiB La conversion d’un type de système de fichiers vers Btrfs se Metadata: total=8.00MiB, used=0.00 fait en une simple commande ; on peut alors convertir notre partition montée sur /home de type Ext4 vers Btrfs et béné- ficier immédiatement des avantages de Btrfs ! 3.2.2 RAID 1 au niveau des données et métadonnées L’ajout d’un ou de plusieurs disque(s) à chaud, ainsi que le redimensionnement, sont également pris en charge par Pour assurer la disponibilité de vos données, en cas de perte Btrfs. Il est en outre possible de compresser les données d’un disque par exemple, Btrfs propose en natif l’utilisation lors de leur enregistrement sur le disque, ce qui permet de la technologie RAID (voir Linux Pratique n°70) ; si nous /dev/loop1 d’économiser de l’espace disque. disposons de deux disques par exemple ( et /dev/loop2), une seule commande réalise tout ceci après le démontage de /dev/loop1 : 3.2 ButterFS par la pratique Passons maintenant à la pratique, afin de vous permettre mkfs.btrfs -L BTRFS -m raid1 -d raid1 /dev/loop[1,2] de mieux assimiler ces nouvelles fonctionnalités. Nous SMALL VOLUME: forcing mixed metadata/data groups utiliserons ici la distribution openSUSE 12.1 (kernel 3.1), adding device /dev/loop2 id 2 installée avec la racine (/) et une partition /home de fs created label BTRFS on /dev/loop1 nodesize 4096 leafsize 4096 sectorsize 4096 size 1.59GiB type Btrfs. Btrfs v0.19+20120406 Pour manipuler le système de fichiers, il vaut mieux ne pas se servir des partitions existantes, qui risqueraient de deve- On constate que le système de fichiers est créé sur le péri- nir hors-service ; je vais donc manipuler les loop devices, qui phérique /dev/loop1 et la redondance de données et des permettent de créer des partitions à l’aide de fichiers dont métadonnées se trouve sur le périphérique possédant l’id les blocs sont vides : 2, soit /dev/loop2. A cet effet, c’est /dev/loop1 qu’on utilisera lors de l’opération du montage : # dd if=/dev/zero of=/newFs bs=4096k count=1000 # mount /dev/loop1 /mnt/mybtrfs/ On crée ensuite une partition /dev/loop1 : Vérifions si notre partition est bien montée et si le RAID est # losetup /dev/loop1 /newFs effectivement pris en charge :

# btrfs filesystem df /mnt/mybtrfs/ 3.2.1 Premier système de fichiers Btrfs Data, RAID1: total=81.56MiB, used=0.00 Data: total=8.00MiB, used=0.00 # mkfs.btrfs -L BTRFS /dev/loop1 System, RAID1: total=8.00MiB, used=4.00KiB fs created label BTRFS on /dev/loop1 System: total=4.00MiB, used=0.00 nodesize 4096 leafsize 4096 sectorsize 4096 size 1.20GiB Metadata, RAID1: total=81.56MiB, used=24.00KiB Btrfs v0.19+20120406 Metadata: total=8.00MiB, used=0.00

Nous avons créé un système de fichiers de type Btrfs sur le Notre objectif est atteint et nos données, ainsi que nos méta- disque /dev/loop1 labellisé avec l’option -L. Procédons à données, sont à l’abri (ou presque). l’opération de montage : 3.2.3 Revenir au bon vieux temps... # mount /dev/loop1 /mnt/mybtrfs/ Une fonctionnalité intéressante de Btrfs est la possibilité de revenir en arrière (rollback) lors de la conversion d’un sys- Vérifions la réussite de l’opération : tème de fichiers Ext3/4 en Btrfs.

# df -h -T /dev/loop1 Ma partition /home est de type Btrfs ; pour tester la conver- Filesystem Type Size Used Avail Use% Mounted on sion Btrfs, j’ai créé une partition /dev/sdb1 à partir d’un /dev/loop1 btrfs 1.3G 56K 1.1G 1% /mnt/mybtrfs disque /dev/sdb, puis j’ai formaté /dev/sdb1 en Ext4 pour essayer de basculer ensuite vers Btrfs. Voici les Nous disposons maintenant d’une partition montée au niveau étapes : de l’arborescence /mnt/mybtrfs et de type Btrfs comme # mkfs -t ext4 /dev/sdb1 prévu. Pour plus d’informations sur /mnt/mybtrfs :

34 | Linux Pratique n°74 www.linux-pratique.com système & réseau

On sauvegarde la partition /home : Puis éditons le fichier /etc/fstab :

# tar cvfP home.tar /home/ ## Nouvelle partition /home UUID=807751b6-97d6-413c-8b89-f9b3d5673c29 /home btrfs w,relatime Montage de /home sur la nouvelle partition : Redémarrez et assurez-vous que l’utilisateur accède à son # mount /dev/sdb1 /home/ répertoire personnel. Vérification : Lors de la conversion, Btrfs crée automatiquement une sau- vegarde (snapshot) de /home dans un sous-volume avec # df -h -T /home l’ancien Ext4, ce qui permet de revenir en arrière en cas de Filesystem Type Size Used Avail Use% Mounted on besoin. /dev/sdb1 ext4 7.9G 485M 7.1G 7% /home

Restauration du contenu de /home : # btrfs subvol list /home/ ID 256 top level 5 path ext2_saved # tar xvfP home.tar /home/ # ls -l /home total 3 Redémarrez et connectez-vous en tant qu’utilisateur ordi- dr-xr-xr-x 1 root root 10 Jun 4 10:32 ext2_saved naire, puis assurez-vous que l’utilisateur accède à son réper- drwxr-xr-x 1 999 users 624 May 30 10:55 linux~ toire personnel. drwxr-xr-x 1 mejri users 668 Jun 4 10:14 mejri Maintenant, nous allons convertir notre partition Ext4 en Btrfs : La souplesse de Btrfs vous permet également de restaurer l’ancien Ext4 : # umount /dev/sdb1 # btrfs-convert /dev/sdb1 # btrfs-convert -r /dev/sdb1 creating btrfs metadata. rollback complete. creating ext2fs image file. cleaning up system chunk. Puis on remonte Ext4 : conversion complete. # mount -t ext4 /dev/sdb1 /home/ L’illustration suivante, issue du wiki du projet Btrfs, illustre la conversion de Ext3/4 vers Btrfs. Conclusion Un seul article n’est pas suffisant pour parcourir toutes les fonctionnalités de Btrfs, mais en installant ce système de fichiers sur votre machine et en exploitant la page de manuel de Btrfs (man btrfs) vous découvrirez d’autres secrets de ce nouveau-né, comme la compression des données, l’ajout de disques durs à la manière de LVM (Logical Volume Manager), ou encore le redimensionnement à chaud du sys- tème de fichiers. Bonne découverte !

À cette étape, nous rattachons /home à /dev/sdb1 qui dispose d’un ButterFS : Liens # mount -t btrfs /dev/sdb1 /home # df -h -T /home/ Page principale du projet Btrfs d’Oracle : Filesystem Type Size Used Avail Use% Mounted on http://oss.oracle.com/projects/btrfs/ /dev/sdb1 btrfs 8.0G 615M 5.3G 11% /home Comparatif de performances : http://oss.oracle.com/ Nous disposons à nouveau de notre ButterFS sur /home. projects/btrfs/dist/documentation/benchmark.html Changeons en conséquence /etc/fstab ; récupérons tout d’abord l’UUID : Le wiki du projet : https://btrfs.wiki.kernel.org/index.php/Main_Page # btrfs filesystem show Label: none uuid: 807751b6-97d6-413c-8b89-f9b3d5673c29 Une vidéo pleine d’humour d’Avis Miller d’Oracle, Total devices 1 FS bytes used 614.86MiB devid 1 size 8.00GiB used 8.00GiB path /dev/sdb1 principal développeur de Btrfs : http://www.youtube.com/watch?v=hxWuaozpe2I

www.linux-pratique.com Linux Pratique n°74 | 35 système & réseau

Plus d’espace disponible ? Redimensionnement via LVM Fleur Brosseau

Vous mettez à jour votre système, téléchargez de nouveaux logiciels et là, une petite fenêtre de notification vous rappelle à l’ordre : « espace disque faible ». Ouch ! Vite, trouver une solution avant que le système devienne inutilisable... Heureusement, lors de l’installation, vous aviez eu la brillante idée de réaliser un partitionnement via LVM. La résolution de votre problème s’en trouve facilitée...

1. Le tour du propriétaire 1,3M /run 8,4M /sbin 1.1 Repérer les données volumineuses 4,0K /selinux 4,0K /srv Pour commencer, il vous faut situer précisément le problème. Pour cela, un rapide 0 /sys df -h vous permettra de visualiser où vous en êtes : 84K /tmp 5,7G /usr ~$ df -h 1,3G /var Sys. Fich. Taille Util. Dispo Uti% Monté sur 0 /vmlinuz rootfs 9,2G 7,6G 1,2G 88% / udev 10M 0 10M 0% /dev Les plus gros répertoires sont immé- tmpfs 203M 712K 202M 1% /run diatement repérés ; on ne tiendra bien /dev/mapper/group1-root 9,2G 7,6G 1,2G 88% / entendu pas compte de /home et de tmpfs 5,0M 0 5,0M 0% /run/lock /mnt, qui correspondent tous deux à tmpfs 406M 220K 406M 1% /tmp des points de montage. En revanche, tmpfs 406M 748K 405M 1% /run/shm les répertoires /usr et /var sont /dev/sda1 228M 19M 198M 9% /boot /dev/mapper/group1-home 904G 24G 835G 3% /home clairement ceux qui occupent le plus //192.168.20.10/taf 1,9T 94G 1,8T 6% /mnt/serveur de place. Rien de vraiment éton- nant puisqu’ils contiennent les pro- Ici, c’est la partition racine du système qui est incriminée. Les données person- grammes, les sources du noyau, les nelles des utilisateurs du système ne sont donc pas en cause... bibliothèques, les logs, etc. Ils pren- nent du volume quotidiennement, Pour affiner notre recherche, on pourra lancer la commande suivante, qui permet sans que l’utilisateur ne s’en rende de visualiser la taille de tous les fichiers et répertoires présents à la racine : vraiment compte... # du -sh /* 7,8M /bin 1.2 Nettoyage 19M /boot préliminaire 0 /dev 12M /etc Pour commencer, vous pouvez d’ores 24G /home et déjà identifier les éléments qui 0 /initrd.img occupent le plus de place sur votre 108M /lib disque et s’ils ne sont pas indispen- 16K /lost+found sables, les supprimer à grands coups 8,0K /media de rm. 40G /mnt On pourra également faire le ménage 141M /opt du côté des paquets dits « orphelins », 0 /proc grâce à deborphan (Debian et déri- 1,5M /root vées), package-cleanup (Fedora)

36 | Linux Pratique n°74 www.linux-pratique.com système & réseau

ou urpme --auto-orphans (si Nous avons affaire ici à 2 volumes logiques (LV), nommés root et home, tous vous gérez vos paquets avec Urpmi). deux contenus dans le groupe de volumes nommé « group1 ». Nos différents sys- Attention, pensez à vérifier la liste des tèmes de fichiers sont tous formatés en Ext4. paquets orphelins avant de valider leur Si besoin, la commande suivante permet de visualiser le contenu d’un groupe de suppression définitive ! Certains, bien volumes (ici « group1 ») : qu’orphelins, peuvent s’avérer utiles... Pensez également à vider le cache # vgdisplay -v group1 des paquets avec (en root) : Ou de façon plus concise : # aptitude clean # vgs group1 pour la famille Debian et dérivées, VG #PV #LV #SN Attr VSize VFree puis : group1 1 3 0 wz--n- 931,27g 0 De même, la commande lvdisplay suivie du nom du groupe de volumes détaille # yum clean all les différents volumes logiques qu’il contient. De façon plus concise, on peut se pour un système sous Fedora, une renseigner via : commande permettant de supprimer à la fois tous les paquets du cache et # lvs group1 LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert les fichiers d’en-tête utilisés par Yum home group1 -wi-ao-- 918,10g pour résoudre les dépendances. root group1 -wi-ao-- 9,31g Et enfin, on utilisera : swap_1 group1 -wi-ao-- 3,86g

# urpmi --clean Note pour les autres distributions basées Pour les opérations qui suivent, on prendra soin d’utiliser un système live, sur RPM. du type SystemRescueCd (http://www.sysresccd.org) ou Gparted Live Pour finir, si c’est votre partition home/ (http://gparted.sourceforge.net/livecd.php) par exemple, les partitions à modi- qui est pleine à craquer, vous pouvez fier devant être démontées avant toute modification. penser à vider le cache et les logs de Si vous utilisez SystemRescueCd, pensez à passer le paramètre setkmap=fr certaines applications (pour cela, fouillez au boot, afin de paramétrer un clavier en français (c’est quand même plus dans les répertoires cachés, par exemple pratique pour la suite...). ~/.cache/, ~/.local/share/, etc.). 2. Résoudre 2.1 Réduire un volume logique Retenez que dans un premier temps, il faut réduire la taille du système de fichiers le problème : (le contenu), avant de réduire la taille du volume logique (LV) le contenant. redimensionner On procède alors comme suit. On commence par vérifier le système de fichiers home une partition qui se trouve dans : # e2fsck -f /dev/mapper/group1-home Le constat : 9,2G sont alloués à la partition racine et 904G (dont 3 % La commande e2fsck est compatible avec les systèmes de fichiers Ext2, Ext3 et sont utilisés) sont alloués à la parti- Ext4 ; l’option -f permet de forcer la vérification, même si le système de fichiers tion /home. Nous avons clairement semble normal. une mauvaise répartition de l’es- Si aucune anomalie n’est décelée, on continue en réduisant la taille de ce système pace disque... C’est donc sur ces de fichiers à 500 Go : 2 partitions que nous allons agir. Concrètement, n’ayant plus de volume # resize2fs -p /dev/mapper/group1-home 500G physique disponible, on envisage ici de réduire /home à 500G et d’aug- L’option -p nous permet ici d’afficher une barre de progression de l’opération. menter la partition racine de 100G. [...] Comme vu plus haut, par chance notre Resizing the filesystem on /dev/mapper/group1-home to xxxxx blocks disque est partitionné avec LVM, dont [...] le principal intérêt réside justement The filesystem on /dev/mapper/group1-home is now xxxxx blocks long dans le fait de pouvoir aisément redi- mensionner et déplacer les différents Le système de fichiers réduit, nous pouvons à présent réduire la taille du volume volumes de stockage à tout moment. logique :

www.linux-pratique.com Linux Pratique n°74 | 37 système & réseau Plus d'espace disponible ? Redimensionnement via LVM

Note

Notez que ceci est possible car l’espace disque libéré au chapitre précédent se trouve dans le même groupe de volumes que root (home et root appartiennent en effet au groupe group1). Si cela n’avait pas été le cas, il aurait fallu considéré l’espace disque disponible, y créer une nouvelle partition, puis ajou- ter cette dernière à notre groupe de volumes. Considérons un exemple : soit une partition /dev/sda3 créée sur l’espace disque disponible. Voici comment procéder : On crée un nouveau volume physique avec la nouvelle partition :

# pvcreate /dev/sda3

Puis, on l’ajoute à notre groupe de volumes :

# vgextend group1 /dev/sda3

# lvreduce -L500G /dev/mapper/group1-home # e2fsck -f /dev/mapper/group1-root Do you really want to reduce home ? (y/n) Et enfin, on procède au redimensionnement : Si tout se déroule bien, vous devriez obtenir le message : # resize2fs -p /dev/mapper/group1-root 100G [...] [...] Logical volume home successfully resized. Resizing the filesystem on /dev/mapper/group1-root to xxxxx blocks Spécifier une dimension : [...] The filesystem on /dev/mapper/group1-root is now xxxxx blocks la syntaxe à respecter long Avec l’option -L nous indiquons la taille désirée. Si la taille est précédée du signe +, cela signifie qu’il s’agit Ceci fait, on effectue une dernière vérification : d’une quantité à ajouter à la taille initiale. Sans le signe # lvs group1 + , comme dans notre exemple, il s’agit de la taille finale LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert souhaitée, à atteindre. home group1 -wi-a--- 500,00g Un coup d’œil à nos différents espaces disques et nous root group1 -wi-a--- 109,31g swap_1 group1 -wi-a--- 3,86g constatons que le LV home a bel et bien changé de taille :

# lvs group1 On redémarre le système (et on n’oublie pas d’ôter le LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert CD-ROM du lecteur...) : home group1 -wi-a--- 500,00g root group1 -wi-a--- 9,31g # shutdown -r now swap_1 group1 -wi-a--- 3,86g On ouvre un terminal pour une ultime vérification :

2.2 Agrandir un volume logique ~$ df -h Même raisonnement que précédemment : on commence par Sys. fich. Taille Util. Dispo Uti% Monté sur rootfs 99G 7,6G 86G 9% / agrandir le contenant (le volume logique) avant d’étendre le udev 10M 0 10M 0% /dev contenu (le système de fichiers). tmpfs 203M 716K 202M 1% /run On agrandit donc notre LV root de 100G : /dev/mapper/group1-root 99G 7,6G 86G 9% / tmpfs 5,0M 0 5,0M 0% /run/lock # lvextend -L+100G /dev/mapper/group1-root tmpfs 406M 44K 406M 1% /tmp Extending logical volume root to 109.31 GiB tmpfs 406M 228K 406M 1% /run/shm Logical volume root successfully resized /dev/sda1 228M 19M 198M 9% /boot /dev/mapper/group1-home 493G 25G 444G 6% /home Une fois notre LV root agrandi, il ne reste qu’à agrandir le //192.168.20.10/taf 1,9T 94G 1,8T 6% /mnt/serveur système de fichiers racine. On commence par vérifier ce dernier : Aaaah, on respire :)

38 | Linux Pratique n°74 www.linux-pratique.com système & réseau

www.linux-pratique.com Linux Pratique n°74 | 39 Web

HTML 5 : structuration Sébastien Chazallet

Le second opus de cette série d’articles sur HTML 5 va s’attacher à décrire les éléments permettant de structurer une page.

1. Structure générale d’un document HTML 5 1.2 Catégorisation des 1.1 Page blanche balises HTML 5 Auparavant, nous avions des balises Voici une page blanche écrite en HTML 5 : qui étaient des blocs ou des lignes. En fonction de cette nature, une disposi- tion particulière était utilisée pour la mise en page. Pour rappel, la balise div est l’élément bloc de base, c’est- Page blanche HTML5 à-dire sans autre signification séman- tique, alors que span est celle pour les éléments en ligne. HTML 5 introduit une nouvelle caté- Cet exemple concentre tous les éléments essentiels. Il ne reste qu’à remplir le gorisation : body corps du document, représenté par la balise . Les seuls en-têtes (au sein • metadata : il s’agit de toutes les head de la balise ) vraiment importants et que l’on ne devrait pas oublier sont le informations portées par les en- codage du document et son titre. têtes du document ; La balise charset est une nouveauté pour HTML 5. Auparavant, on utilisait http- • heading : permet l’organisation hié- equiv, qui se chargeait de transporter des en-têtes HTTP de toute nature et qui rarchique de la page ; avait une portée autre que celle propre au document. • flow : regroupement de tous les On note également que le doctype est considérablement allégé. Pour se rendre éléments qu’on retrouve dans le compte de tout cela, voici la même page blanche en XHTML, avec tous les champs corps du document ; obligatoires : • sectioning : catégorie particu- rentes sections visibles de la page ; • phrasing : catégorie rassemblant Page blanche XHTML les éléments permettant de mettre en forme du texte ; • embedded : regroupement d’élé- Après une norme HTML 4 très permissive, de grosses problématiques de com- ments permettant l’import de res- patibilité entre navigateurs, la norme XHTML a permis de remettre un peu d’ordre sources externes ; en rapprochant HTML de XML. Mais le tout XML n’aura pas pris et le virage subi • interactive : regroupement d’élé- par HTML 5 vise à redonner de la simplicité. ments permettant l’interaction entre Ainsi, en HTML 5, rien n’est obligatoire et ce qui suit est valide : la page et l’utilisateur.

Tous les éléments de la catégorie Page blanche HTML5 flow se retrouvent dans une autre catégorie et tous les éléments, à Cependant, il est préférable de trouver un juste milieu entre trop de rigueur et trop part certains de type m etadata, de simplicité. D’autant qu’à l’heure actuelle, il est important de tester les différences font également partie de la catégorie d’interprétation de code HTML entre navigateurs. flow.

40 | Linux Pratique n°74 www.linux-pratique.com Web

JavaScript, pour certains sujets. A ce titre, je vous renvoie 2. Metadata : vers l’article précédent, à propos des formulaires, qui sont en-têtes du document un cas d’utilisation classique. Un document HTML 5 porte la structure et le contenu. Il porte également des informations contextuelles ou métadon- 3. Sectioning – nées par le biais de balises meta. Ces dernières n’ont pas changé depuis les anciennes versions de HTML. Structuration de l’information Le style ou la mise en page est réalisée à l’aide de feuilles de 3.1 Structuration générale styles CSS. Idéalement, pour des questions de performance, il Ces ajouts viennent directement de l’expérience accumulée vaut mieux n’en avoir qu’une seule et l’avoir compressée, mais avec HTML. En effet, la plupart des sites sont structurelle- il n’est pas interdit d’en avoir plusieurs. De plus, il est conseillé ment organisés de la même manière. On voit tout d’abord la de recourir uniquement à des feuilles de styles externes : zone principale, qui met en forme le contenu de la page et de multiples autres zones, qui peuvent être un haut de page et un pied de page, une zone de navigation et une zone d’in- Il est possible de préciser un attribut media si l’on souhaite formations contextuelles. appliquer une feuille de styles à un média particulier : En XHTML, on utilisait des calques avec des identifiants • screen : écran d’ordinateur, média par défaut ; explicites et la CSS se chargeait de la mise en page. Avec • print : style dédié à l’impression ; HTML 5, la CSS se charge toujours de la mise en page, mais plutôt que d’utiliser de simples calques, il existe des balises • projection : adapté aux vidéo-projecteurs ; qui ont une sémantique. Ceci permet donc de standardiser • braille : adapté aux appareils Braille ; une approche qui existe depuis très longtemps. • aural : adapté aux synthétiseurs vocaux ; Voici un exemple de code XHTML à placer dans la balise body : • tty : adapté aux téléscripteurs ou téléimprimeurs :

• tv : adapté aux téléviseurs (faible résolution) ;
• handheld : adapté aux appareils portables (petits écrans,
faible bande passante) ;
• all : concerne tous les médias précédents.

La gestion de l’interactivité passe par l’utilisation de code Voici la même présentation en HTML 5 : côté client, écrit en JavaScript, de préférence dans des fichiers externes :

Là encore, pour des raisons de performance, il est préfé-
rable de mettre tout son code JavaScript dans un seul et même fichier et de le compresser. Les hauts de page header, bas de page footer et éléments nav Il est également conseillé de commencer les en-têtes par de navigation ont donc hérité d’une balise particulière. les balises meta, puis par le titre du document, les feuilles Étant donné qu’il n’y a qu’une de ces balises au niveau de la aside de styles et enfin les scripts. page, elles se suffisent à elles-mêmes. Une balise permet de donner de l’information additionnelle. Comme il On peut noter l’existence d’autres balises qui sont : peut y en avoir plusieurs, garder un identifiant n’est pas une • base : permet de spécifier une base pour les liens conte- mauvaise idée. Enfin, le contenu reste identique. nus dans la page. Ces liens seront donc préfixés par la Dans un en-tête, on est habitué à voir un logo, un texte, un base et un slash ; formulaire de recherche. Dans un élément de navigation, on • noscript : permet d’afficher un texte alternatif aux verra plutôt une liste de type ul qui contiendra des li, qui scripts, en cas de non-fonctionnement ou de désactiva- eux-mêmes contiendront des liens a. tion de ceux-ci dans le navigateur ; Cependant, la norme ne précise rien et chacun est libre de posi- • style : permet d’inclure une feuille de styles interne (pré- tionner ce qu’il souhaite, dans le respect de la nature des balises, férer les feuilles de styles externes) ; cependant. Sans quoi, cela n’aurait aucun intérêt de les utiliser. • title : titre du document, élément très important dont Vous noterez que l’on n’a pas parlé de positionnement, nous avons déjà parlé. puisque encore une fois, c’est le rôle de la feuille de styles. Ces aspects-là sont identiques à ce qui se faisait avant Que le menu de navigation soit à gauche, en haut ou à droite HTML 5. Cependant, les possibilités de HTML 5 permettent n’importe pas, ce qui compte pour ces balises, est la séman- également de gérer une interactivité sans recourir à tique que l’on donne au contenu.

www.linux-pratique.com Linux Pratique n°74 | 41 Web HTML 5 : structuration

3.2 Structuration d’un contenu Une section contient généralement des paragraphes (mais pas seulement). L’utilisation de ces sections permet de Une page bien faite présente une information principale, regrouper des paragraphes au sein d’une même entité thé- entourée par tout ce que l’on a vu précédemment (haut matique. Cela peut être lié à une notion de chapitre, mais ce de page, bas de page, navigation et informations contex- n’est pas forcément le cas. tuelles). Cette information principale peut prendre la forme d’un article, un billet d’humeur, une présentation, ... Il est On peut par exemple imaginer une page qui contiendrait plu- également nécessaire de la structurer. Pour cela, une nou- sieurs onglets. Le contenu de chacun de ces onglets pourrait velle balise voit le jour : article. Elle peut en son sein être être regroupé dans une section. structurée comme une page de site : Vont être abordés maintenant des éléments complémen- taires à la structuration de contenu, en abordant la problé-

matique de la hiérarchisation.
4. Heading – Hiérarchisation
de l’information On connaît les balises h1 à h6 qui permettent de créer des Les informations que l’on pourrait s’attendre à trouver dans titres et une hiérarchie de sous-titres. On peut les utiliser un en-tête serait les métadonnées de l’article (publié le, comme on en a l’habitude : auteur, ...), éventuellement le titre de l’article. Celles liées à la navigation seraient des liens vers des ancres corres-
pondant aux différents chapitres de l’article. Pour terminer,

Schémas

les informations auxquelles on peut s’attendre pour un pied
de page seraient une webographie, des commentaires, des
liens vers des articles connexes, ...
header
En CSS, on peut distinguer, par exemple, la balise

Schéma narratif

relative à la page entière, de celle d’un article à l’aide du
sélecteur d’enfant >.
body > header { }

Situation initiale

article > header { }

Perturbation

Toujours pour améliorer la sémantique (mais également pour
aider à l’internationalisation), on peut signaler l’existence
d’une balise time avec un attribut pubdate, qui indique

Déroulement

qu’il s’agit de la date de publication de l’article et un attribut
datetime, qui permet de donner la date au format standard

Résolution

aaaa-mm-jjThh:mm :

Situation finale

Cette balise a parfaitement sa place au sein de la balise header
.
Pour terminer, il n’est pas nécessaire d’utiliser une balise
div
pour positionner le contenu de l’article. Celui-ci peut être

Schéma actanciel

divisé en plusieurs sections à l’aide de la balise éponyme :

Destinateur

Destinataire

Adjuvant

Opposant

42 | Linux Pratique n°74 www.linux-pratique.com Web

Quête

Perturbation

Déroulement

Résolution

On a donc, au travers de l’ensemble de la page, une hié-

Situation finale

rarchie claire de ce qui est représenté. Ainsi, si l’on voulait
faire une sommaire de l’exemple précédent, on aurait : • Schémas