Planet Parinux

September 13, 2014

Premier Samedi du Libreoctobre 2014

Date : samedi 4 octobre 2014

Horaires : de 14h00 à 18h00

Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 4 octobre 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

September 01, 2014

Emmanuel SeymanSprint d'Administration (2ième édition)

Ça faisait un bout de temps que les tâches liées à l'administration système commençaient à s'accumuler chez Parinux sans que les personnes concernées n'interviennent, que ça soit par manque de temps ou manque de motivation.

Pour débloquer la situation, nous avons décidé de refaire un évènement qui avait beaucoup aidé il y a quelques années : un sprint "Administration système" pendant lequel les "root" de Parinux pourrait se réunir physiquement, chacun avec un ordinateur et une connexion internet, et corriger lers bogues de notre infrastructure en s'entre-aidant lorsque le besoin s'en fait sentir.

Je pense que l'organisation de l'évènement a du nous prendre la plus grosse part de dix minutes. Lors du pique-nique Parinux du mois d'août, Magali a proposé qu'on se réunisse physiquement, j'ai proposé que la réunion se fasse chez moi et on a alors cherché le premier jour de disponible, qui s'est trouvé être deux jours plus tard. Paul et Emmanuel (l'autre) ont tout de suite accepté de venir. Guillaume s'est ensuite joint à nous.

Tout ce beau monde s'est ensuite retrouvé chez moi ou nous avons pu discuter autour de plusieurs pizzas. Le résultat, c'est une après-midi de travail pendant laquelle nous avons plus fait que pendant l'année qui l'a précédée. Une bonne partie des bogues du bugzilla de Parinux ont été fermés et le reste du travail pourra être fait au fil de l'eau.

Un grand merci à tous ceux qui ont participé à ce sprint !

August 18, 2014

PeckApache FTP like

Niveau :      
Résumé : alias / /%{username}

Aujourd'hui je voudrais faire un serveur web qui se comporterait comme un serveur FTP ou SFTP. Lorsqu'un utilisateur unix se connecte à un serveur FTP avec un login et un mot de passe, il lui est présenté un contenu qui lui est propre (son $HOME par exemple).

Comment faire l'équivalent avec apache ?

Dit autrement, je voudrais que les 2 commandes suivantes renvoient un contenu différent :

$ wget http://userA@www.monserveur.com/ # répertoire A
$ wget http://userB@www.monserveur.com/ # répertoire B

Pour cela il faut jouer avec les RewriteRules, mais c'est plus balaise que ça en a l'air.

Premièrement il faut une authentification. J'ai choisi ldap, mais prenez la méthode que vous préférez : http://httpd.apache.org/docs/2.2/mo... tout ce qui commence par mod_authn est valable. Voici comment on la met en place :

<Location />
        AuthType basic
        AuthName "My server"
        AuthBasicProvider ldap
        AuthLDAPURL ldap://serveur.ldap.com/dc=domaine,dc=com?uid?sub
        AuthLDAPBindDN cn=user,ou=technical,dc=domaine,dc=com
        AuthLDAPBindPassword password
        Require valid-user
</Location>

Ensuite on joue avec RewriteRule, les variables s'appellent sous la forme %{ENV:VARIABLE}

# utilisez %{ENV:USER_AUTH} pour ceux qui n'ont pas choisi l'authent LDAP
RewriteRule ^(.*) /%{ENV:AUTHENTICATE_uid}/$1

Mais ça ne marche pas. Tout d'abord on apprend qu'il faut mettre les règles dans le Location sinon les variables d'authentification ne sont pas disponibles. Ensuite on a oublié d'activer le rewrite engine. Et enfin dans un location (ou un directory) on ne matche plus la request uri mais le chemin créé à partir de cette uri. Cela qui une fois corrigé nous donne quelque chose comme ça :

<Location />
        RewriteEngine On
        # le résultat sera automatiquement préfixé par le DocumentRoot si on ne le fait pas nous même
        # notez l'absence du / initial dans le pattern ...
        RewriteRule ^var/www/html/(.*) /%{ENV:AUTHENTICATE_uid}/$1 
</Location>

Mais ça ne marche toujours pas. En effet, le rewrite engine d'apache est réentrant, quelle que soit la modification et quel que soit le flag utilisé, si une url est modifiée, apache fait une redirection interne et relance toute la machinerie (dont les redirections). Pour les petits malins, non [L] n'est pas fait pour ça, par contre la doc évoque un [END] qui aurait cette fonctionnalité mais je ne l'ai pas trouvé.

Il nous faut donc un moyen de détecter qu'une url a déjà été transformée par une RewriteRule. Malheureusement les variables (comme %{ENV:AUTHENTICATE_uid}) ne sont valables que dans la partie gauche de RewriteCond ou dans la partie droite de RewriteRule ce qui nous limite sévèrement. On ne peut pas matcher le chemin en pour détecter qu'il contient le répertoire de l'utilisateur. De plus on ne peut pas utiliser une autre racine, apache ajouterait automatiquement le DocumentRoot en cours.

J'ai essayé en utilisant des variables d'environnement temporaire (avec [E=VAR:VALUE]), mais le rewrite engine l'évalue trop tard et ne détecte pas la nouvelle valeur de la variable modifiée par lui-même.

Ma solution est donc de mettre en place un unique répertoire contenant les utilisateurs avec un nom improbable car il ne pourra pas être utilisé comme nom de répertoire dans les répertoires utilisateurs. Et d'utiliser ce nom de répertoire comme marqueur d'url déjà traitée. Ce qui nous donne :

        # mon répertoire s'appelle ____data____
        RewriteRule ^var/www/html/(?!____data____/)(.*) /____data____/%{ENV:AUTHENTICATE_uid}/$1

C'est bien joli, mais ça n'empercherait pas un utilisateur d'aller voir dans le répertorie de son voisin. En effet, ce ne sont que des rewrite rules, pas des droits d'accès. Puisqu'on ne peut pas utiliser les noms de répertoire utilisateur dans les require pour le matcher avec les nom d'utilisateur (on se mordrait la queue (et ça fait mal (au dos))). Il nous faut donc le garantir d'une autre façon, en forçant tout utilisateur a n'accéder qu'à son répertoire avec une autre règle.

        # ce qu'on veut c'est éviter l'utilisateur qui voudrait bypasser la première règle avec un http://www.monserveur.com/____data____/userX
        RewriteRule ^var/www/html/____data____/.*?/(.*) /var/www/html/____data____/%{ENV:AUTHENTICATE_uid}/$1
        # et on voudrait ausst éviter que l'utilisateur puisse scanner la racine
        RewriteRule ^var/www/html/____data____/?$ /var/www/html/____data____/%{ENV:AUTHENTICATE_uid}/

Notez l'ajout de /var/www/html dans les chaines de remplacement, c'est pour éviter qu'apache pense qu'on a modifié le chemin si on n'a rien changé.

Et c'est gagné, on a enfin trouvé !

Je vous laisse donc profiter du résultat :
Edit : la version finale minimise l'appel aux règles, prend en compte les chemins qui se terminent par / et les tentatives d'accès à des répertoires non autorisés.

<Location />
        AuthType basic
        AuthName "My server"
        AuthBasicProvider ldap
        AuthLDAPURL ldap://serveur.ldap.com/dc=domaine,dc=com?uid?sub
        AuthLDAPBindDN cn=user,ou=technical,dc=domaine,dc=com
        AuthLDAPBindPassword password
        Require valid-user

        # make http behave like ftp
        RewriteEngine On
        # create home dir var
        RewriteRule .* - [E=USER_ROOT:/var/www/html/____data____/%{ENV:AUTHENTICATE_homeDirectory}]
        RewriteCond %{ENV:USER_ROOT} !-d
        RewriteRule .* - [E=USER_ROOT:/var/www/html/forbidden]

        # redirection vers les repertpoires utilisateur
        RewriteCond %{REQUEST_FILENAME} !^/var/www/html/____data____
        RewriteRule ^var/www/html/(.*) %{ENV:USER_ROOT}/$1 [L,DPI]

        # impossibilite de lire la racine
        RewriteCond %{REQUEST_FILENAME} ^/var/www/html/____data____/?$
        RewriteRule .* %{ENV:USER_ROOT} [L,DPI]

        # impossibilite de lire le repertoire d'un autre
        RewriteCond %{ENV:AUTHENTICATE_homeDirectory}|%{REQUEST_FILENAME} !^(.*?)\|/var/www/html/____data____/\1
        RewriteRule ^var/www/html/____data____/?[^/]*/?(.*) %{ENV:USER_ROOT}/$1 [L,DPI]
</Location>

<Directory /var/www/html/forbidden>
        deny from all
</Directory>

Note : et pour ceux qui voudraient vraiment faire du FTP avec apache il y a mod_ftp.

Tags:, , ,

August 17, 2014

Premier Samedi du Libreseptembre 2014

Date : samedi 6 septembre 2014

Horaires : de 14h00 à 18h00

Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 6 septembre 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

August 13, 2014

PeckJ’ai pété

... désolé

Niveau :      

Résumé : gdisk /dev/sda

Le format GPT

Guid partition table est un format de partitionnement de disque.

Il ne faut pas confondre un format de partitionnement avec le formatage d'une partition avec système de fichier. Il y a de nombreux formats de système de fichier : ext4, swap, xfs ... Mais il n'existe que peu de format de partitionnement, les plus connus étant :

  • MBR : format utilisé par les premiers PC sous DOS et encore en usage sur la beaucoup de vos machines
  • disklabel : utilisé sur solaris et BSD
  • GPT : apparu récemment (il y a environ 15 ans) pour les besoins de l'itanium

Ce format a pour but de palier les différents problèmes de son prédécesseur direct le MBR :

  • stockage de la table en double et checksum du contenu : la table étant une structure très importante, on peut enfin se dire qu'on ne la perdra plus
  • stockage des offset en LBA sur 64 bits : on arrête de parler de CHS obsolètes depuis longtemps et on espère pouvoir tenir assez longtemps la croissance des tailles de disques : 9 milliards de téra octets avec des secteurs de 512 octets
  • on dépasse donc la limite des 2To supportés par le format MBR, si vous avez un disque de plus de 2Tio il est a peu près certain qu'il a déjà du GPT
  • tous les identifiants sont des UUID : garantis uniques, on peut en créer autant qu'on veut (2^128) et il y en a partout
  • la table fait au minimum 16kio : on n'a plus de question de table primaire/logique/étendue et on peut stocker au moins 128 partitions sans se poser de question
  • accessoirement on peut stocker des noms de partition directement dans la table

Attention, on stocke des adresses de secteur (LBA comme en MBR depuis un certain temps) et non d'octets, et la taille d'un secteur peut varier d'un disque à l'autre, il faut faire attention à ne pas copier les tables GPT trop littéralement.

GPT est indiqué comme nécessaire pour le support du boot sur EFI, bien qu'il soit théoriquement possible de faire sans.

Partitionner en GPT

Pour partitionner en GPT vous avez le choix entre deux familles d'outil :

  • parted et gparted
  • gdisk, sgdisk et cgdisk (remplaçants de la famille fdisk)

Le moins dangereux est de ne partitionner que vos nouveaux disques en GPT, mais il y a moyen de refaire la table de partition d'anciens disques s'il y a suffisament de place pour stocker la table GPT (16kio en début et en fin de disque plus le MBR). Si l'espace est disponible, c'est simple, il vous suffit de reporter les adresses de début et de fin de chaque partition du MBR vers le GPT.

Choix des partitions

Tout d'abord je vous recommande d'aligner vos partition sur 1Mio, le minimum recommandé étant de 4kio. Le minimum de 4ko s'explique par le fait que de plus en plus de disques ont des secteurs de 4ko, et si vos écritures ne sont pas alignées sur 4kio vous allez voir vos performances dégringoler.

Il faut ajouter que de plus en plus de disques sont des SSD. Les SSD ont des pages sur lesquelles il est aussi intéressant de se caler et elles peuvent aller jusqu'à 1Mio.

Donc ne vous posez plus la question et prenez la valeur par défaut de l'outil qui aligne sur le Mio.

  1. Si vous avez un boot sur EFI, vous devez faire une partition EFI (type ESP), ne soyez pas radin, mettez-y au moins 100Mo
  2. Si vous avez un boot sur un BIOS d'origine, il est conseillé de faire une partition de type bios. Certaines personnes indiquent que celle-ci est indispensable car GPT ne laisse pas de place caché pour le bootloader. C'est faux puisqu'il suffit d'aligner les partitions pour faire apparaître de la place. Mais puisqu'on en en est à faire des trucs propres, profitez-en pour faire ce qui aurait du être fait depuis très longtemps et faites de la place pour stocker un bon grub2 avec tous ses modules (1Mo)
  3. Si vous voulez permettre l'hibernation de votre machine (ou si vous avez peu de ram) n'oubliez pas d'inclure une partition de swap.
  4. Pensez à séparer système et données sur deux partitions différentes. La partition de données est naturellement /home pour une particulier, mais sur un serveur c'est plus flou : /var /srv /home sont des répertoire de données.

Compatibilité MBR

Dans la notion de MBR (un unique secteur de 512 octets) il faut différencier le code et la table des partitions.

Si vous utilisez un BIOS classique, le code du MBR restera le même (grub/lilo/boot windows ...).

Si vous utilisez EFI, le code du MBR peut être vide (ce que fait en général gdisk), mais il peut être intéressant de mettre un code fonctionnel avec un avertissement.

La table des partitions du MBR doit elle être protégée pour éviter à un outil d'édition de cette table de tenter d'y faire des modifications et d'effacer vos précieuses données. C'est pour cela qu'on y inscrit un "protective MBR" qui indique que le disque est entièrement utilisé par une partition unique de type GPT.

Tags:, , ,

July 08, 2014

Premier Samedi du Libreaoût 2014

Date : samedi 2 août 2014

Horaires : de 14h00 à 18h00

Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 2 août 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

July 03, 2014

Premier Samedi du Librejuillet 2014

Date : samedi 5 juillet 2014

Horaires : de 14h00 à 18h00

Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 5 juillet 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

May 08, 2014

Premier Samedi du Librejuin 2014

Date : samedi 7 juin 2014

Horaires : de 14h00 à 18h00

Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 7 juin 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

April 17, 2014

Vincent-Xavier JumelDe l'automatisation de la mise à jour d'un site

Dans le cadre de l’activité Premier Samedi du Libre, Parinux, dont je suis le président, maintient à jour le site susmentionné. Le mettre à jour tous les mois est une vraie plaie pour moi qui n’aime pas beaucoup le web et encore moins les tâches répétitives.

Nous avons la chance d’utiliser Wordpress, enfin, surtout le fait que celui-ci supporte XML-RPC. Ceci va nous faciliter le travail. Comme j’aime bien Python, allons y avec Python.

Tout d’abord, l’outillage :

pip3.3 show python-wordpress-xmlrpc

J’ai choisi cette mise en œuvre comme étant la plus complète, il fallait gérer à la fois des pages et des articles.

En route pour le code :

#!/usr/bin/python3
# coding: utf-8
import datetime
from wordpress_xmlrpc import WordPressPage
from wordpress_xmlrpc import WordPressPost
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc.methods import pages
from wordpress_xmlrpc import Client
import locale


locale.setlocale(locale.LC_ALL, 'fr_FR.utf8')

def premier_samedi(type):
    y = datetime.date.today().year
    j = 1
    m = datetime.date.today().month
    if m == 12:
        y += 1

    while datetime.date(y, m + 1, j).strftime("%A") != 'samedi':
        j += 1

    if type == 'url':
        return datetime.date(y, m + 1, j).strftime("%B-%Y")
    elif type == 'court':
        return datetime.date(y, m + 1, j).strftime("%B %Y")
    else:
        return datetime.date(y, m + 1, j).strftime("%e %B %Y")


client = Client('https://premier-samedi.org/xmlrpc.php',User,Password)
accueil = client.call(posts.GetPost(730))
accueil.content = 'Un long texte qui présente les premier samedis \
le ' + premier_samedi('long') + \
'……’
client.call(posts.EditPost(accueil.id, accueil))

post = WordPressPost()
post.title = premier_samedi(’court’)
post.content = ’

Date : samedi’ + premier_samedi(’long’) + ’
\n\ Horaires : de 14h00 à 18h00
…’ post.id = client.call(posts.NewPost(post)) post.post_status = ’publish’ client.call(posts.EditPost(post.id, post))

Edit : Après cette première version, j’ai relu et on peut refactoriser le code avec l = list(map((lambda s: [s.year,s.month,s.day]), rrule(MONTHLY,byweekday=SA(1))[:5])) ou mieux encore : rrule(MONTHLY,dtstart=date.today(),byweekday=SA(1),count=1)[0]

La version complète se trouve sur un dépot git.

April 10, 2014

Premier Samedi du Libremai 2014

Date : samedi 3 mai 2014
Horaires : de 14h00 à 18h00
Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 3 mai 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

March 01, 2014

Premier Samedi du Libreavril 2014

Date : samedi 5 avril 2014
Horaires : de 14h00 à 18h00
Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 5 avril 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

February 01, 2014

Premier Samedi du Libremars 2014

Date : samedi 1<up>er</up> mars 2014
Horaires : de 14h00 à 18h00
Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 1<up>er</up> mars 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

January 30, 2014

Premier Samedi du Librefévrier 2014

Date : samedi 1<up>er</up> février 2014
Horaires : de 14h00 à 18h00
Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 1<up>er</up> février 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

December 28, 2013

Premier Samedi du Librejanvier 2014

Date : samedi 4 janvier 2014
Horaires : de 14h00 à 18h00
Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 4 janvier 2014 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

November 10, 2013

Vincent-Xavier JumelDe l'utilisation d'un Nokia C3-00 comme d'un modem

Suite à une défaillance de mon précédent téléphone, je me retrouve avec un Nokia C3-00. Une petite recherche sur les Internets me livre cette page d’explication pour utiliser un téléphone Nokia comme modem. Alors, allons-y !

<endymion>
zsh/2 1045 % lsusb
Bus 002 Device 023: ID 0421:0399 Nokia Mobile Phones 
Bus 004 Device 002: ID 046d:08a2 Logitech, Inc. Labtec Webcam Pro
Bus 004 Device 003: ID 045e:0750 Microsoft Corp. Wired Keyboard 600
Bus 004 Device 004: ID 0461:4d62 Primax Electronics, Ltd HP Laser Mobile Mini Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
[jeu. 13/08/15 14:49 CEST][pts/6][x86_64/linux-gnu/3.9.6-gentoo][5.0.2]
<endymion>
zsh/2 1046 % sudo modprobe usbserial vendor=0x421 product=0x399

Une tentative de connexion plus tard, chez Free me donne :

<endymion>
zsh/2 1228 [1] % sudo wvdial -C wvdial.conf C3 Baud=115200
--> WvDial: Internet dialer version 1.61
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected.  Waiting for prompt.
~[7f]}#@!}!i} }2}!}$}%\}"}&} }*} } }#}$@#R?~
--> PPP negotiation detected.
--> Starting pppd at Thu Aug 15 11:24:23 2013
--> Pid of pppd: 29346
--> Using interface ppp0
--> local  IP address 10.146.159.100
--> remote IP address 0.146.159.100
--> primary   DNS address 212.27.40.244
--> secondary DNS address 212.27.40.245

