Un post rapide sur une méthode très simple et très efficace pour chiffrer un dossier sous linux. Je l’ai mise en pratique sur Ubuntu, mais ça devrait marcher sous n’importe quelle distribution, en adaptant quelques détails bien sur.
L’outil s’appelle « encfs » et est fourni par le paquet du même nom. Le paquet « fuse-utils » est également nécessaire.
On initialise encfs avec la commande suivante, qui défini le répertoire utilisé pour les données chiffrées et le répertoire utilisé pour les données en clair :
Encfs vous posera quelques questions pour cette initialisation. Tout d’abord, il vous demande une confirmation pour la création des deux répertoires « coffre » et « coffre_open ». Ensuite, vous devrez choisir la configuration du nouveau volume crypté. « Paranoïaque » est un bon choix pour ceux (comme moi) qui ne veulent pas trop se prendre la tête, entrez donc « p ».
Enfin, choisissez un mot de passe. Attention : il n’existe aucune méthode permettant de retrouver un mot de passe oublié. Si vous oubliez ce mot de passe, le seul moyen pour récupérer vos données sera de casser la clé de 256 bits utilisée pour chiffrer vos données en AES (ça parlera pas à tout le monde, mais sachez que c’est pas gagné :D )
Voilà, c’est à peu près tout. Vous avez maintenant un dossier « coffre » et un dossier « coffre_open » dans votre home. Après l’initialisation, le coffre est ouvert. Vous avez alors un volume « coffre_open » monté (vous pouvez le vérifier dans votre poste de travail) dans le dossier « coffre_open » créé précédemment.
Mettez ce que vous voulez chiffrer dans ce volume « coffre_open ».
Lorsque vous fermerez le coffre, le volume sera démonté et les données seront chiffrées et stockées dans le répertoire « coffre ». Vous retrouverez vos données en clair lorsque vous rouvrirez le coffre.
Pour fermer le coffre :
Pour ouvrir le coffre :
Vous pouvez bien sur mettre ces commandes dans des fichiers /usr/bin/encrypt et /usr/bin/decrypt (vous n’oublierez pas de les rendre exécutables et de vous mettre en propriétaire…), ce qui vous permettra d’avoir simplement à taper « encrypt » ou « decrypt » dans un terminal pour fermer ou ouvrir votre coffre.
Encore quelques points auxquels il faut faire attention ou qu’il est bon de savoir :
– si vous copiez/déplacez votre coffre, déplacez bien le fichier « .encfs6.xml » qu’il contient, sinon il vous sera impossible d’utiliser votre coffre
– vous pouvez changer votre mot de passe avec encfsctl
Et sinon, la page de doc d’ubuntu-fr est, comme souvent, bien faite et plus complète que cet article : c’est ici.
Ça y est, j’ai réussi une transformation par cage !
Bien sûr, ça reste assez moche et non-utilisable (les cages sont définis directement dans le code), mais ça marche ! Des améliorations devraient arriver bientôt (interface basique principalement).
Comme dirait quelqu’un, « on va quelque part finalement ».
Bien que ça ne soit pas prévu dans mes objectifs pour l’évaluation de mi-parcours, j’ai fait une bonne avancé sur la partie interface. Il est maintenant possible de créer une cage, d’y ajouter des points, d’enlever le dernier (touche backspace), et de fermer la cage.
La raison qui m’a poussé à faire ça est que je me suis trouvé réellement bloqué dans le projet, et j’avais besoin d’une partie un peu plus facile à coder. Ça m’a également permis d’aborder le cœur de l’algorithme sans me préoccuper de la partie Gegl, qui me paraissait très obscure à ce moment.
L’objectif maintenant est de traiter l’exact opposé de la chaine, c’est à dire le Gegl operator, ce que j’ai déjà commencé à faire. Je pourrais tester cette partie en utilisant le menu ‘Outils/Actions Gegl’ avec des cages prédéfinies dans le code. La liaison avec l’interface se fera plus tard.
Si vous voulez tester tout ça, bien qu’il n’y ai toujours pas grand chose à voir, vous pouvez récupérer et compiler ma branche (git://git.gnome.org/gimp, branche soc-2010-cage).
Je ferai probablement des versions prêtes à l’emploi quand il y aura plus de choses à tester.
Petite subtilité cependant, j’ai du faire une petite modification dans Gegl, mais qui n’est pas encore intégré dans le dépôt Git officiel. Il vous faudra donc appliquer le petit patch que voici à Gegl pour compiler ma branche:
J’ai fait hier soir mes premiers commit dans ma branche (il était temps !). Concrètement, il n’y a pas grand chose à voir, c’est simplement un outil complètement stupide qui affiche un carré sur l’image quand il est activé, mais ça veut dire que les choses avancent. Le code derrière tout ça est près à recevoir des choses plus concrètes.
Je commence à être plus à l’aise dans le code source, grâce à la patience des développeurs de Gimp (merci à Mitch en particulier !).
Comme vous pouvez le voir sur la capture, j’ai fait une icône correctement moche. Si vous vous sentez près à faire mieux, n’hésitez pas ! Il faut créer deux versions de l’icone, une de 22 pixels de large et une autre de 16. Les icones des autres outils sont là, pour références: http://git.gnome.org/browse/gimp/tree/themes/Default/images/tools
C’est reparti !
Et non, je n’ai pas encore abandonné.
Jusqu’à maintenant, j’ai passé une bonne partie de mon temps (celui qu’il me restait en enlevant les examens), à apprendre. Comprendre comment fonctionne un logiciel de 4,5 millions de ligne n’est pas une chose facile, vous l’aurez deviné. Voilà ce qui m’a pas mal occupé:
Cette étape est, je pense, la plus difficile et prend un temps certain. Mais j’en verrai le bout !
Quelques photos que j’ai prises à Prague, où j’ai passé le weekend. Elles sont pratiquement « brutes de décoffrage », je les ai juste redimensionnées et j’en ai recadrée une.
A ce propos, j’en profite pour vous filer un petit outil sympa que j’ai utilisé pour le redimensionnement « massif » : mogrify. Il fait d’ailleurs plein d’autres choses que le redimensionnement.
Et la super commande :
Attention : il écrase les anciennes images.
Ce premier article va traiter du système de sauvegardes automatisée que je me suis monté pour mes besoins personnels.
Les outils de sauvegardes automatiques sont nombreux. Je me suis tourné vers BackupPC car :
– il est multi-plateformes (tous mes PC sont en double-boot Windows / Linux)
– c’est un logiciel libre
– il supporte de nombreux modes de sauvegardes
– l’interface web est plutôt bien faite je trouve
Il est bien évident que cet article ne sera qu’une introduction à BackupPC. Le nombre de possibilités offertes par BackupPC et le nombre de cas de figures possibles pour des sauvegardes sont bien trop grands pour en faire un article exhaustif.
De plus, je ne vais traiter ici que des sauvegardes sous Linux. Backuppc permet aussi de gérer les sauvegardes de postes sous Windows, ça fera peut-être l’objet d’un autre article.
Sources :
http://doc.ubuntu-fr.org/backuppc
http://backuppc.sourceforge.net/
Configuration :
– Ubuntu Linux 10.04 LTS
Installation par la logithèque Ubuntu (rechercher « backuppc »). L’installation va vous demander de choisir certaines options. Voici celles que j’ai choisies :
– Postfix Configuration : Pas de configuration (je n’ai pas besoin d’un service de mails pour ma solution de sauvegardes)
– Quel serveur web voulez-vous configurer automatiquement? : Cochez « apache2 »
– Notez quelque par le mot de passe créé pour l’utilisateur « backuppc »
L’installation se termine sans problème particulier (en tous cas chez moi :p ).
Je vous conseille de tout de suite changer le mot de passe créé pour l’utilisateur backuppc pour mettre un mot de passe que vous retiendrez. Ceci se fait avec la commande :
L’interface web de BackupPC est accessible à l’adresse : http://localhost/backuppc (Remplacer localhost par l’IP du serveur si c’est une machine différente). L’interface web permet d’accéder à la grande majorité des options de configuration disponibles.
Allez, on commence par une des seules options qu’il n’est pas possible de modifier via l’interface web. Par défaut, BackupPC stocke les sauvegardes dans « /var/lib/backuppc ». Si cela vous convient, ne touchez à rien, mais dans mon cas, j’ai acheté un disque dur spécialement pour y stocker mes sauvegardes. Il est monté sur « /media/sdc1 » et je veux que mes sauvegardes soient dans « /media/sdc1/backuppc ».
– On crée le répertoire, je ne vous fait pas l’affront d’expliquer comment.
– On édite avec son éditeur de texte préféré le fichier « /etc/backuppc/config.pl ». Attention, il faut être root. On cherche la ligne « $Conf{TopDir} = ‘/var/lib/backuppc’; » et on la remplace par « $Conf{TopDir} = ‘/media/sdc1/backuppc’; »
– On copie le contenu de l’ancien répertoire de sauvegarde vers le nouveau :
– On redémarre BackupPC :
Attention : le disque utilisé pour ici doit être en ext3 (ou un autre système de fichier gérant les permissions, donc pas de NTFS par exemple)
C’est la 2ème (et dernière pour cet article) option qu’il faut changer dans le fichier de configuration « /etc/backuppc/config.pl »
Modifier la ligne « $Conf{Language} = ‘en’; » en « $Conf{Language} = ‘fr’; »
Dans l’interface web :
– « Serveur » -> « Modifier la configuration » -> « Machine » : vérifier que la machine (host) « localhost » existe bien, avec « backuppc » comme user
– « Hôtes » -> choisir « Localhost » dans la liste déroulante
– « localhost » -> « Modifier la configuration » -> « xfer » -> « XferMethod » : choisir « tar », « TarShareName » : indiquer le chemin à sauvegarder et cliquer sur « insérer » -> Cliquer sur « Sauvegarder » (apparaît en rouge)
– « localhost » -> « localhost Accueil » -> « Démarrer la sauvegarde complète »
– « localhost » -> « Explorer les sauvegardes » : vérifiez ici que ça a fonctionné.
BackupPC permet de gérer de manière assez avancée les sauvegardes de postes distants. Voici comment faire une sauvegarde très basique d’un répertoire sur un poste distant sous Linux.
Avant tout, il faut qu’openssh_server soit installé sur le poste distant car la sauvegarde se fera via ssh (encore un bon point pour backuppc =) ). Par contre, cela entraine une identification par clés entre le serveur et le poste distant. Il faut donc mettre en place ce mécanisme avant tout :
– Passer en utilisateur « backuppc » :
– Générer les clés publique et privée :
– On peut vérifier que la clé publique a bien été générée :
– Transférer le fichier id_rsa.pub sur le poste distant d’une manière quelconque et ajouter son contenu au fichier « /root/.ssh/authorized_keys » sur le poste distant
– Faire une première connexion depuis le serveur vers le poste distant :
Répondre « yes ». Pour que cela fonctionne, il faut bien sur toujours être l’utilisateur « backuppc » sur le serveur.
Maintenant, on peut passer à la configuration de la sauvegarde via l’interface web :
– « Serveur » -> « Modifier les machines » -> « Machines » -> ajouter adresse.ip.de.la.machine.a.sauvegarder avec « backuppc » comme user
– « Hôtes » -> choisir adresse.ip.de.la.machine.distante dans la liste déroulante
– « Modifier la configuration » -> « xfer » -> « XferMethod » : choisir « rsync », -> cliquer sur « Sauvegarder »
– Aller sur « adresse.ip.de.la.machine.distante Accueil » -> « Démarrer la sauvegarde complète »
– Aller sur « Explorer les sauvegardes » et vérifier que ça a fonctionné.
Voila, normalement tout fonctionne. Ce n’est bien sur qu’un bref aperçu des possibilités et du fonctionnement de Backuppc, mais ça permet de monter assez rapidement un système de sauvegardes qui tient la route.
Reste à voir si Backuppc me conviendra à long terme. Il y a notamment une limitation pour la sauvegarde sur les disques NTFS, ce qui m’embête assez. Je trouverai peut-être une astuce, ce qui fera peut-être un prochain article.
C’est fini pour ce premier vrai post, assez long d’ailleurs. N’hésitez pas à aller voir la doc de Backuppc sur le site de la documentation Ubuntu, elle est très bien faite.
Ce week-end, je suis allé au Libre Graphics Meeting, à Bruxelles, où j’ai pu rencontrer mon mentor. Au programme du week-end, des conférences sur le graphisme libre bien sûr, mais aussi des workshops et pour moi, une des rares réunion « en vrai » de l’équipe Gimp.
Ce qui m’a un peu surpris au premier abord, c’est que les gens présent sont très normaux. On pourrait penser qu’il n’y a que des vieux geek barbu, mais en fait pas du tout. Il y a des gens très différents, des jeunes, des vieux, des hommes, des femmes. Bien sûr, il y a plus de barbu et de cheveulu que dans la moyenne de la population, mais quand même.
En tout cas, pour un bleu comme moi, c’est une expérience très impressionnante. En plus de la barrière relative du langage, on se retrouve devant des gens qu’on voyait auparavant associé à des projets assez dingues. Je pense en particulier à la team Blender qui était présente, et qui a présenté l’évolution du projet Sintel.
Même si ce week-end n’a pas été spécialement utile dans le cadre strict de mon projet, c’est très intéressant de mettre des visages sur des noms ou des pseudos, de voir comment tout ça fonctionne. Ça permet également de voir qu’il y a des gens derrière en cas de soucis, et c’est très appréciable. Coucou Alexia =)
Pour ceux qui ne le savent pas, voici en résumé ce qu’est un Summer of Code. Google propose, depuis 2005, à des étudiants du monde entier (sauf pays sous embargo), de travailler pendant les grandes vacances sur des logiciels libres. Ce programme connait un grand succès, autant du coté étudiant que du coté des différents logiciels.
Pour l’étudiant, l’intérêt de la chose est multiple. Le programme met le pied à l’étrier dans le monde du logiciel libre, rapporte une grosse expérience, de grosses compétences, des contacts, et accessoirement un petit paquet de cash.
Pour les différents logiciels (des organisations dans le langage Google), le Summer of Code apporte du sang frais, des nouvelles idées, et un gros morceau de code pour le logiciel.
Je vais donc, vous l’avez compris, réaliser bientôt un Summer of Code. Pourquoi ? Et bien, outre les éléments que j’ai mentionné au dessus, j’avais envie d’apporter ma pierre à l’édifice du logiciel libre. C’est également pour moi une sorte d’épreuve du feu pour mes compétences en informatique. Si j’arrive jusqu’au bout, je sais que je serai capable de beaucoup de chose en programmation. Car il ne faut pas se leurrer, un SOC, c’est un très gros projet. À l’heure actuelle, rien ne me prouve que j’y arriverai. Mais j’y vais quand même :p
Le projet que j’ai proposé est de créer un nouvel outil de déformation d’image pour le logiciel de dessin 2D The Gimp. C’est un des logiciels phare du monde du libre et il est utilisé par un bon paquet de personnes.
Mon outil sera basé sur une publication de l’université de Tel-Aviv publié au Siggraph 2008. L’article se nomme « Green Coordinates », et décrit un nouveau système de coordonnées qui permet de réaliser des déformations grâce a des cages, dans un espace à N dimensions. La méthode à ceci d’intéressant quelle permet de préserver au maximum les formes des objets déformés.
La publication est très technique, c’est des maths qui tachent. Je remercie au passage les enseignants chercheurs qui m’ont aidé à la compréhension de la chose et à la conversion en une méthode applicable à la 2D.
Mon outil aura plus ou moins le comportement suivant:
Alors comme ça, ça peut paraitre un poil abstrait, mais j’ai sous la main une vidéo qui devrait être plus explicite. Cette vidéo présente des déformations par cage, mais elles ont sous le capot des méthodes différentes de la mienne. Les déformations seront donc un peu différentes, mais le principe reste similaire.
Voilà, je termine cet article avec le document qui ma servi de support pour la réunion technique avec les développeurs de Gimp. Il reprend ce que je viens de décrire, mais en allant bien plus dans les détails du fonctionnement de l’algorithme. Par contre, il est en anglais (haha).
Un blog. Allons-y, donc.
Un blog par deux même. Un peu atypique sans doute, mais pourquoi pas après tout? Il est toujours bon de partager et de croiser les connaissances et les avis. Vous l’aurez compris, nous seront donc deux à écrire ici.
Pour moi, cette première expérience de blog nait avant tout d’une envie de tracer mes connaissances, essentiellement en informatique, et de les partager. Ce sera aussi l’occasion de partager d’autres choses, plus variées. Nous verrons où tout cela nous mènera !
A très bientôt donc,
jidey