Vous noterez que le remote IP address n’est pas valide. TOujours chez Free, pour remédier à cela :

<endymion>                                                                      
zsh/2 1041 % sudo ifconfig ppp0 dstaddr 10.64.64.64
[jeu. 13/08/15 11:24 CEST][pts/6][x86_64/linux-gnu/3.9.6-gentoo][5.0.2]
<endymion>                                                                      
zsh/2 1042 % sudo ip r a default via 10.64.64.64 

Et voilà !

November 09, 2013

Premier Samedi du Libredécembre 2013

Date : samedi 7 décembre 2013
Horaires : de 14h00 à 18h00
Lieu : Carrefour Numérique, Cité des Sciences et de l’Industrie, Paris

Pour une nouvelle installation ou pour des ajustements de votre distribution GNU/Linux Fedora, Mageia ou Ubuntu, venez nous retrouver le samedi 7 décembre 2013 au Carrefour Numérique de la Cité des Sciences et de l’Industrie de Paris. Les volontaires de ces associations ainsi que Parinux vous accueilleront avec grand plaisir et partageront leurs compétences avec vous.

Afin de profiter au mieux de votre visite nous vous invitons à vous inscrire en décrivant votre matériel et vos envies.

Rappel : la dernière installation débute à 16h30 !

Attention : avant de venir, pensez à sauvegarder vos données personnelles !

October 31, 2013

Vincent-Xavier JumelDe l'import d'un vserver dans OpenStack

Je continue ici mon travail personnel et associatif sur OpenStack. À titre personnel et pour l’April, j’utilise la technologie vserver de pseudo-virtualisation en espace utilisateur. Et que ce soit à titre personnel ou dans le cadre de l’April, je migre de vserver à OpenStack.

Pour la migration depuis vserver, voici une méthode qui peut se réaliser sur l’hôte OpenStack :

export VS_NAME=
mkdir /var/tmp/vserver2import
rsync -avudp root@vserver-host:/etc/vserver/$VS_NAME/vdir/ /var/tmp/vserver2import/
SIZE=$((`du -bs /var/tmp/vserver2import/ | cut -f 1`*15/10))

July 18, 2013

Vincent-Xavier JumelDu contrôle d'un afficheur à led tricolores avec un raspberry Pi

Position du problème

On désire afficher des chiffres sur un écran à LED, 16 par 32, tricolores. Ici, cet écran vient de chez HackSpark et se pilote via des librairies fournies par le vendeur. En l’occurrence, mon collègue désire en savoir un peu plus et contrôler plus précisément son affichage. Je lui propose donc mon aide.

On va donc piloter en Python, via le port série /dev/ttyUSB0 l’affichage. Le code présenté ici n’a pas vocation a être beau, il a juste vocation à être pédagogique.

Piloter l’affichage directement depuis une console clavier/écran

On se limite ici au choix de la couleur et à un affichage assez basique : allumé ou éteint. Mon collègue désire programmer lui même le reste de la logique.

Le vendeur nous informe que pour communiquer avec l’écran, il faut envoyer un premier octet dont la valeur doit être 2, puis un octet dont la valeur est 1, puis les quantités de rouge, vert, bleu, sur 3 octets pour chacune des leds, ce qui nous donne un tableau de 3x32x8+2=1538 octets. Ce tableau est initialisé avec bytearray de Python. On crée également un objet série ser=serial.Serial('/dev/ttyUSB0',baudrate=2000000) qui permettra d’écrire (lire envoyer) des données sur le port série de l’écran. Pour plus de lisibilité, j’ai séparé en deux fonctions les opérations d’allumage et d’extinction. Le code suit :

#!/usr/bin/python

import serial
from time import sleep
 
#Creation d'un objet serie
ser=serial.Serial('/dev/ttyUSB0',baudrate=2000000)
 
# Creation d'un tableau blanc
# Ce tableau d'octet contient un premier octet dont la valeur est 2 suivi d'un octet a 1.
tp=bytearray(1538)
tp[0]=chr(2)
tp[1]=chr(1)
 
def allumer():
  for i in xrange(2,len(tp),3):
    tp[i]=chr(00)
    tp[i+1]=chr(60)
    tp[i+2]=chr(40)
 
  ser.write(tp)
 
def eteindre():
  for i in range(2,len(tp)):
    tp[i]=chr(0)
 
  ser.write(tp)

allumer()
sleep(5)
eteindre()

Pour la suite, on désire commander cela à partir d’un téléphone en Wifi, ou par le réseau. Il faut donc permettre au RaspberryPi de communiquer de cette façon. En l’occurrence, ici on choisit arbitrairement lighttpd. Dans le dossier /var/www/ on rajoute un fichier index.html :

    <!doctype html>
    <html>
      <head>
        <meta charset="utf8">
        <title>Une page de démonstration pour le serveur web</title>
        <script src="http://blog.thetys-retz.net/post/2013/07/18/prototype.js"></script>
      </head>
      <body>
        <h1>Une page de démo</h1>
        <form>
          <input type="button" value="On" onclick="go('a')"
          style="font-size:200%;"></br>
          <input type="button" value="Off" onclick="go('e')"
          style="font-size:200%;">
        </form>
        <script type="text/javascript">
          function go(qry) {
            new Ajax.Request('test.py?q='+qry,{method: 'GET'}
            );
          }
        </script>
      </body>
    </html>

On n’oublie pas de télécharger Prototype.js qui nous permettra de très facilement concevoir la page web ci-dessus et l’appel discret à la page qui contient le code.

On ajoute un fichier exécutable test.py qui complète le premier code en Python :

# all of our code now lives within the app() function which is called for each http request we receive
def app(environ, start_response):
# start our http response
  start_response("200 OK", [("Content-Type", "text/html")])
  # look for inputs on the URL
  i = urlparse.parse_qs(environ["QUERY_STRING"])
  yield (' ') # flup expects a string to be returned from this function
  # if there's a url variable named 'q'
  if "q" in i:
    if i["q"][0] == "a":
      allumer() # Turn it on
    elif i["q"][0] == "e":
      eteindre() # Turn it off
 
#by default, Flup works out how to bind to the web server for us, so
#just call it with our app() function and let it get on with it
 
WSGIServer(app).run()

On n’oubliera pas d’enlever les 3 dernières lignes du code précédent.

copie_page_web.PNG

Pour que cette page soit pleinement fonctionnelle, on n’oublie pas de rajouter :

fastcgi.server = (
                ".py" => (
                        "python-fcgi" => (
                                "socket" => "/tmp/fastcgi.python.socket",
                                "bin-path" => "/var/www/test.py",
                                "check-local" => "disable",
                                "max-procs" => 1)
                        )
                ) 

et "mod_fastcgi", dans server.modules = (.

Sous Debian, et donc sous Rasbian, /dev/ttyUSB0 est gid: dialout. Le plus simple ici est de donner à l’uid: www-data la permission d’utiliser ce périphérique avec usermod -aG dialout www-data.

L’idée du serveur est très inspirée de Controlling a Raspberry Pi’s GPIO over the network de Dav’s bit o the web

Un portail très captif

La dernière étape consiste à créer un point d’accès : pour cela, on utilise hostapd et dnsmasq. Le premier sert à créer le point d’accès wifi et le second permet de distribuer une adresse réseau aux clients et de les rediriger systématiquement sur la page d’accueil.

August 05, 2012

Vincent-Xavier JumelDe l'itinérance avec une authentification LDAP

Je suis un quasi inconditionnel de L.D.A.P. (rfc2307) pour obtenir une authentification unique et uniforme sur toutes mes machines et pour tous mes services.

Jusqu’à présent, j’utilisais pam_ldap et nss_ldap avec plus ou moins de succès, en particulier moins dès que le réseau s’avère défaillant. pam_ldap s’inscrit dans la lignée des outils Unix qui ne font qu’une seule chose (et qui essayent de le faire bien), ce qui justement constituait un problème : l’absence de cache. Cependant, la société PADL développe aussi pam_ccreds et nss_updatedb, un moyen de cacher de « credentials » dans une base de données. La série d’outils remplit son rôle, mais semble dépassé, de l’avis d’un certains nombres de projets.

Fedora a développé depuis quelques temps un démon système pour les services et la sécurité : sssd. Ce démon est organisé de façon modulaire et prends en charge une base de données local, kerberos ou encore LDAP, avec un mécanisme de cache. L’outil est organisé à l’aide de programmes fonctionnant de façon modulaire :

16127 ?        Ss     0:00 /usr/sbin/sssd -D
16134 ?        S      0:00  _ /usr/libexec/sssd/sssd_be --domain LDAP
16135 ?        S      0:00  _ /usr/libexec/sssd/sssd_nss
16136 ?        S      0:00  _ /usr/libexec/sssd/sssd_pam

On ssd réponds aux fonctions suivantes :

  • fournir les noms d’usagers depuis un anuaire
  • authentifier les noms depuis un annuaire
  • cacher ses informations
La distribution de sssd comprend un fichier d’exmple situé dans le répertoire /etc/sssd/.

De plus, sssd est un outil raisonnable : celui ne permet d’utiliser un annuaire LDAP que si la connection à celui-ci est sécurisée et permet d’authentifier cette connexion avec un certificat et non un mot de passe.

July 19, 2012

Vincent-Xavier JumelDe l'authentification d'un appli avec oauth

Pfiou comme on dit ! Ça n’a pas été simple, mais j’y suis arrivé : enregistrer une application dans identi.ca, un script pour publier du contenu de façon automatique, parceque bon les opérations manuelles, c’est bien, mais parfois on oublie.

Tout à commencer avec la lecture de Getting Started with oauth2, identi.ca and Python auquel je vous renvoie. Il ne faut pas oublier de compléter avec Python - SSL Issue with Oauth2 sur StackOverflow.

Vous avez besoin de python-twitter, oauth2 et d’autres choses comme dev-python/certifi. Je vous livre en pièce joint un script qui devrait vous permettre de créer rapidement votre identification.

Ce qu’il faut retenir :

  • enregistrer son appli sur http://identi.ca/settings/oauthapps ;
  • lire la doc de oauth ;
  • créer sa requête de clef de consommateur ;
  • autoriser l’appli à utiliser votre compte ;
  • récupérer les jetons à partir de la clef d’authentification ;
  • publier.

Vincent-Xavier JumelDe l'envoi différré des courriels

Dans un article précédent, j’ai indiqué quels étaient les éléments clefs me permettant de lire et envoyer des mails de façon assez déconnectée. Au fur et à mesure d’une session de travail déconnectée, on envoie des mails, et on aimerait qu’ils soient stockés en attendant d’être envoyés dès que possible. La première solution était de lancer un postqueue -f en se connectant pour provoquer un vidage de la file d’attente. Cette solution nécessite d’y penser, ce qui est moins évident que de penser à synchroniser ses mails en réception. Le script suivant permet de répondre à cette problématique :

#!/bin/bash
if [ "$2" = 'up' ]
then
postqueue -f
postconf -e 'defer_transports='
postfix reload
else
postconf -e 'defer_transports=smtp'
postfix reload
fi

Il est à mettre dans /etc/NetworkManager/dispatcher.d/20-mail-sent.

Il ne reste plus qu’à rajouter une synchronisation automatique du répertoire =Sent. Néanmoins, celle-ci est moins évidente, puisqu’elle est spécifique aux utilisateurs.

June 15, 2012

Vincent-Xavier JumelDe la redirection du trafic vers une autre machine de votre réseau

Je présente ici une méthode pour rediriger le trafic vers une autre machine de votre réseau en utilisant les capacités de NetFilter, le parefeu du noyau Linux. Ce parefeu se manipule en utilisant l’outil iptables. Suite à la mise en place d’un lintop comme «frontend» IPv4, certains sites web hébergés dans le LAN n’étaient plus accessibles en IPv4. Je me suis donc penchés sur la question de la redirection de flux.

On commence par activer le passage IPv4 :

vincentxavier@linutop:~$ sudo sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1 

On intercepte le flux entrant (PREROUTING) et on l’envoie (-j DNAT --to-destination 192.168.0.1) vers la machine du réseau local.

vincentxavier@linutop:~$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1

On réintercepte le flux retour (POSTROUTING), provenant de la machine locale (-d 192.168.0.1) et on réécrit son adresse (-j MASQUERADE)

vincentxavier@linutop:~$ sudo iptables -t nat -A POSTROUTING -d 192.168.0.1 -p tcp --dport 80 -j MASQUERADE

Je me suis tardivement rendu compte que sslh permettait un accès en https, ce qui n’est pas forcément plus mal. Je dispose donc désormais des deux accès.

June 02, 2012

PeckUne seule ip

Niveau :      
Résumé : ip link add link eth0 vlan1 type vlan id 1

Je suis de retour !

Désolé pour le lag ... mais je réponds aux commentaires.

Problème

Aujourd'hui, un problème qu'on m'a posé récemment. Comment faire lorsqu'on a un parc de box (routeur wifi, machine embarquée, ...) et qu'on veut pouvoir à tout moment se connecter physiquement sur son port ethernet et la configurer en utilisant ip (par ssh, snmp ...).

La première solution est d'avoir une configuration réseau immuable sur ces machines ET de répertorier d'une façon ou d'une autre un identifiant unique pour chacune de ces machines qu'on peut alors faire correspondre à une ip. C'est assez contraignant et ça impacte fortement la configuration réseau des machines. Ça risque de nous empêcher de réutiliser ce port pour communiquer dans un réseau existant le reste du temps.

La deuxième solution serait d'utiliser un protocole type zeroconf pour configurer automatiquement le réseau lorsqu'on se branche, l'inconvénient est de réussir à le désactiver lorsque la machine se retrouve dans son réseau de destination qui n'utilise pas nécessairement zeroconf tout en le gardant actif pour le configurateur.

Je vous propose donc une solution différente : l'ip unique. Toutes les machines à configurer ont la même IP. C'est bien beau me direz-vous, mais comment fait-on pour éviter les conflits sur le réseau de destination ? Et comment fait-on pour que ces machines communiquent ensemble ?

C'est tout simple, on met cette IP sur un vlan prédéfini. Ainsi vous n'avez plus aucune contrainte sur la configuration réseau de l'appareil. Ce peut être une box en bridge ou en routeur, une machine physique avec un routage complexe, ou une machine configurée en dhcp.

Solution pour linux

Pour ajouter une interface réseau virtuelle associée à un vlan :

# le vlan 1 sur l'interface eth0 sera dans l'interface virtuelle vlan1 
$ ip link add link eth0 vlan1 type vlan id 1 

# ou, pour ceux qui n'aiment pas le couteau suisse, ip, il y a l'outil d'origine
$ vconfig add eth0 1 # pas le choix, l'interface s'appellera nécessairement eth0.1

Et il suffit de lui configurer une ip choisie en dur et c'est fini, vous pouvez mettre n'importe quelle configuration pour eth0 ...

$ ip addr add 192.168.254.254/28 dev eth0.1

Pour faire ceci en statique, sur une debian like il faut modifier /etc/network/interfaces en nommant l'interface à configurer eth0.1 Pour les redhat like il faut créer le fichier /etc/sysconfig/network-script/ifcfg-eth0.1

Tags:, ,

February 27, 2012

Vincent-Xavier JumelDu mail sur un système itinérant

Ce billet va tâcher de décrire la configuration de la partie mail de mon laptop, vu comme une machine d’appoint itinérante. En voici le cahier des charges succints :

  • Des connexions partout sécurisées
  • De la connection directe quand on est connecté
  • Du cache quand on n’est pas connecté
  • Du choix si on désire se connecter
  • Utiliser le plus possible les mécanismes standard (i.e. pas de VPN ni de tunnel ssh)

Mon laptop est équipé des logiciels distribués par Debian GNU/Linux me permettant d’avoir une confiance assez relative dans les logiciels que je vais utiliser par la suite. Il s’agit bien sûr d’une machine d’appoint utilisée dans des conditions de mobilité et je souhaite que cette machine synchronise automatiquement une partie des mails lorsqu’elle est en ligne et me permette d’envoyer les mails lorsque je suis hors-ligne.

Je passerais rapidement sur l’utilisation de Awesome, urxvt et GNU/Emacs comme outils principaux pour m’arrêter à la solution que j’ai retenu pour la gestion des mails.

J’utilise mutt, en conjonction avec muttprofile pour changer de profile entre mes différentes sessions. Pour cela, il suffit de disposer des directives suivantes :

zsh 1198 % ls -lh .mutt
total 16K
lrwxrwxrwx 1 endymion endymion   32 oct.  13 20:01 profile.active -> profile.endymion_network
-rw-r--r-- 1 endymion endymion 1,8K juil. 24 22:13 profile.endymion
-rw-r--r-- 1 endymion endymion  974 oct.  13 22:23 profile.endymion_network
-rw-r--r-- 1 endymion endymion 1023 juin  27 19:47 profile.vincentxavier
-rw-r--r-- 1 endymion endymion  995 oct.  13 22:23 profile.vincentxavier_network

Un de ces fichiers contient par exemple :

# NAME : imap://endymion@thetys-retz.net
# DESC : This profile display imap mailboxes for endymion@thetys-retz.net account.

source ~/.muttrc.commons

set folder="imap://mail.thetys-retz.net"      

source ~/.muttrc.folders

set imap_user="endymion"
set imap_pass=`~/.local/bin/netrc.pl mail.thetys-retz.net endymion`

# Mutt is able to deal with IMAP subscription, just enable it with
# this variable
set imap_check_subscribed="yes"                           
set imap_list_subscribed="yes"

# Mutt is able to send mail over various method, smtp being one of the
# methods. These setting allows you to customize it. Beware that some
# internet provider block port 25, so be sure to send on some other port.

set smtp_url="smtps://username@mail.thetys-retz.net"
set smtp_pass=`~/.local/bin/netrc.pl mail.thetys-retz.net endymion`

Lorsque je ne suis pas connecté, j’utilise la version suivante :

# NAME : endymion@thetys-retz.net
# DESC : This profile display synchronised folders for endymion@thetys-retz.net account.

source ~/.muttrc.commons

set folder="~/.maildir/endymion@thetys-retz.net/"

source ~/.muttrc.folders

mailboxes =INBOX =Sent =Brouillons =Admin

En ne précisant pas l’adresse du serveur smtp, Mutt va utiliser la version local de sendmail, qui chez moi est fournie par postfix. Et c’est là que l’utilisation de postfix va se révéler intéressante. Voici déjà une copie de ma configuration :

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/postfix/mail.thetys-retz.net.pem

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = tauceticentral.thetys-retz.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = thetys-retz.net
mydestination = 

relayhost = [mail.thetys-retz.net]:587

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

mailbox_command = 
mailbox_size_limit = 0

recipient_delimiter = +

inet_interfaces = loopback-only
inet_protocols = all

defer_transports = smtp

Cette configuration permet de stocker tous les messages envoyés au serveur local, via sendmail et de les mettre dans une file d’attente s’il s’agit de les envoyer par smtp. Dès que je suis connecté, il suffit de lancer (manuellement ou autmatiquement) un postqueue -f pour vider la file d’attente. Le relais se fait exclusivement via mon propre serveur de mail via une connexion chiffrée et authentifiée. Pour cela, il ne faut pas oublier le mot de passe SASL :

# destination                   credentials
[mail.thetys-retz.net]:587      remotemail:password

La configuration du système mail côté client a été jointe à ce billet.

Du côté serveur, il faut créer un utilisateur remotemail, qui servira pour les envois via un relais authentifié. Pour cela, il faut rajouter remotemail@thetys-retz.net reject au fichier /etc/postfix/local_part. Dans la configuration de postfix, il ne faut pas oublier d’ouvrir les protocoles smtps et submission dans /etc/postfix/master.cf sans oublier de rajouter check_recipient_access hash:/etc/postfix/local_part dans smtpd_recipient_restrictions

February 25, 2012

Vincent-Xavier JumelPremier samedi de mai

Comme tous les premiers samedis du mois, nous étions une vingtaine de passionnés de logiciels libres à nous retrouver au Carrefour Numérique de la Cité des Sciences et de l’Industrie pour faire découvrir GNU/Linux au public. Une dizaine de curieux sont passés nous voir, soit dans le but d’obtenir plus de renseignement sur l’utilisation de GNU/Linux au quotidien, ou pour savoir comment ils pouvaient améliorer leur expérience personnelle. D’autres sont aussi venu dans la ferme intention de repartir avec un ordinateur équipé d’une distribution GNU/Linux.

Afin d’offrir le plus de choix au public, les associations d’utilisateurs francophones ou français des distributions Ubuntu, Fedora et Mandriva Linux ont répondu à l’appel pour proposer leurs services techniques. Parinux était également présente avec son serveur d’installation.

Le prochain premier samedi aura lieu le 6 juin au même lieu

Vincent-Xavier JumelDu déploiement de sieve à l'April

Dans le cadre d’une utilisation des mails assez itinérante, je trouve utile qu’un certain nombre de traitements automatiques soient effectués direcetement par le serveur mail, plutôt que par des applications clientes. Et je préfère également utilisés des outils intégrés à mon agent de livraison locale : i.e. Dovecot. C’est pour cela que j’ai choisi sieve.

Dans ce billet, je rentrerais un peu plus dans les détails que la présentation plus que succinte d’un article précédent. On suppose que vous disposez d’un serveur Postfix qui ne joue quasiment aucun rôle ici, et d’un serveur de livraison du mail, en l’occurrence Dovecot. Je donne ici les informations pour la distribution Debian GNU/Linux que nous utilisons à l’April.

Il faut dans un premier temps demander à Postfix de faire délivrer les mails par le LDA de Dovecot : postconf -e 'mailbox_command = /usr/lib/dovecot/deliver -a "$RECIPIENT"'

La configuration du plugin sieve de dovecot se fait dans la section plugins en décommentant les lignes contenant le mot sieve. Il faut ensuite rajouter le plugin au plugin du LDA : mail_plugins = $mail_plugins sieve dans la section lda.

Enfin, on va chercher à donner une interface un peu plus sympa à ce système : ajouter managesieve aux protocoles et décommenter protocol managesieve Cette interface peut même être afficher au travers des plugins managesieve ou sievefilter de roundcube.

February 09, 2012

PeckStrate NTP

Niveau :      
Résumé : ntp.conf ; fudge

Pour vérifier le bon fonctionnement de votre démon ntp, vous êtes amené à taper la commande suivante qui liste les source de temps utilisées :

$ ntpdc -p

Cette commande met une étoile face à la source de référence utilisée pour la synchronisation. Le choix se fait entre autre en fonction du stratum de la source. Je rappelle que les serveurs NTP disposant d'une source de temps matérielle fiable (horloge atomique) ont pour stratum 1. Ceux qui se synchronisent sur eux, 2, et ainsi de suite.

Étant donné qu'il y a un grand nombre de serveurs publics de strate 2 et 3, vous devriez avoir accès à des serveurs de strate 4, ou au pire 5. Mais si le serveur a une strate plus élevée, il se peut que l'horloge choisie ne soit plus le serveur, mais l'horloge locale qui a une strate définie par défaut à 5 sur certaine distributions.

Et là c'est le drame, vous n'êtes plus synchronisés !

Pour résoudre ce problème, il y a plusieurs méthodes, se résumant toutes en la configuration des serveurs de temps :

# ntp.conf

# mettre l'option prefer sur le serveur voulu
serveur xxx.com prefer
# réduire la strate du serveur
fudge xxx.com stratum 4

# augmenter la strate de l'horloge locale
# 127.127 pour les horloges non réseau
# 1.0 pour l'horloge système
fudge 127.127.1.0 stratum 10
Tags:, ,

February 06, 2012

PeckVerrou virtuel

Niveau :      
Résumé : vlock; vlock -ns

Vous avez vu apparaître dans l'article sur tmux, un petit outil pour verrouiller le terminal, il s'appelle vlock.

Son unique fonctionnalité est le locker un terminal et de demander un mot de passe pour être débloqué.

Mine de rien ça lui fait quand même deux cas d'usage :

  • bloquer l'accès physique à une machine
  • bloquer l'accès virtuel à un shell

Virtuel

Avec la commande suivante :

$ vlock

Vous bloquez votre terminal en cours, et seul un mot de passe peut le débloquer. C'est utile essentiellement lorsque vous êtes connecté en ssh à distance sur une machine.

Physique

L'option -a permet de locker toutes les consoles locales (ctrl-alt-Fx, ou alt-Fx), en pratique il locke la console en cours et empêche d'en changer. Il faut donc déjà être sur une console locale.

Si vous êtes sur X, vous êtes aussi sur une console locale (remarquez le ctrl-F7 pour y aller). Mais le shell qui va lancer votre commande ne l'est pas, il est dans le terminal virtuel de xterm, rxvt, konsole et consorts. Pour locker toutes les consoles, il faut donc utiliser l'option -n qui ouvre une nouvelle console (avec openvt) avant de continuer avec l'option -a.

Enfin notez que l'utilisateur local a en général accès aux magic keys, et une de ces magic keys sert justement à tuer le processus en avant plan (alt-sysrq-k), par exemple pour garantir qu'il n'y a pas de keylogger. Si vous ne voulez pas vous faire tuer votre session par cette combinaison de touche vous pouvez utiliser l'option -s. C'est là qu'on voit que cette combinaison nommé SAK n'est pas si sécurisée que ça puisqu'elle peut être désactivée...

Donc je résume :

# en tant qu'utilisateur normal et seulement depuis une console texte
$ vlock -a
# en tant que root
$ vlock -sn

Quand le lancer

Et c'est là qu'est la difficulté, en toute logique le lancement doit se faire par le processus qui dispose du terminal à un instant donné, surtout dans le cas de blocage du terminal virtuel. La bonne solution est de le lancer après un certain temps d'inactivité, et seule l'application peut savoir quand le lancer. C'est donc à vous de trouver les settings spécifiques à l'application pour le faire.

Mon article précédent indique comment faire pour tmux, malheureusement je n'ai pas trouvé de solution pour bash qui ne propose que la variable TMOUT qui termine complètement le shell.

Tags:, ,

January 23, 2012

PeckScreen killer

Niveau :      
Résumé : tmux

Aujourd'hui tout le monde connaît et utilise screen. Miracle de la technologie, il permet de survivre aux déconnexions, de lancer des commandes longues sans avoir peur, de faire passer tous ses shells dans une seule connexion et on le trouve souvent associé à l'indémodable irssi.

Comme vous le savez peut-être screen n'est plus maintenu. Ayant un code un difficile à lire et à maintenir, des développeurs ont choisi lui faire un concurrent plutôt que de le reprendre.

Ce concurrent se nomme tmux. Il dispose de la plupart des fonctionnalités de screen et d'autres en plus. Comme vous le verrez, votre problème sera essentiellement de vous adapter aux nouveaux raccourcis. Pour le reste c'est tout bon.

Tmux dispose de presque toutes les fonctionnalités de screen sauf la communication par port série (rapport choucroute, toussa).

Commençons par le lancement :

# lancer un nouveau multiplexeur
$ screen 
$ tmux
# s'attacher à un multiplexeur existant 
$ screen -d -r
$ tmux attach

Les raccourcis :

  • Nouvelle fenêtre
    • screen : ctrl-a ctrl-c
    • tmux : ctrl-b c
  • Se détacher :
    • screen : ctrl-a d
    • tmux : ctrl-b d
  • Passer à la fenêtre suivante
    • screen : ctrl-a <espace>
    • tmux : ctrl-b n

Je dois dire que ça y est je suis passé entièrement à tmux, le mélange ctrl-a ctrl-b entre screen et tmux commençait à être difficile. A propos d'adaptation, j'ai eu une seule difficulté c'est de m'habituer au nouveau scrollback. Il n'est pas possible de le faire à la souris, comme dans screen avec l'astuce du termcapinfo. Remarquez, c'est plus propre car du coup il n'y a pas de mélange des bufffer de scrollback entre les différents terminaux. Donc la méthode propre dans tmux c'est ctrl-b suivi de pgUp et là vous êtes en mode copy (qui permet entre autre le scrollback), vous pouvez alors naviguer avec pgUp, pgDown ou les touches directionnelles. Et pour Revenir au mode normal, Esc tout simplement.

Dans un prochain article nous verrons comment changer la configuration de tmux, même si les valeurs par défaut sont plutôt bonnes.

Tags:,

January 22, 2012

Vincent-Xavier JumelDe la soumission à l'Agenda du Libre

Dans le cadre de la soumission d’événements se déroulant le premier samedi du mois, je me suis posé la question de générer automatiquement la liste des premiers samedis de tous les mois d’une année. La commande date de FreeBSD propose une option -v permettant rapidement d’obtenir d’autres dates, par addition. Ce n’est pas le cas de la commande GNU date. Néanmoins, on peu, en un ligne de shell trouver les premiers samedis d’une année :

for i in january february march april may june july august september october november december ; do for j in 0 1 2 3 4 5 6 ; do if [ "`date --date "1 $i 2012 + $j days" "+%A"`" = samedi ] ; then date --date "1 $i 2012 + $j days" "+%c" ; fi; done ; done

Dans le cadre de la soumission à l’Agenda du Libre, j’ai donc utilisé la commande suivante :

for i in february march april may june july august september october november december ; do for j in 0 1 2 3 4 5 6 ; do if [ "`date --date "1 $i 2012 + $j days" "+%A"`" = samedi ] ; then ./adl-submit.py --file premier-samedi.xml --start-date `date --date "1 $i 2012 + $j days" --iso` ; fi; done ; done

P.S. adl-submit.py se trouve sur la page de soumission d’événements. On y trouve également la description du format du fichier premier-samedi.xml

January 18, 2012

PeckNetwork grep

Niveau :      
Résumé : ngrep

I'm back ! Ça faisait longtemps ! Vous m'avez manqué.

J'ai quelques petits articles pour vous. Oui c'est vraiment la reprise, même si c'est pas encore du triple A.

Aujourd'hui ngrep. Ngrep est un pote de tcpdump, il sait utiliser les mêmes filtres que tcpdump et stocker les paquets dans un format pcap lisible par wireshark si besoin. Mais son intérêt principal est qu'il sait matcher le contenu des paquets.

Là où en tcpdump vous feriez :

$ tcpdump host 10.0.0.1 and port 80

Vous pouvez utiliser ngrep récupérer un paquet particulier :

$ ngrep 'GET' 'host 10.0.0.1 and port 80'

Dans les options les plus utiles on trouve :

  • -O pour sauvegarder les paquets et les analyser ensuite, par exemple avec wireshark
  • -x pour dumper la version hexadécimale du paquet (pratique pour un protocole binaire)
  • -X pour matcher sur la version hexadécimale du paquet (pratique pour un protocole binaire)
  • -K1 pour tuer la connexion en envoyant un paquet RST à la source du paquet en question (pas de garantie 100% avec cette méthode :)

Et un exemple pour la route pour couper la connexion de celui qui dirait du mal de vous sur un serveur irc :

$ ngrep -K1 'peck sux' 'dst 10.0.0.1 and dst port 6667'
Tags:,

Vincent-Xavier JumelFOSDEM 2012

FOSDEM, the Free and Open Source Software Developers' European Meeting

FOSDEM will be a great time to gather what are ongoing developement in FLOSS world.

November 16, 2011

Vincent-Xavier JumelPont filtrant

Une configuration réseau un peu particulière nous interdisant l’utilisation d’un routeur classique, il est devenu nécessaire de créer une passerelle. Je vais donc vous détailler le mode opératoire



Topologie du réseau

  • Un accès internet via une FreeBox v4
  • Un PC (Windows XP) a l’étage CPL et filaire
  • Un PC (dual boot Debian / Windows 98 SE) à l’étage CPL
  • deux portables filaire et WiFi
  • un PC au rez-de-chaussée filaire et WiFi

Contraintes matérielles

Les murs de la maison font "cage de Faraday", donc la portée du WiFi est rapidement réduite. En 2003, nous avions donc opté pour la technologie CPL (Courants Porteurs en Ligne). Puis le nombres de PC augmentant, nous en avons utilisé certains en WiFi. Néanmoins, ne désirant pas investir sur des PC de 1998, nous avons gardé le CPL. Néanmoins il fallait donner une position plus centrale à l’emetteur WiFi (la FreeBox). Nous avons donc décidé de remplacer une passerelle sous Windows XP par une passerelle sous Linux.


Le clickôdrome de Windows™ fournit un moyen de relier deux interfaces pour n’en former plus qu’une (différent du partage de connexion), j’espérais bien que les distributions GNU/Linux me fourniraient la même chose, mais avec une interface plus conviviale !


Pour des raisons d’habitude à l’époque, j’ai choisi une Debian/Sarge, quasi incassable. Cette distribution supportait encore la série 2.4 de Linux dont on verra la nécessité plus loin. L’idée générale est d’activer la fonction de pont du noyau. Cette fonction est activée dans le noyau fourni par les distributions « binaires », sinon, il vous faudra l’activer à la main en mettant CONFIG_BRIDGE=y dans le fichier de configuration du noyau [1].


En l’occurence le pilote devolo [2] ne fonctionne correctement qu’avec le noyau 2.4.27-3-k6. Il se trouve que celui-ci contient également le patch bridge.


# aptitude install bridge-utils installation de l’outil de configuration le pont.

# ifconfig eth1 0.0.0.0 promisc

# ifconfig dlanusb0 0.0.0.0 promisc

# brctl addbr monpont

# brctl addif monpont eth1

# brctl addif monpont dlanusb0

# ifconfig monpont 192.168.0.1 netmask 255.255.255.0
La dernière ligne permet de de pouvoir accéder à la machine par le réseau mais n’est pas obligatoire du tout. Le filtrage se met en place à l’aide de Iptables en utilisant l’interface monpont.

Bref après cela, un simple redémarrage du réseau sur les postes clients [3] et le tour est joué, la FreeBox se comportant comme routeur - serveur dhcp.





[1] Si vous ne savez pas de quoi je parle, je vous conseille de trouver un bon article sur les noyaux (en anglais kernel)


[2] je ne connais plus la licence de ce pilote


[3] ipconfig_all, /release et ipconfig_all, /renew sous Windows™ ou /etc/init.d/networking restart sous Debian



Merci à Tchesmeli serge pour son article sur Lea-Linux.org


Vincent-Xavier JumelDe l'auto-hébergement (du mail)

Je procrastinais sur l’écriture de ce cours depuis des mois, c’est maintenant chose faite. Vous pouvez donc télécharger un cours sur l’auto-hébergement du mail.

Les sources sont versionnées sous git : Voir la source ou ici.

Ce cours sera donné dans le cadre de la pollinisation du Loop et au moins lors de la prochaine Assemblée Générale de l’April.

Pour suivre ce cours, un certain nombre de pré-requis sont indispensables :

  • savoir utiliser un shell distant, et en particulier un éditeur de texte dans ce shell ;
  • disposer d’une machine accessible sur Internet ;
  • disposer d’un domaine complet (champ MX) ;
  • un peu de temps et de courage.

November 10, 2011

Vincent-Xavier JumelUbuntu Party Paris, c'est parti !

Demain matin à 11h, nous ouvrirons les portes de l’Ubuntu Party pour une nouvelle édition. Le programme de cette édition est en ligne sur le site dédié.

Cette année, je ne serais que responsable technique, en particulier pour les moyens matériels et pour les salles d’installation, en collaboration avec Coucouf et Libfy.

Dimanche à 15h, je vous convie à un atelier de découverte d’OpenStreetMap, animé par Chrisitian d’OpenStreetMap France.

N’hésitez pas non plus à faire un tour sur le stand de l’April.


Bon week-end à tous.

November 01, 2011

Vincent-Xavier JumelDu pilotage d'une FreeboxV6 depuis le terminal

Quelques soucis de connexions avec Free me poussent à devoir régulièrement redémarrer la Freebox. Celle-ci se trouvant au bout de l’appartement, je me connectais via l’interface web pour redémarrer l’engin. Il ne s’agit pas moins de taper un mot de passe, de regarder le statut et en fonction de celui-ci, de cliquer sur 3 liens différents. Il s’agit d’une tâche hautement automatisable.

J’ai donc commis ce script.

October 31, 2011

Vincent-Xavier JumelDe la migration de Gentoo

L’installation de Gentoo ne pose aucun problème dans un vserver, à part avoir un peu de temps devant soi. La migration des services en elle-même se fait à grand coup de rsync et tout se passe pour le mieux dans le meilleur des mondes. Pour preuve ce blog est désormais servi par la nouvelle machine.

Ce week-end, un peu le couteau sous la gorge (enfin, pas tout à fait non plus), je me suis enfin décidé à mettre en place de la colocation de serveur et à déplacer mon installation de Gentoo sur un vserver hébergé par Dedibox.

L’installation de Gentoo ne pose aucun problème dans un vserver, à part avoir un peu de temps devant soi. La migration des services en elle-même se fait à grand coup de rsync et tout se passe pour le mieux dans le meilleur des mondes. Pour preuve ce blog est désormais servi par la nouvelle machine.

October 27, 2011

Vincent-Xavier JumelDe l'hébergement de blogs

Ça y’est, j’héberge, sur la même instance dotclear, plusieurs blogs. C’est en fait d’une simplicité déconcertante. J’ai juste du rajouter

if ($_SERVER['HTTP_HOST'] == 'blog.thetys-retz.net') {
        define('DC_BLOG_ID','default');
}elseif ($_SERVER['HTTP_HOST'] == 'jumel.net') {
        define('DC_BLOG_ID','jumel');
}else {
        # Define your blog here
        define('DC_BLOG_ID','default');
}

au fichier index.php de mon installation. On pourrait faire plus subtil, mais ça me convient.

Ce nouveau blog est désormais disponible via http://jumel.net.

October 21, 2011

Emmanuel SeymanLa sécurité, Bugzilla et Debian

Pendant un certain temps, j'ai été l'un des développeurs d'un Logiciel Libre qui s'appelle Bugzilla. Ça reste l'une de mes contributions les plus importants (si ce n'est *la* plus importante) au monde du libre.

Il y a quelques semaines, on m'a signalé sur le canal IRC de Parinux le ticket #638705 de Debian. Celui-ci a été crée par Moritz Muehlenhoff (membre de l'équipe sécurité de Debian) demandant qu'on retire le paquet de bugzilla des dépôts Debian. Il explique dans son ticket que le paquet de Bugzilla que distribue Debian souffre de plusieurs failles de sécurité et que le mainteneur n'a visiblement pas l'intention de publier une version qui les corrige. Alexander Reichle-Schmehl intervient alors dans le ticket pour dire le logiciel a été supprimé dans la base de données.

J'ai informé les développeurs de Bugzilla de cette action (des fois, je me dis qu'il y a de gros problèmes de communication entre les distributions et les projets qu'ils distribuent). Globalement, tout le monde a semblé se réjouir de cette décision. Il y a maintenant plus de chance que les gens qui souhaitent installer Bugzilla sur Debian le fassent à partir des sources fournis par l'équipe Bugzilla plutôt qu'avec le paquet Debian. Ils auront donc un Bugzilla plus facile à installer (celui-ci de Debian ne marchait que dans certains conditions) et les personnes qui l'utiliseront ne partiront pas du principe que Debian gère pour eux mêmes la sécurité de leur installation.

Le 10 octobre, l'équipe de sécurité a publié le bulletin d'alerte correspondant aux failles de sécurité en question. Malheureusement, on peut y lire la mention suivante "Pour la distribution oldstable (Lenny), il n'était pas pratique de rétroporter les correctifs pour corriger ces bogues. Nous recommandons très fortement aux utilisateurs de bugzilla sous Lenny de mettre à jour vers la version de la distribution Squeeze.".

C'est dommage. Je vous avoue que, là, Debian baisse dans mon estime.

October 10, 2011

Vincent-Xavier JumelDe l'importance des AGs ou des réunions physiques type sprint

Vendredi et samedi dernier se tenaient à La Cantine une journée de présentation sur OpenStreetMap suivie de l’assemblée générale constitutive de l’association française OpenStreetMap France (OSM-FR). 
Au delà de la constitution de l’association qui marque un tournant décisif dans la vie de la communauté française de cartographes, ce moment a été l’occasion d’échanger, de découvrir d’autres personnes animées par la même passion et d’échanger sur les sujets qui nous tenaient à cœur. C’est aussi le moment de refaire le plein de motivation pour un projet en particulier.

Lire le communiqué portant sur la création

August 24, 2011

Vincent-Xavier JumelAjouter un bloc avec une image aléatoire sous Drupal 6 avec CCK

Je vais tâcher ici de décrire les étapes pour ajouter un bloc avec une image aléatoire sous Drupal 6 en n’utilisant que CCK.

Pour cela, il faut, dans l’ordre ou le désordre :

  • Créer une nouvelle vue de type nœud (node)
  • Limiter le nombre d’éléments à 1
  • Rajouter le champ (Field) « Contenu: image »
  • Mettre comme critère de tri (Sort Criteria) Random
  • Rajouter les filtres :
    • Node: Type = Image
    • Node: Publié
    • Taxonomie: Term contains 2011 si vous ne souhaitez que les images de 2011

Il faut ensuite rajouter un display de type « Bloc » pour qu’il apparaisse dans les liste des blocs disponibles.

Vous pouvez trouver ce bloc contenant une image aléatoire sur le site de Parinux

Je profite de ce post, pour rappeler qu’une explication texte aussi courte que celle-ci est plus efficace que les tutoriels vidéos qu’on peut trouver sur le net.

June 17, 2011

Vincent-Xavier JumelDu réseau à l'Ubuntu Party

Ce billet décrit par les différentes étapes qui ont amenés à la mise en place d’une machine à la cité des sciences et de l’industrie pour faciliter les install parties régulières ayant lieu dans leurs locaux. Si vous êtes juste intéressés par les différents fichiers de configuration, vous pouvez vous rendre immédiatement à la fin de l’article.

Un des intérêt de la cité des sciences et de l’industrie est que celle-ci dispose d’un réseau existant et d’un lien de qualité vers le reste d’Internet. Néanmoins, il ne s’agit que d’un lien de quelques gigabits qui peut rapidement être saturé, en particulier en cas d’utilisation intensive, ou si nous sommes basculés sur le lien de secours. Cette situation est fort peu agréable en particulier quand nous avons besoin d’accéder régulièrement au réseau Internet.

Depuis déjà quelques éditions, nous sommes conscient de la nécessité de disposer d’un réseau maîtrisé. Celle-ci passe par la gestion de certains éléments, comme l’attribution des adresses IP, le choix du serveur DNS et ce qui en découle l’utilisation de miroirs locaux, servis de façon non-intrusive pour l’utilisateur final.

Gardons en tête ce principe de ne pas impacter la façon d’installer. Autrement dit, nous n’irons ni modifier les sources de logiciel, ni modifier l’adresse des serveurs de noms utilisés par la machine. Ces contraintes imposent donc successivement que les entrées DNS correspondant aux archives Ubuntu doit pointer vers une machine locale. Il est donc nécessaire de maîtriser le serveur de nom. Pour que cela puisse se faire de façon transparente, il existe une condition supplémentaire : assigner nous même des baux d’adresses IP et en profiter pour annoncer nous même route et DNS par défaut. Ceci peut se faire en disposant de notre propre serveur DHCP. Ceci suppose également de ne pas rentrer en conflit avec d’autres serveurs, en particulier ceux de la cité des sciences et de l’industrie. Pour cela, nous disposons de notre propre plage d’IP sur un vlan dédié.

Rentrons un peu plus dans les détails :

  • les adresses IP sont attribuées via isc-dhcp-server ; le dns annoncé est un dns interne à notre vlan ; la passerelle annoncée permet de « sortir » sur internet ;
  • les noms de domaines sont résolus en adresses IP par bind, « mentant » sur la résolution de certains noms, comme fr.archive.ubuntu.com ;
  • les archives (et d’autres choses) sont servies par apache.

Lors de la mise en place de cette solution et lors des événements précédents, nous avons rajouté un certain nombre de service. En particulier, nous proposons un miroir de téléchargement pour les images des cédéroms, un service de boot « PXE » ainsi qu’un cache sur les sites web fortement consultés, comme doc.ubuntu-fr.org

En guise de note finale, vous trouverez le fichier Makefile de synchronisation des miroirs, ainsi que les différents fichiers permettant de dupliquer cette installation pour votre install party.

Si vous disposez de plusieurs interfaces réseaux, vous pouvez également utiliser le script de NAT suivant qui nous sert à Parinux sur notre machine portable, Idia, nommé d’après la précédente (Oups.)

Pour l’instant seuls les fichiers permettant de publier le miroir complet sur le réseau sont présent dans l’archive. Les fichiers feront certainement l’objet d’un billet spécifique.

PeckLire un flux SSL

Niveau :      
Résumé : tcpdump ssl ; ptrace ; ltrace

Vous attendez la suite de mon article sur ce qui passe par les oreilles d'un android ? Hé bien vous allez attendre encore un peu ...

Lorsque vous récupérez via tcpdump un flux SSL (au hasard du https), il est chiffré et c'est justement l'intérêt du SSL de vous empêcher de lire ce flux.

Mais si si vous maitrisez une des deux extrémités, il devrait être normal que vous puissiez lire ce flux. C'est pourquoi nous allons le faire.

Côté serveur

Dans le cas où vous maitrisez le côté serveur, il suffit d'ouvrir la trace tcpdump (sauvegardée avec l'option -s0 -w file) sous wireshark et de le configurer pour qu'il utilise la clé serveur pour déchiffrer le flux :comme ici et de choisir de suivre le flux ssl au lieu du flux TCP.

C'est simple et efficace.

Côté client

Maintenant si vous êtes côté client sans certificat client, vous êtes coincés. Et c'est là que j'ai une solution à vous proposer.

Il existe plusieurs moyen pour espionner vos processus, tout d'abord vous pouvez créer un wrapper autour de la lib SSL et utiliser LD_PRELOAD pour la charger avant le processus. C'est bien mais difficile à mettre en œuvre, surtout si le processus tourne déjà, je vous laisse explorer cette voie de votre côté.

La deuxième solution est d'utiliser ptrace pour espionner le processus. Techniquement complexe, cette méthode nous est grandement facilitée par l'outil ltrace.

Pour la suite je vais supposer que les services à espionner passent par openssl, mais rien ne vous empêche de faire la même chose avec gnutls.

Espionner un processus

C'est simple :

# vous le lancez directement : 
$  ltrace ma commande
# ou vous espionnez un processus qui tourne déjà 
$ ltrace -p pid

Ça vous montre le fonctionnement, mais c'est aussi illisible qu'un strace.

Espionner le SSL

Ajoutons quelques options pour trier ce fouillis :

$ ltrace -l /usr/lib/libssl.so.0.9.8 -s 20000 -e SSL_read,SSL_write

Et voilà, la liste des appels ! Mais ce n'est pas suffisant.

Ajoutons les lignes suivantes dans /etc/ltrace.conf (ou dans ~/.ltrace.conf) :

int SSL_read(addr,string[retval],int);
int SSL_write(addr,string[arg3],int);

On relance la commande et maintenant nous avons le contenu de la communication en clair.

Mais il y a un petit bug dans ltrace, string[retval] devrait couper les chaines de SSL_read en fonction de la valeur de retour, mails ne le fait pas.

Corrigeons cela avec un petit script de formatage et cette fois nous avons toute la communication en clair !

$ ltrace -l /usr/lib/libssl.so.0.9.8 -s 20000 -e SSL_read,SSL_write -p pid 2> /tmp/trace
$ perl -pe 's/(SSL_read.*?, ")(.*)(".*? )(\d+)$/$1.substr($2,0,$4).$3.$4/e' /tmp/trace | less
Tags:, ,

June 01, 2011

Vincent-Xavier JumelSprint admin sys April du week-end du 20 et 21 mai 2011

Une partie des administrateurs systèmes de l’April s’est réunie ce week end du 22 mai 2011 pour avancer sur un gros projet. En effet, un trop grosse partie de notre système d’information repose actuellement sur une machine historique de l’April, mescaline. Il a donc été décidé il y a fort longtemps de séparer le maximum de services de cette machine, ce projet est désormais en bonne voie.

En effet depuis la migration Drupal, celui-ci est installé sur une machine distincte. Le reste des services est encore gérés par mescaline (la fameuse machine) sont le mail (outil essentiel de l’activité de l’April), les listes de diffusions et la gestion des adhérents. C’est donc un gros chantier qui nous attends.

Réunis dans une maison de campagne, dans une banlieue lointaine, de l’autre côté du périphérique, benj, theo, Léobaillard, PoluX et moi-même étions présents, dès le matin 10h, heure de Moscou.

Admins sys en plein travail

Après l’exposé brillant du plan de migration par benj, nous nous sommes attachés à mettre en place la nouvelle infrastructure destinée à accueillir nos mails et nos listes de diffusions. Par consensus approximatif, nous avons opté pour Postfix, dovecot et roundcube pour le mail, spamassassin et amavis pour la gestion des spams, sympa pour la gestion des listes.

Alternant de longues sessions de travail d’environ 3h par des pauses tarots, billard ou barbecue, nous avons tenus jusqu’à dimanche soir 22h, heure de Paris. Nous disposons désormais d’une nouvelle plateforme de mail+listes sur laquelle nous sommes en train de chasser tous les bugs encore existants. Un prochain WE servira à continuer la migration d’un certain nombre d’applications web vers d’autres machines et à continuer la migration du mail vers cette nouvelle plateforme.

Une des pauses

May 17, 2011

Vincent-Xavier JumelDu partage de page de manuel

Dans le cadre d’une utilisation un peu avancée d’Ubuntu, il est fréquent de faire des références au manuel, accessible avec la commande man. Il est parfois bien pratique de pouvoir visualiser ses pages de manuels ailleurs que dans un terminal et c’est l’objectif de Dustin Kirkland à l’aide de Ubuntu Manpages.

Un des inconvénients de ce site résidait dans la longueur des URI pour accéder à une page particulière. Ce problème est désormais résolu. Le même Dustin vient de créer un réducteur d’URL spécialisé : http://manpg.es. Les pages de man sont désormais accessibles via http://manpg.es/bash.

P.S. Une bonne façon d’indiquer une page de man consiste à rajouter le numéro de section : bash(1).

Édition

Depuis hier, comme indiqué dans un nouveau billet, ce service supporte la numérotation des pages : stty(1). Sans cette précision, manpg.es essaie de deviner les intentions de l’uitilisateur, conduisant à des suprises.

May 05, 2011

Vincent-Xavier JumelDu partage d'informations

J’ai passé quelques heures à contribuer sur OpenStreetMap, le site de cartograohie sous licence libre (CC-BY-SA et peut-être ODbL 1.0 dans le futur). J’y ai redécouvert un certain nombre de projets intéressants et je me suis remotivé pour organiser un atelier sur le sujet dans le cadre des Premiers Samedis du Libre organisé par Parinux à la cité des sciences et de l’industrie, un lieu universcience etc.

J’ai en particulier retrouvé Refuges.info qui se propose de lister les refuges dans les parcs naturels régionaux français de montagne. Vous pouvez en particulier lire sa licence et ses restrictions qui me semblent assez raisonnable.

Pour répondre à une question posé lors d’une présentation il y’a quelques semaines, j’ai trouvé également une information. Certains utilisateurs proposent d’utiliser une île du l’Antartique comme bac à sable. J’aurais à présent une première réponse à fournir aux personnes qui se craignent d’endommager les données de la base.

April 25, 2011

Emmanuel SeymanFedora et FVWM

Ceux qui suivent l'actualité de Fedora savent que la Beta de Fedora 15 est sorti la semaine dernière. J'ai profité du weekend pour l'installer sur deux PC. L'un d'entre eux n'ayant pas de cartes graphique digne de ce nom, je me suis retrouvé avec le mode fallback de Gnome. Passons rapidement, celui-ci ne fera l'affaire pour personne, j'en ai peur.

L'installation sur le portable s'est mieux passé. J'ai alors pu profiter pleinement des nouveautés de Fedora 15. Firefox 4 permet (enfin) de voir les vidéos Youtube sans avoir à installer Flash sur son ordinateur, Gnome 3 (dont je redoutais qu'il soit plus difficile à prendre en main que ça). Le ventilateur du portable s'emballant au bout d'une heure d'utilisation, je n'ai pas pu tester longtemps mais ça semble prometteur.

L'actualité a aussi été marquée ces derniers temps par la sortie de FVWM 2.6.0. Pour ceux qui ont commencé à utiliser les distributions GNU/Linux après la sortie de les versions 1.0 de GNOME et KDE, ça marquera un retour aux sources. Avant Gnome et KDE, FVWM était le gestionnaire par défaut des distributions, en raison de sa très grande configurabilité.

J'ai donc pris les archives disponibles sur fvwm.org, compilé des rpms et j'ai installé sur ma machine. Force est de constater que très peu de choses ont changés en 10 ans (la sortie de 2.4.0 date de 2001). La configuration par défaut est toujours aussi brut et FVWM est toujours (voire encore plus) configurable. Je sens que je vais l'installer sur les machines qui n'ont pas la configuration matériel nécessaire pour Gnome 3.

L'autre nouveauté du projet, c'est l'abandon du cycle de développement actuel (on me souffle dans l'oreillette que 10 ans entre chaque version d'un logiciel, c'est long). Les développeurs de FVWM préparent une migration de CVS à git pour gérer leur code source et comptent utiliser les fonctionnalités de git pour développer les fonctionnalités majeures dans des branches spéciales. Une fois le développement d'une fonctionnalité terminé, on fusionne la branche principale avec la branche de développement et on se retrouve avec une version stable de FVWM qui contient la fonctionnalité en question. Les fonctionnalités seront donc disponibles des que possible aux utilisateurs de FVWM.

April 11, 2011

Vincent-Xavier JumelInstalling Ubuntu in a school

Through Premier Samedi, our regular monthly-based meeting, someone asked me a question about installing Ubuntu in a classroom. I’m going to describe the installation.

The teacher have found some HP desktops, with 2GHz celeron processor, and 512 Mb of ram, quite decent computers for Ubuntu 10.04.

First of all, the network topology imposes the computer to be NATed, which is not such a bad idea, as we’ll see thereafter. I won’t describe Ubuntu Server installation process, since it comes straigthforward, and it have been done by the teacher himself. Thanks to the formation-debian doc, NAT instruction comes pretty forward. You just have to modify one line in /etc/sysctl.conf and add a /etc/iptables.up.rules pre-up in /etc/network/interfaces.

For the sake of simplicity, we have also installed a name server onto the NAT machine, which will act as a server. Since the pupils’ computers use static address, we added nameserver 192.168.0.254 to use this nameserver.

Ten machines are sufficient to raise interrogations about bandwidth usage, so apt-cacher was our solution. It just need a little tweak in the source.list file, which consist in remplacing lines by deb http://192.168.0.254:3142/apt-cacher/fr.archive.ubuntu.com/ubuntu/ lucid main.

Pupils shouldn’t care on which computer they are. NFS came as a solution. On the server, just had nfs-kernel-server, configure it on the localnet in /etc/exports:
/home/users 192.168.0.0/24(rw,sync,no_subtree_check) So easy! As users must have the same uid everywhere, I’ve written a small script (server version, client version) to automate the process. It simply reads a file which contains pupils name on each line, assuming names are different and creates the users, in the 10000-65536 range :-). The teacher should ask his pupils to change their password since default password is empty.

By now, every thing is done. Next step is to populate home directories with desktop links and stuff. Future plans involve dhcp, LDAP authentication, automounting of home users, etc.

If you have any question, just ask it.

Vincent-Xavier JumelFOSDEM 2011


FOSDEM, the Free and Open Source Software Developers' European Meeting

This year too, I’m attending FOSDEM. I’m a bit involved in something new : a common Ubuntu-be/Ubuntu-fr booth at FOSDEM. This have been a bit of planning since the 1st of Juanary, but I think every thing will go well.

Beside my Ubuntu-fr involvement, FOSDEM will be a great time to gather what are ongoing developement in FLOSS world.

I’m coming along with some friends, involved in differents community, and I’m looking forwar to meet again with those FrenchMoz guys and girls.

FOSDEM staff released a PDF version of their schedule. I’m planning to attend at least Why Political Liberty Depends on Software Freedom More Than Ever, Eben Moglen keynote and this year, the GPG keysigning with my 0x2E14CE70.

Vincent-Xavier JumelDe la modération rapide des mails «sympa»

Je modère des mails pour différentes listes gérées par Sympa, tout en utilisant Mutt comme MUA.

Mutt présente l’avantage de présenter les mails dans une interface ncurses tout en permettant une très grande souplesse dans les raccourcis pour gérer ses mails. La fonction push permet même de simuler des séquences de raccourcis. Il présente aussi l’avantage de passer le contenu d’un mail (ou d’une pièce jointe) à l’entrée standard d’un autre en utilisant le mécanisme des tubes (pipes) d’Unix.

Afin de valider les mails venant de listes gérées par sympa, j’utilise le code suivant :

#!/bin/zsh
# Vincent-Xavier JUMEL (c) 2010
# This work is released under the WTFPL-2
# <http://zoy.org/wtfpl>

# This script operate on mailboxes where sympa moderation
# request are deliverd.
# You shall pipe it from the base64-decoded message.
# You may add a binding to your muttrc such :
# macro index <F5> "<pipe-message>~/bin/sympa-request.sh ACCEPT"
# macro index <F6> "<pipe-message>~/bin/sympa-request.sh REJECT"

LINE=(`grep -E '^DISTRIBUTE .*$' /dev/stdin`)

ACTION=$LINE[1]
LIST=$LINE[2]
KEY=$LINE[3]

if [ $1 ] ; then 
        ACTION=$1
fi

echo "" | mail -s "$ACTION $LIST $KEY" sympa

Vincent-Xavier JumelOrgCamp ce week-end dernier

Ce samedi dernier, à l’initiative de Frédéric Couchet, se tenait le second OrgCamp (consacré à Org-Mode) parisien à la fondation Charles-Léopold Mayer pour le progrès de l’Homme.

Ce Barcamp a réuni aussi bien des utilisateurs chevronnés d’Emacs, comme l’actuel mainteneur Bastien, des utilisateurs et des personnes désireuses de découvrir l’outil.

Après une présentation par Bastien de son usage et des nouveautés, nous avons échangé sur nos pratiques, ainsi que sur nos fichiers de configuration.

Ivan nous a présenté GTD et sa mise en œuvre à l’aide de GNU/Emacs

Nous nous sommes ensuite séparés en groupes de travail :

N’hésitez pas à nous rejoindre sur #org-mode-fr ou à s’abonner à la liste de développement/discussion.

April 08, 2011

Vincent-Xavier JumelDe la soumission en ligne de commande

J’ai commencé à utiliser Redmine pour mes «besoins» personnels, et plus j’avance, plus je trouve ça cool. Une des fonctionnalités assez cool est la possibilité de pouvoir créer/éditer les bugs depuis son client mail. Et j’avoue qu’un des clients mails que j’utilise régulièrement, du moins pour l’envoi, est mail. Ainsi,

echo "Project: courscli\nTracker: Evolution\nAssigned To: <user>@<domain.tld>\n" | mail -s fdisk redmine

vous permettra de créer une tâche dans le projet courscli, sur le tracker Evolution et de l’assigner à cette adresse mail.

J’en ai profité pour créer autant de tâches (évolution) que j’avais d’idée à aborder dans mon cours sur la ligne de commande, histoire d’éviter d’en oublier et de pouvoir faire le tri plus tard.

Pour les gens oublieux, voici un petit résumé :

  • l’adresse d’expédition (From:) doit correspondre à un compte redmine
  • les destinataires (To: & Cc:) seront ajoutés comme surveillant la tâche
  • le sujet (Subject:) définira le titre d’une nouvelle tâche, ou contiendra le numéro de la tâche à éditer entre []
  • les fichiers joints seront ajoutés en commentaires
  • on peut rajouter d’autres informations :
    • Project: identifiant du projet
    • Tracker: nom du tracker
    • Category: nom de la catégorie
    • Priority: priorité
    • Status: Statut
    • Assigned To: adresse mail
    • Custom Fields

Ce billet est librement inspiré de cette antisèche, qui m’a permis de découvrir également un projet d’intégration Redmine-sympa.

February 23, 2011

Vincent-Xavier JumelDe l'installation d'Ubuntu par un instit

Attention, il s’agit d’un billet dont le texte m’a été proposé et que je n’ai que relus et mis en forme. Il est issu du travail mené par un instituteur de CM1 à qui j’ai filé un coup de main pour l’installation et la mise en réseau de postes sous Ubuntu.

Préambule

Ubuntu a ceci de formidable qu’elle permet de faire découvrir gnu/linux à des gens gavés de zindozs(R) pendant 20 ans sans trop les bousculer au départ… Après , on (on, c’est moi, mais aussi, je l’espère de plus en plus de personnes) se pose des questions sur les enjeux politique du logiciel libre.

Ensuite, on se dit qu’en tant qu’enseignant, on se doit de motiver ses élèves à l’utilisation de ces logiciels libres pour contribuer à les sortir de la consommation passive vers laquelle les publicitaires, ainsi que la majorité du champ médiatique les pousse.

Ensuite, on s’intéresse à la ligne de commande et on se rend compte que c’est un outil qui semble bien plus puissant et efficace que l’interface graphique… Et puis là, tout se complique (c’est qu’en 20 ans de windoz, on a pris l’habitude de ne pas vraiment comprendre ce qu’on faisait)

A l’instar d’un enfant de CP, on déchiffre une petite majorité des lignes de commandes qu’on voit (merci à la commande « man »), mais ça devient tout de suite très laborieux d’écrire par soi-même dès qu’on cherche à sortir du basique (meuh non, pas du basic!!)…

Je tiens donc à remercier Vincent-Xavier Jumel (parrains Linux, http://parrains.linux.free.fr/) pour son aide, sans qui le réseau de la classe n’aurait sûrement pas pu être mis en place : j’aurais peut-être fini par réussi à « NATter » les ip des ordinateur-clients, mais ne serais sûrement pas allé plus loin… Ou alors au bout d’un temps hallucinant °°°[:]o)

Introduction

Les raisons de la rédaction de cette page découlent de ce qui précède :  je pense qu’il faut donner les moyen à quelqu’un de motivé par l’idée, mais qui n’a pas envie de passer dix-mille plombes à organiser son réseau, de le faire en suivant une recette de cuisine. Ça permettra aux personnes qui le désir de fournir un réseau de bonne qualité à leur public, sans trop s’emmerder. Autrement dit, à dépasser la nécessité de maîtriser les prérequis du tutoriel, sauf le dernier point (Il ne faut pas abuser quand même:-)

 http://doc.ubuntu-fr.org/tutoriel/installation_configuration. Ces prérequis étant : 

  • Bases de l’utilisation de Linux (ligne de commande)
  • Connaître les bases de l’administration d’un réseau
  • Avoir déjà utilisé et configuré les logiciels installés
  • Avoir déjà configuré un serveur
  • Préparez matériellement votre serveur : je vous conseille de le mettre dans sa configuration normale (c’est-à-dire avec les deux cartes réseaux) car la détection automatique de l’installateur vous sera très utile.


S’il est vrai que du côté eth0 du serveur (la carte réseau accédant à internet), tout s’est fait automatiquement (j’en remercie les développeurs), de l’autre côté (le réseau interne), ce fût plus laborieux.

La partie technique

DESSIN DU BRANCHEMENT : clients->hub hub->serveur serveur->internet 
Côté ordinateurs-clients.
Il y 2 fichiers à éditer : pas de panique, tout est expliqué en détail.
NB : Les ligne commençant par # sont des commentaires non pris en compte par le système et ceci dans tous les fichiers que nous allons configurer.

Édition du fichier /etc/network/interfaces
taper dans le terminal : sudoedit /etc/network/interfaces

On ne touche pas aux lignes concernant « lo », on saute une ou deux lignes (c’est plus agréable à relire) et on écrit ce qui suit en remplaçant x et y par des nombres compris entre 0 et 253 (dans la mesure où y=254 a été choisi comme adresse ip de la carte réseau du serveur, et 255 pour le broadcast, on verra plus tard ce que c’est)
En fait, en informatique, lo ne veut pas dire lutte ouvrière mais loopback (soit boucle vers l’arrière… Un looping ? Tout cela ne me paraît pas très clair:-) 
eth0 représente la carte réseau et donc après les bidules écris au sujet de lo, on saute une ligne et on écrit :

#On laisse les lignes « lo » qui ressemblent à ça (et si jamais ça ressemblait à autre #chose, on ne touche pas non plus:-D :
auto lo 
iface lo inet loopback 
#on ajoute ça : 
auto eth0
iface eth0 inet static
address 192.168.x.y 
netmask 255.255.255.0
gateway 192.168.0.254
network 192.168.0.0 
broadcast 192.168.0.255

Explications :

auto eth0

# ça doit vouloir dire que la carte réseau est allumée et/ou prise en compte par le système.

iface eth0 inet static

# Là, on explique que la carte réseau à une adresse ip fixe.

address 192.168.x.y 

#(où x est le même nombre pour tous les ordinateurs du même réseau local et y le numéro qui identifie chaque ordinateur du réseau local : il est donc différent pour chaque ordinateur (OU CHAQUE CARTE RÉSEAU MAIS JE NE VEUX PAS EMBROUILLER LE LECTEUR). X et Y sont des nombres entiers compris entre 0 et 255)

netmask 255.255.255.0

#ce qui signifie au bidule qui sert à router (faire circuler) les données sur le réseau, qu’il ne doit s’occuper que du dernier chiffre i.e. y et ne pas s’emmerder à perdre du temps à regarder les autres n° : en diminuant les calculs, j’imagine qu’on accroit la performance du système.

gateway 192.168.0.254

#là, c’est pour dire au bidule qui fait circuler les données que quand on veut sortir sur un autre réseau ou partager avec les autres, le système envoie envoie les données (ou requêtes?) sur la carte eth1 du serveur, ce dernier étant censé se débrouiller avec ça pour s’occuper de la suite (ie de faire fonctionner le réseau)

network 192.168.0.0 

#là c’est pour expliquer à la machine qu’il y a un réseau qui s’appelle 192.168.0.y autrement dit que les machines ayant une adresse ip de la forme 192.168.0.y font partie du même réseau.

Broadcast 192.168.0.255

#À VÉRIFIER : Là, c’est pour raconter à toutes les cartes réseau qu’on peut envoyer un même signal (paquets de donnés) en même temps à toutes les machines. 


Édition du fichier /etc/resolv.conf
Taper dans le terminal : sudoedit /etc/resolv.conf
À la fin du fichier, taper :
nameserver 192.168.0.254
Explication :
#On raconte au système que le serveur par lequel tout va passer pour les connexions se trouve à l’adresse ip qu’on a inscrite.
Pour la partie réseau sur les ordinateurs clients, le travail est fini. Nous reviendrons travailler sur ces ordinateurs-client plus tard, pour y ouvrir les comptes utilisateurs.

Côté serveur

Il semble qu’on puisse aussi installer aussi pour le serveur une version DÉBIAN. Ça fait moins grand public qu’Ubuntu et donc plus chic pour frimer dans les cocktails… Je crois que je vais enlever cette remarque:-) 
Installation.
Installation de ubuntu server 10.04 (version LTS=Long Term Support) disponible ici : http://www.ubuntu.com/server/get-ubuntu/download
Choisissez 32 ou 64 bits, en fonction de votre CPU.
C’est plutôt sympa, (presque) tout est automatique : 
Donc, On branche tout : carte réseau eth0 vers internet et carte réseau eth1 vers le SWITCH du réseau interne. (eth« nombre »= nom des cartes réseau)
NB : à l’installation, choisir la carte réseau qui va vers internet (si elle ont toutes les 2 le même nom (même matériel), essayer config automatique sur une puis l’autre, ça permettra de trouver celle qui est reliée à internet (Si les cartes ont des noms différents, c’est plus facile, sinon, ou si vous ne savez pas retrouver quelle est la carte réseau qui est connectée à Internet, tester l’une après l’autre la carte qui « passe », « l’installation » trouvera toute seule comme une grande).

Formatage en LVM, ça permet d’ajouter des disques plus tard sans trop s’emmerder paraît-il (la documentation me paraît encore un peu ésotérique, on verra plus tard). Là aussi, ça se fait tout seul.
Je n’installe aucun paquet en plus, on verra plus tard (avec apt-get dans mon cas, mais on peut utiliser aussi aptitude… aptitude dont tu m’as déconseillé l’utilisation au profit d’apt-get).

Un petit reboot sur le disque dur (dans le bios, mettre option démarrage avec disque dur en premier) et on commence à configurer le serveur : pas de panique, tout est expliqué dans le moindre détail :
1. Réinstalation d’Iptables Était-ce nécessaire ?
2. Édition de 2 fichiers.
3. Utilisation d’un fichier de configuration d’IPTABLES (ici:  http://formation-debian.via.ecp.fr/firewall.html)

Réinstallation de IPTABLES :
Dans la console, taper :
sudo apt-get purge iptables
sudo apt-get install iptables

Téléchargement et « installation » du fichier iptables.up.rules (de votre firewall)
Téléchargement : taper dans le console :
wget http://formation-debian.via.ecp.fr/fichiers-config/iptables.up.rules
sudo cp iptables.up.rules /etc/

Édition du fichier  iptables.up.rules
Taper : sudo nano /etc/iptables.up.rules
Lire ce qui est écris et choisir les option en effaçant des # en début de lignes. Ne pas oublier d’effacer le # de la ligne et de remplacer.
########################
# Partage de connexion #
########################
# Décommentez la ligne suivante pour que le système fasse office de
# routeur NAT et remplacez « eth0 » par le nom de l'interface
# connectée à Internet.
-A POSTROUTING -o eth0 -j MASQUERADE
Ne pas oublier de modifier le fichier /etc/sysctl.conf pour y rajouter :
net.ipv4.ip_forward=1

Édition du fichier /etc/network/interfaces (sudoedit /etc/network/interfaces) :

#lo et compagnie, vous devez commencer à être habitués ça donne un truc qui ressemble à ça :
auto lo 
iface lo inet loopback 
#Carte réseau connectée à internet :
auto eth0 
iface inet dhcp 
#carte reliée au HUB/SWITCH, i.e. celle qui s'occupe du réseau interne :
#On peut noter qu'elle n'a pas de gateway (passerelle) puisque c'est elle la passerelle et que c'est 
#le noyau du système qui va gérer le passage des donnés de eth1 vers eth0 et internet.
auto eth1
iface eth1 inet static
address 192.168.0.254
netmask 255.255.255.0
network 192.168.0.0 
broadcast 192.168.0.255

Suite dans un prochain numéro


Vincent-Xavier JumelSprint d'administration système à Parinux

Les administrateurs de Parinux se sont réunis dimanche dernier pour trier et résoudre les bugs présents dans le SI de Parinux. Étaient présent chez Emmanuel Seyman, que nous remercions tous pour son accueil, Aurélien, Paul, notre hôte et moi-même. Laurent, développeur Dolibarr était virtuellement présent via IRC.

Réuni autour de pizza, chips, café et Orangina™, nous avons ramené la liste des bugs à celle-ci. Le graphique suivant montre que nous avons surtout corrigé des bugs concernant le site web et le système de sauvegarde, invalidant par le passage des bugs dans d’autres domaines.

N’hésitez pas à rapporter d’autres bugs sur notre bugzilla.

November 25, 2010

Vincent-Xavier JumelDans la série astuce

Tout frétillant, tu regardes l’annonce de la sortie de la dernière release de ton WM préféré. Néanmoins tu veux le tester rapidos avant de découvrir que c’est pleins de bugs et à peine utilisable.

La première solution est d’utiliser un liveCD soit en rebootant la machine, soit en utilisant les capacités de virtualisation. Malheureusement tu n’as pas de chance, tu ne peux pas éteindre ton poste et qemu mets deux heures avant de se lancer !! Tu te dis que tout est perdu et qu’il te faudra attendre des retours d’utilisateurs.

Eh non, il existe une solution élégante qui consiste à utiliser les capacités de client/serveur de X : xinit /usr/kde/3.5/bin/startkde -- /usr/bin/Xnest :1

Bien sur, tu peux te servir de cette astuce pour forwarder un bureau complet, ou pour faire des choses encore plus puissante, en utilisant la connectivité de X ! Pour cela, je te renvoie à X(7) et xinit(1)

November 11, 2010

Vincent-Xavier JumelDu statut de membre

Depuis la semaine dernière, ma candidature en tant qu’Ubuntu Member a été accepté. Il s’agit d’un statut de reconnaissance pour le travail effectué, mais je compte continuer ce que je faisais déjà pour la communauté Ubuntu.

Vincent-Xavier JumelDu partage d'un thème beamer pour Ubuntu

J’ai pesté à de nombreuses reprises contre l’absence d’un thème beamer pour Ubuntu. j’ai fini par prendre le taureau par les cornes, la doc de beamer dans une main, les recommandations de la Design Team de Canonical dans l’autre et j’ai mis les pieds sur le clavier.

Après un certain nombre de tâtonnements, je suis en mesure de vous présenter un thème, que vous pouvez «admirer» dans le cours que je donnerais avec Coucouf lors du prochain week-end de découverte Ubuntu parisien.

Si tout se passe bien, je co-animerais avec des développeurs Fedora une session sur l’utilisation et la personnalisation de Beamer lors du prochain premier samedi du libre qui sera également l’occasion de revenir plus en détail sur la distribution Fedora.

Vous pouvez télécharger le thème situé en annexe et l’installer dans votre répertoire TeX personnel. Ceux qui le souhaitent peuvent aussi regarder du côté de Wu-beamerstyle.

Vincent-Xavier JumelDe l'authentification par clef ssh avec un home chiffré sous Ubuntu

Si vous avez suivi les conseils du blog de Rom1v sur le chiffrement de votre dossier utilisateur sous Ubuntu, vous vous êtes certainement rendu compte que vous ne pouviez plus vous connecter à votre compte en utilisant votre clef ssh, ce qui semble normal, puisque celle-ci est justement stockée dans votre répertoire chiffré.

Heureusement, on trouve de tout sur le Net, et en particulier un contournement possible. Comme le billet est en anglais, je me contente de reproduire les conseils donnés :

cd /
/sbin/umount.ecryptfs_private
chmod 700 $HOME
# I left it at 700 as ~/.Xauthority needs to be written for X11-Forwarding
mkdir -m 700 $HOME/.ssh
echo $YOUR_PUBLIC_KEY > $HOME/.ssh/authorized_keys

Attention, l’utilisation de cette astuce n’est sérieusement envisageable que pour une clef ssh sûre, avec une phrase de passe au moins aussi solide que votre propre mot de passe.

November 02, 2010

Vincent-Xavier JumelImporting Ubuntu Font Family in LaTeX

Along with the Ubuntu Community Theme, I’d added ubuntu font to my LaTeX installation. Just get the Ubuntu Fonts Family, from fonts.ubuntu.com , unzip the file and then run

autoinst --encoding=T1,OT1 --verbose Ubuntu-BI.ttf Ubuntu-B.ttf Ubuntu-I.ttf Ubuntu-R.ttf
mkdir -p ~/.texlive2009/texmf-var/tex/latex/Ubuntu/Ubuntu/
mv *.fd *.sty ~/.texlive2009/texmf-var/tex/latex/Ubuntu/Ubuntu/
texhash ~/.texlive2009/texmf-var/

You then just need to add \usepackage{Ubuntu} to your document.

September 06, 2010

Vincent-Xavier JumelDe l'édition de flux

Hier soir, Vivien me demandait quelles étaient les 5 astuces qui rendent mon système d’exploitation terrible. Après avoir présenté les possibilités de l’historique (history(3)), j’avais parlé de ce qui constitue un de mes éditeurs de choix : sed(1). Je vais en présenter rapidement quelques fonctions parmi les plus utiles :

  • sed -n 123p fichier : affiche la 123ème ligne d’un fichier.
  • sed -i.bak s/motif/remplacement/ fichier : effectue la substitution demandé, en gardant une sauvegarde sous la forme fichier.bak.
  • sed -i 12d fichier : efface la 12ème ligne
  • sed -i d/motif/ fichier : efface toute les lignes contenant motif.
  • sed -i -r 's/(^.*motif.*)/# \1/ fichier : commente les lignes contenant motif.
  • sed -n 148,150s/sd/hd/p fichier : devinez :)

Voilà :)

En fait, vous aurez remarqué que la substitution que je propose pour commenter les lignes n’est pas très élégante si appliquée à une partie d’un fichier (en utilisant les sélecteurs n,m. J’ai eu l’occasion de m’en rendre compte et je me suis décidé à opter pour cette substitution : sed -ir 's,^[^//](.*),// \1,'. Attention, dans mon cas de figure, le caractère permettant de mettre en commentaire étant /, pour éviter de l’échapper et de rendre le bazar illisible, j’ai opté pour l’utilisation de , comme séparateur.