02 juillet 2009

Grégory Colpart

JCE non limitées sous Debian

Les packages Debian de Java n’intègrent pas de mécanisme pour faciliter l’utilisation des versions non limitées des JCE (Java Cryptography Extension), utiles pour avoir des fonctions de chiffrement dites « fortes » (#466675). L’idée est de créer des diversions locales pour conserver les versions non limitées, même en cas de mise-à-jour :

# dpkg-divert --divert /usr/share/doc/sun-java6-jre/US_export_policy.jar.ori \
 --rename /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/security/US_export_policy.jar
Adding `local diversion of /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/security/US_export_policy.jar
 to /usr/share/doc/sun-java6-jre/US_export_policy.jar.ori'
# dpkg-divert --divert /usr/share/doc/sun-java6-jre/local_policy.jar.ori \
--rename /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/security/local_policy.jar
Adding `local diversion of /usr/lib/jvm/java-6-sun-1.6.0.12/jre/lib/security/local_policy.jar
to /usr/share/doc/sun-java6-jre/local_policy.jar.ori'

Attention, bien garder à l’esprit que si une faille de sécurité survient, il faudra mettre à jour manuellement ces fichiers.

21:45 par Gregory Colpart (Commentaires)

30 juin 2009

Carl Chenet

Reportbug 4.5


En cette splendide fin de mois de juin, le Reportbug nouveau est arrivé.

La version 4.5 est sortie le 29 juin avec son lot de nouveautés. L’auto-configuration propose désormais d’ajouter un serveur mandataire et l’interface en GTK2 continue de s’améliorer. En coulisse, beaucoup d’améliorations pour rendre l’application plus robuste suivi des habituels corrections de bugs. Merci encore à Sandro Tosi pour son gros travail de triage de bugs et d’ajouts de nos patchs à Reportbug.

Reportbug est toujours dans une bonne dynamique et s’évertue à rendre à la fois plus simple la saisie d’un nouveau rapport de bug pour l’utilisateur et plus efficace l’identification du bug pour les développeurs qui traitent les rapports de bugs.

Nous sommes friands des rapports de bugs sur Reportbug lui-même, n’hésitez pas à nous faire parvenir vos rapports de bugs/demandes de nouvelles fonctionnalités.

Ne vous laissez pas décourager par la première saisie de bug qui peut être relativement longue (15-20mn), vous contribuez ainsi à améliorer Debian. Et les prochaines saisies seront beaucoup plus rapides :)

17:15 par carlchenet (Commentaires)

Benoit Peccatte

En vrac (24)

Niveau : Star Star Empty Empty Empty
Résumé : perl -077pe ; ps kstart_time ; stty -echo ; expr ; bc -l ; tar c - | ssh tar x -

Petite pause.

Appli­quer une expres­sion régu­lière en une seule fois sur tout un fichier (comme s’il ne fai­sait qu’une ligne) :

$ perl -0777pe 's/expression/remplacement/'

Con­nai­tre les pro­ces­sus qui sont lan­cés “en ce moment”, par exem­ple pen­dant un script d’ins­tal­la­tion :

# listes les processus par date de création toutes les 2s
$  watch "ps kstart_time aux |tail"

Évi­ter d’affi­cher les mots de passe lors­que vous les deman­dez à l’uti­li­sa­teur dans vos scripts shell :

$ stty -echo
$ read password
$ stty echo

Faire un cal­cul en ligne de com­mande (ins­tallé par­tout, même sur les vieux unix) :

$ expr 1 + 5

Faire un cal­cul en ligne de com­mande, mais en mieux :

# à mettre dans votre bashrc de préférence
$ bcl() { echo "scale=2; $@" | bc -l ; }
$ bcl 1+2

Tar over ssh (rsync quoi) :

$ tar cf - /repertoire | ssh mamachine.net "cd /destination && tar xvf -"

12:42 par Peck (Commentaires)

25 juin 2009

Sylvain Derosiaux

Gérer ses templates pour Vim sans fichiers externes

Suite à un billet posté sur le site Informatique et liberté évoquant une solution originale pour gérer ses templates avec Vim, j’ai décidé d’améliorer un peu la technique en utilisant la puissance de ce superbe éditeur combinée à celle de sed.

Habituellement, pour chaque template, nous créons un fichier externe placé dans notre dossier personnel ~/.vim. Prenons l’exemple d’un template HTML dans ~/.vim/templates/html que l’on appellerait de cette manière dans notre fichier de configuration ~/.vimrc :

autocmd BufNewFile *.html 0r ~/.vim/templates/html

Logiciels utilisés :

  • Vim 7.2
  • GNU Sed 4.2

Le but du jeu est de centraliser toute notre configuration dans notre ~/.vimrc et donc d’y inclure nos templates. Le seul moyen, à ma connaissance, est de mettre ceux-ci en commentaires afin qu’ils n’interfèrent pas avec le reste de la configuration, il ne restera plus alors qu’à trouver le template adéquat, pour cela on passera par des marqueurs de début et de fin de template, voici donc ma solution :

" BEGIN HTML
" <html>
"     <head>
"         <title>Hello gnusquad !</title>
"     </head>
" </html>
" END HTML

autocmd BufNewFile *.html call Template('HTML')

function! Template(type)
    exe "0r !sed -n '/^\"\\s*BEGIN " . a:type . "$/,/^\"\\s*END " . a:type . "$/ {s///;/^$/d;s/^\" //;p}' $MYVIMRC"
    echo '--> INFO : Template ' . a:type . ' charge  --'
endfunction

Nous retrouvons donc en première partie le template mis en commentaire et délimité par les marqueurs « BEGIN HTML » et « END HTML », la deuxième partie appelle la fonction « Template » avec en paramètre « HTML » lorsque l’on crée un nouveau fichier ayant son nom correspondant au motif « *.html », la troisième et dernière partie contient la fonction « Template » proprement dite qui prend donc un paramètre servant à délimiter le template, on y trouve une jolie ligne de sed qui paraît obscure à première vue mais qui est très simple : on localise et ne traite que la partie contenue entre « BEGIN xxx » et « END xxx », on supprime ces deux lignes puis les lignes vides puis on décommente le template, le tout étant inséré dans le buffer courant. :)

Vous aurez donc compris qu’il est très simple d’ajouter de nouveaux templates : il suffit juste que le paramètre passé à la fonction « Template » corresponde à la partie présente après « BEGIN » et « END » de votre template. ;)

10:50 par Sylvain (Commentaires)

24 juin 2009

Erwan Briand

CodingTeam 0.9.1 est disponible !

J'ai publié aujourd'hui (enfin, hier, déjà) la troisième release de la forge CodingTeam, soit la version 0.9.1. CodingTeam est une forge logicielle libre écrite en PHP. Après un peu plus de 6 mois, donc, cette nouvelle version vient remplacer la précédente 0.9 en apportant pas mal de nouveautés, d'une réécriture complète de toutes les vues (pour intégrer un léger moteur de template basé sur la syntaxe alternative de PHP) à la possibilité de rendre un projet privé.

Parmi les choses attendues et bien au rendez-vous, on trouvera notamment les hooks post-commits permettant de marquer automatiquement un rapport de bug comme résolu, une nouvelle timeline, la possibilité pour les anonymes de rapporter un bug, l'ajout de la notion de milestone en plus de la notion de version (afin de séparer la notion de version dans laquelle sera corrigé le problème de celle qui est affectée par le problème) et donc nouvelle manière de générer la roadmap, les portes-documents des utilisateurs (afin d'uploader des fichiers comme des images qu'ils pourront utiliser dans la documentation de leurs projets), la possibilité de rendre une forge privée (obligation de s'identifier pour afficher une page) et pas mal de changements sur l'explorateur de sources Subversion.

On notera donc que tout ce que les utilisateurs ont demandé a été intégré dans cette nouvelle version. CodingTeam, désormais utilisée par plus d'un millier de personnes sur CodingTeam.net et en interne par quelques entreprises, est donc de plus en plus riche en fonctionnalités et reste toujours distribué sous la licence AGPL (dans sa version 3). J'insiste sur ce point car je remarque que les gens continuent d'utiliser des forges non-libres sans se rendre compte du problème. Avec CodingTeam (ou CodingTeam.net si vous ne voulez pas installer de forge chez vous !), vous avez une solution libre, ce que ne sont pas capables de vous offrir plusieurs forges pourtant très utilisées par les développeurs de logiciel libre. Développer un logiciel libre en utilisant des outils non-libres est bien entendu tout à fait possible, oui. Mais c'est surtout incohérent et proche de l'escroquerie intellectuelle.

Ensuite, et pour revenir dans le sujet initial, les adeptes de Jabber seront heureux de remarquer que l'authentification via XMPP (XEP-0070) est désormais possible. Plus qu'une réelle fonctionnalité, c'est une preuve de concept de la possibilité d'étendre la classe BaseSession afin de gérer l'authentification sur la forge autrement que par le couple identifiant/mot de passe habituel. Toutefois, cette fonctionnalité expérimentale peut être activée sur une forge basée sur CodingTeam dès maintenant. L'authentification via un compte Jabber, les salons de conversations Jabber, la présence et l'avatar du compte Jabber… On ne peut pas nier que CodingTeam intègre beaucoup de fonctionnalités liées à Jabber/XMPP. Et sûrement plus que les autres forges.

Toujours sur le point de vue développeur, la classe de gestion des erreurs a été étendue afin de gérer l'affichage d'un traceback, l'archivage des erreurs, la gestion de toutes les erreurs (même des erreurs fatales PHP)… Bref, elle aide bien en situation de développement (mais on peut plus ou moins lui fermer le clapet en situation de production).

L'interface d'administration a aussi été améliorée puisqu'on peut désormais vider le cache facilement ou même éditer toutes les données de base de la forge (liste des licences, catégories…).

Et bien entendu, CodingTeam.net a été mis à jour. N'hésitez pas à y ajouter votre projet ou à explorer la liste des 276 projets. Si vous voulez installer ou tester cette nouvelle version de la forge logicielle libre CodingTeam, c'est par ici que ça se passe.

Il n'y a donc pas grand chose à ajouter, si ce n'est que la 0.9.2 devrait suivre plus ou moins prochainement avec des choses vraiment très sympathiques. Et si vous ne le connaissez toujours pas, jetez un œil au site de CodingTeam : codingteam.org !

22:33 par xbright (Commentaires)

23 juin 2009

Benoit Peccatte

Comptes ldap (4)

Niveau : Star Star Star Star Empty
Résumé :

Suite de la for­mi­da­ble série :

Et après les comp­tes ?

Il est aussi pos­si­ble d’uti­li­ser libnss-ldap pour autre chose que pour les comp­tes uti­li­sa­teurs. La biblio­thè­que NSS étant une biblio­thè­que géné­ri­que de réso­lu­tion de nom, il est pos­si­ble d’uti­li­ser le ldap pour :

  • les grou­pes (atten­tion pas de login pour newrp à tra­vers pam de prévu)
  • les noms de machine
  • et d’autres qui ne pas très inté­res­sants pour l’ins­tant …

Pour cela, rien de plus facile, tout est déjà fait, il suf­fit de modi­fier la ligne cor­res­pon­dante dans /etc/nss­witch.conf et de com­men­cer à peu­pler le LDAP.

Un groupe est défi­nit comme suit :

objectClass: posixGroup
cn: mongroupe
description: goupe a moi
gidNumber: 1000
memberUid: peck
memberUid: amiami

Notez que la des­crip­tion est option­nelle et que les mem­bres sont décrits par uid. Le user­Pass­word est aussi dis­po­ni­ble mais n’est pas uti­li­sa­ble actuel­le­ment pour les grou­pes du sys­tème.

Exem­ple de machine (plus besoin de DNS local ;-) :

objectClass: ipHost
cn: mamachine
ipNetworkNumber: 1.2.3.4

S’adap­ter à l’exis­tant

Il est pos­si­ble que vous ayez à gérer un ser­veur ldap exis­tant avec ses comp­tes et son pro­pre schéma (active direc­tory ?). C’est pour­quoi il existe des options de map­ping dans la con­fi­gu­ra­tion de pam_ldap et nss_ldap.

Ces options sont assez sim­ples, il s’agit de repar­cou­rir votre schéma et pour cha­que entrée néces­saire pour le sys­tème, expli­quer au fichier de con­fi­gu­ra­tion quel est le nom de l’attri­but ou de la classe que vous uti­li­sez sur le ldap. Ceci est à faire une fois pour nss et une fois pour pam.

Les com­man­des sont :

  • nss_map_object­class : chan­ger une classe uti­li­sée par libnss-ldap
  • nss_map_attri­bute : chan­ger un attri­but uti­lisé par libnss-ldap
  • nss_default_attri­bute_value : don­ner une valeur par défaut à un attri­but (pra­ti­que pour le shell par exem­ple)
  • pam_login_attri­bute : change l’attri­but ser­vant à mat­cher le login pen­dant l’authen­ti­fi­ca­tion
  • Il n’est pas pos­si­ble de chan­ger l’attri­but uti­lisé par pam pour le mot de passe (nor­mal c’est le ser­veur ldap qui gère).

Les clas­ses modi­fia­bles (en res­tant dals le domaine uti­li­sa­teur/groupe) sont

  • posixAc­count : uti­li­sa­teur ayant un compte unix
  • sha­do­wAc­count : uti­li­sa­teur ayant un sys­tème avancé de ges­tion de mot de passe
  • posix­Group: groupe unix

Les attri­buts modi­fia­bles sont : uid­Num­ber, gid­Num­ber, gecos, home­Di­rec­tory, login­Shell, sha­dow­Last­Change, sha­dow­Min, sha­dow­Max, sha­dow­War­ning, sha­do­wI­nac­tive, sha­do­wEx­pire, sha­dow­Flag, mem­be­rUid

Plus de détails (et plus de cles­ses) dans la RFC 2307.

La con­fi­gu­ra­tion four­nie avec le paquet donne des exem­ples pour les dif­fé­rents sys­tè­mes exis­tants (aix, micro­soft …)

libnss-ldapd

Main­te­nant vous pour­riez avoir d’autres pro­blè­mes, comme la per­for­mance ou quel­ques hoquets du réseau qui cou­pent des con­nexions. La solu­tion tra­di­tion­nelle pour cela est d’ins­tal­ler nscd qui fera un cache et vous évi­tera ces pro­blè­mes (et peut en créer d’autres puis­que c’est un cache).

Mais il existe une autre solu­tion : libnss-ldapd, notez bien le ‘d’ final. C’est une ver­sion de libnss-ldap réé­crite pour par­ler à un démon qui est le seul à par­ler avec le ser­veur ldap. Ça a l’avan­tage de mutua­li­ser les requê­tes dans une seule con­nexion et donc d’évi­ter pas mal de pro­blè­mes, sur­tout en cas de forte charge.

Petit incon­vé­nient pour les puris­tes, ça ouvre une faille poten­tielle (incon­nue à ce jour) pour un uti­li­sa­teur qui vou­drait deve­nir admi­nis­tra­teur via le ser­veur ldap, puis­que ce n’est plus le noyau qui véri­fie les droits root d’admi­nis­tra­tion mais le démon.

Le démon se con­fi­gure dans /etc/nss-ldapd.conf. La syn­taxe est la même que pour pam_ldap et libnss-ldap, le con­tenu ne doit pas chan­ger.

Le démon est du coup assez impor­tant, il faut véri­fier qu’il est lancé (moni­to­rer toussa …). Il s’appelle nslcd.

Sécu­rité et per­for­man­ces

Si vous avez beau­coup d’uti­li­sa­teurs vous pou­vez vou­loir res­trein­dre les recher­ches.
Si vous avez des uti­li­sa­teurs qui ne doi­vent pas tous avoir accès au sys­tème, vous pou­vez vou­loir res­trein­dre les recher­ches.

C’est pour­quoi nss et pam four­nis­sent des direc­ti­ves pour réduire la taille des recher­che et donc la liste des uti­li­sa­teurs :

  • base : réduit l’accès à tou­tes les com­man­des LDAP à une seule bran­che
  • scope : indi­quer si la recher­che doit tes­ter les sous bran­ches ou non
  • nss_base_<map> : per­met d’indi­quer à ldap de se limi­ter à une requête pour un type donné de réso­lu­tion, map peut valoir passwd, sha­dow ou group (ou hosts, ser­vi­ces, net­works, pro­to­cols, rpc, ethers, net­masks, boot­pa­rams, alia­ses ou net­group). Exem­ple : nss_base_passwd ou=users,dc=linux-atti­tude,dc=fr?sub?uid>1000
  • pam_fil­ter : per­met de modi­fier la par­tir fil­tre pour pam (pas besoin de modi­fier le reste car il n’y a qu’une requête faite par pam). Exem­ple : pam_fil­ter uid>1000

21:43 par Peck (Commentaires)

21 juin 2009

Benoit Peccatte

Comptes ldap (3)

Niveau : Star Star Star Star Empty
Résumé : lib­map-ldap ; passwd ; chsh ; chfn ; addu­ser

Désolé, j’ai oublié la suite de la série LDAP. On peut faire un peu mieux que la der­nière fois.

Chan­ger son mot de passe

Nous n’avons pas activé le chan­ge­ment de mot de passe. Pour cela, c’est assez sim­ple, il suf­fit de modi­fier com­mon-pass­word (cela peut être ailleurs pour cer­tai­nes dis­tri­bu­tions …) :

password   sufficient   pam_unix.so nullok obscure min=4 max=8 md5
password   sufficient   pam_ldap.so

Il faut aussi modi­fier /etc/pam_ldap.conf pour que pam ne modi­fie pas direc­te­ment le mot de passe, mais uti­lise les fonc­tions de ldap pré­vues à cet effet. Cela per­met qu’il ne soit pas sto­cké en clair, mais avec la méthode défi­nie dans la con­fi­gu­ra­tion de ldap ({SSHA} par défaut).

# A ajouter dans /etc/pam_ldap.conf
pam_password exop

Et voilà vous pou­vez tes­ter la com­mande passwd. Mais vous cons­ta­te­rez qu’il y a quel­que chose qui clo­che. Si vous lan­cez la com­mande en root, l’ancien mot de passe vous est quand même demandé. C’est parce que vous n’avez pas les droits d’admi­nis­tra­teur sur le ldap.

Pour remé­dier à cela, il vous faut un compte ldap qui a le droit de modi­fier le champ pass­word des autres uti­li­sa­teurs, par exem­ple l’admi­nis­tra­teur ldap. Puis ren­sei­gnez ce compte dans pam_ldap.conf :

# /etc/pam_ldap.conf
# Il faudra stocker le mot de passe correspondant en clair dans /etc/pam_ldap.secret
# Ce fichier doit appartenir à root et être en mode 600
rootbinddn cn=admin,dc=linux-attitude,dc=fr

Ça y est vous êtes prêts.

chsh, chfn, addu­ser

Les uti­li­sa­teurs ont le droit de chan­ger leur shell ainsi que leurs infor­ma­tions per­son­nel­les. Pour cela ils ont les com­man­des chsh et chfn.

Mal­heu­reu­se­ment ces com­man­des mani­pu­lent /etc/passwd. Le paquet lib­pam-ldap four­nit des script pour rem­pla­cer ces com­man­des, mais ils sont un peu basi­ques et néces­si­tent lib­net-ldap-perl (Net::LDAP). Vous pou­vez vous baser des­sus pour faire les votres si vous pen­sez que ces fonc­tion­na­li­tés sont indis­pen­sa­bles pour vos uti­li­sa­teurs. On les trouve dans /usr/share/doc/lib­pam-ldap/exam­ples/ . un cer­tain nom­bre de para­mè­tres sont codés en dur et peu de véri­fi­ca­tions d’erreur sont fai­tes.

Si vous modi­fiez vos binai­res dans /usr/bin sur debian, fai­tes atten­tion la pro­chaine mise à jour ris­que de les rem­pla­cer. Pour évi­ter ce pro­blème, il existe la com­mande dpkg-divert :

# On fait croire aux paquets qu'ils installent /usr/bin/chfn alors qu'ils installent en réalité /usr/bin/chfn.old
$ dpkg-divert --add --rename --divert /usr/bin/chfn.old /usr/bin/chfn
# voila, vous pouvez maintenant remplacer /usr/bin/chfn

Autre pro­blème, addu­ser ne com­prend pas non plus le ldap. Ici le pro­blème est le même mais la solu­tion un peu meilleure. Un paquet ldaps­cripts est dis­po­ni­ble et il con­tient des com­man­des comme lda­pad­du­ser pour vous faci­li­ter la créa­tion d’uti­li­sa­teurs ldap. Les com­man­des sont con­fi­gu­rées dans /etc/ldaps­cripts/ .

Tout ceci pour­rait s’amé­lio­rer dans de pro­chai­nes ver­sions, un patch a l’air en cours de déve­lop­pe­ment pour le paquet sha­dow (qui con­tient ces outils) qui uti­li­se­rait la libnss pour effec­tuer ces actions. Les com­man­des fonc­tion­ne­raient donc direc­te­ment.

Quel­ques remar­ques

Depuis que nous avons des vrais comp­tes sys­tè­mes basés sur le ldap nous som­mes con­tents. Mais quel­ques peti­tes cho­ses tout de même :

  • Gar­dez le compte root sur le sys­tème, on ne sait jamais, si le ldap tombe, vous seriez bien embê­tés
  • Fai­tes atten­tions aux droits dans le ldap, ils impac­tent les fonc­tion­na­li­tés des com­man­des sys­tè­mes (droit de lis­ter les autres uti­li­sa­teurs par exem­ple)
  • Avec un ser­veur dis­tant, le ldap devient une forme de NIS
  • Vous pou­vez uti­li­sez la répli­ca­tion ldap pour résis­ter aux crash
  • Vous pou­vez tou­jours gar­der une mot de passe local au cas où le ldap ne mar­che pas (pam fait les 2)
  • Vous pou­vez vous con­nec­ter à un con­tro­leur de domaine win­dows
  • Si vous avez de pro­blè­mes les logs d’authen­ti­fi­ca­tion sont dans /var/log/auth.log
  • Vous pou­vez vou­loir ne met­tre en place que l’authen­ti­fi­ca­tion via pam et ne pas uti­li­ser libnss. Ce cas cor­res­pond à des uti­li­sa­teurs vir­tuels (comme pour le ftp) qui n’uti­li­se­ront pas alors de vrai compte sur le sys­tème.

15:08 par Peck (Commentaires)

11 juin 2009

Christophe Nowicki

Héberger son propre fournisseur d’identité OpenID

Présentation d’OpenID

OpenID est un système d’authentification décentralisé qui permet l’authentification unique, ainsi que le partage d’attributs. Il permet à un utilisateur de s’authentifier auprès de plusieurs sites compatibles sans avoir à retenir un identifiant pour chacun d’eux mais en utilisant à chaque fois un unique identifiant OpenID.

Cette identifiant se presente sous forme d’URL, celle-ci contient l’adresse du serveur d’identification et le nom de l’utilisateur : http://id.csquad.org/identity/cscm

Je trouve ce système d’identification pratique, car je change de poste de travail ( portable, station de travail, etc…) et je n’ai pas trouvé de solution de synchronisation de mot de passe convaincante.

Pourquoi héberger son propre fournisseur d’identité?

Héberger son propre serveur d’identité vous permet de gérer votre identité numérique.
C’est à dire, déterminer les informations personnelles que vous fournissez au service que vous utilisez.
Héberger ce type de service sur son propre serveur vous garantit que vous avez la main sur vos données personnelles.
Cela vous garantit que :

  • les autres fournisseurs d’identité n’exploitent pas vos données personnelles ;
  • votre compte restera toujours actif, en effet rien ne vous garantit qu’un fournisseur d’identité ne cesse son activité ;
  • une liberté en matière de politique de mot de passe / choix de l’identifiant / nombre de comptes, etc…

Présentation de Community-ID

Community-ID est une application PHP, compatible avec les spécifications OpenID 2.0 sous licence BSD.
Il propose les fonctionnalités suivantes :

  • comptes d’utilisateurs ;
  • données personnelles ;
  • sites fédérés ;
  • historique ;

Configuration de Community-ID sur un serveur Debian GNU/Linux

Voici la procédure d’installation de la version 1.0 de Community-ID sur une distribution Debian GNU/Linux version “Lenny”.

Vous avez besoin :

  • d’un nom de domaine ;
  • d’un serveur Apache avec le support de PHP 5 et le module rewrite ;
  • d’une base de données MySQL avec phpMyAdmin ;

Configuration de MySQL

A l’aide de phpMyAdmin, créer un utilisateur communityid et créer une base portant le même nom en lui donnant tous les privilèges sur cette base.

Installation dépendances

Le programme nécessite les dépendances suivantes :

# apt-get install apache2-mpm-prefork libapache2-mod-php5 php5-mysql php5-gd php5-gmp

Installation du programme

Vous pouvez télécharger le programme sur SourceForge : Community-ID.
et extraire le fichier tar.gz dans le répertoire /var/www :


# cd /var/www
# wget http://freefr.dl.sourceforge.net/sourceforge/communityid/cid-1.0.0.tar.gz
# tar xzf cid-1.0.0.tar.gz
# chown www-data: -R communityid

Vous devez ensuite configurer le site web pour Apache en mettant le contenu suivant dans le fichier /etc/apache2/sites-available/communityid :


<VirtualHost *:80>
ServerName id.nom_de_domaine
ErrorLog /var/log/apache2/id.nom_de_domaine/error.log
CustomLog /var/log/apache2/id.nom_de_domaine/access.log common
DocumentRoot /var/www/communityid/webdir
</VirtualHost>

Il faut créer le répertoire pour les logs du site, activer le site et le module rewrite dans Apache :

# mkdir /var/log/apache2/id.nom_de_domaine/
# a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!
# a2ensite communityid
Enabling site communityid.
Run '/etc/init.d/apache2 reload' to activate new configuration!
# /etc/init.d/apache2 restart

Configuration

Vous pouvez ensuite pointer votre navigateur sur l’adresse de votre site : http://id.nom_de_domaine/
La procédure d’installation vous demande les informations de connexion à la base de données pour configurer celle-ci.
Une fois la base de données crée, vous pouvez vous connecter à l’interface à l’aide de l’utilisateur admin et du mot de passe admin, pour vous créer un compte.

Liste des services compatibles

Voici la liste des quelques services que j’utilise avec mon serveur OpenID :

Il existe de nombreux services compatibles avec ce système d’authentification, référencés par l’annuaire OpenID Directory.

Les principaux systèmes de blog proposent le support d’OpenID sous forme de plugin :

Si vous avez réussi à installer votre fournisseur d’identité, vous pouvez vous connecter sur mon blog pour me laisser un commentaire ;-)

06:31 par cscm (Commentaires)

08 juin 2009

Carl Chenet

RMLL 2009 et retour sur Pycon FR


Je vais aux RMLL!

Comme indiqué ci-dessus, je serai aux Rencontres Mondiales du Logiciel Libre (RMLL) à Nantes, le 9 juillet 2009 pour une conférence sous la forme d’un retour d’expérience sur mon projet Bélier, avec une large part accordée à la démarche qualité dans le développement d’un logiciel en Python. Sera également abordé l’importance de l’empaquetage qui me permettra de mettre en avant mes récents travaux au sein de Debian. Je serai également une grande partie de la journée sur le stand de l’Association Francophone Python (AFPY).

Si vous êtes un contributeur/DD/DM du projet Debian, n’hésitez pas à venir causer avec moi ! Et la même chose bien sûr pour toutes les personnes intéressées par Python.

Rapide retour sur Pycon FR 2009

Les journées Pycon FR 2009, conférences francophones autour du langage Python, ont eu lieu le dernier week-end de mai à la Cité des Sciences et de l’Industrie à Paris. Les conférences se sont enchaînées, abordant un large éventail de sujets. J’ai présenté moi-même une conférence sur la mise en place d’une démarche qualité au sein d’un développement en Python ainsi qu’un “lightning talk” sur mon projet Bélier. L’organisation a été parfaite et les feedbacks ont été très positifs.

Je pense présenter l’année prochaine une conférence sur Python et Debian abordant l’utilisation du langage Python dans Debian et comment un développeur utilisant Python peut contribuer à Debian.

à bientôt !

17:26 par carlchenet (Commentaires)

Erwan Briand

Patate \o/

Biquette et moi sommes heureux de vous présenter une nouvelle venue, la dénommée Patate !

   

Patate est un petit ordinateur portable MSI Wind U100 (027FR pour la référence exacte) tout noir et tout top cool. Pour ceux qui veulent savoir ce que la bête a sous le capot, c'est un processeur Intel Atom à 1.6GHz, un disque dur de 160Go, un gigot de RAM, un écran 10.2 pouces (avec donc une résolution de 1024x600), un lecteur de cartes qui marchera sans rien faire et une webcam (pratique pour les cam2cam coquines sur MSN, comme pensent sûrement actuellement plusieurs lecteurs)… L'ordinateur est aussi livré avec un CD de restauration et de sauvegarde de Windows XP (qui est d'ailleurs très utile sur un ordinateur sans lecteur CD) ainsi qu'une pré-installation d'XP. Le disque dur, après son formatage et son repartitionnement en bonne et due forme ne possède plus aucune trace de tout ça, donc le monde va bien et les oiseaux chantent (si si, tendez l'oreille). Comme il m'est arrivé quelques péripéties lors de la configuration de cette petite patate, je vais relater tout ça ici au cas où un autre que moi aurait un MSI Wind et ne s'en sortirait pas, il y aura donc des vrais bouts de technique dans ce billet ; désolé si ça choque.

L'installation en elle même s'est déroulée sans encombres via une clef usb contenant la netinstall de Debian testing (et d'ailleurs, j'écris ce billet depuis patate \o/). Par contre, au premier boot, il m'est arrivé un truc bizarre : /etc/fstab désignait le disque dur comme /dev/sdc alors que fdisk -l parlait bien de /dev/sda. J'ai dû être un peu distrait pendant l'installation parce que grub ne se lançait tout-bien que si je bootais sur la clef usb (/dev/sda, en l'occurrence ; je sais que c'est un peu confus mais il faut quand même suivre un minimum). Une réinstallation de grub et une modification du fichier /etc/fstab plus tard, la machine démarrait tranquillement.

Ensuite, vient le problème de la carte wifi. En effet, selon les modèles et lieux de commercialisation de l'ordinateur, la puce wifi n'est pas la même. La plus courante à l'air d'être une Realtek RTL8187SE et à ce qu'on peut lire sur le net, c'est aussi la plus chiante. Le mien est équipé d'une Ralink RT2860 (alors que le commerçant m'avait pourtant annoncé l'autre). Et il y aurait même des modèles avec un chipset Atheros (ça aurait été idéal). En tout cas, avec ma carte et Debian, y a pas 36 solutions, il faut le kernel 2.6.29 si on veut bénéficier du pilote fourni avec le noyau (rt2860sta) qui marche tout simplement super. Et puis, ça ne peut pas être un mal d'être à jour, c'est que le 2.6.26 commence se faire vieux quand même. Petit bémol, le driver dépendrait d'un firmware non-libre (comme le dit ce rapport de bug). Ralink, bouh ! Sinon, on peut aussi se l'installer via module-assistant, mais je ne vais pas détailler tout ça ici. Me voilà donc de nouveau obligé d'utiliser du non-libre pour mon matériel. /o\

Ensuite, j'ai opté pour m'installer un cocktail personnel avec du SLiM, du Openbox, du xfce4-terminal, du xfce4-panel… Mais tout ne s'arrête pas là. Il y a aussi moyen de s'amuser avec la carte graphique. En lançant glxgears, on obtient environ 400 FPS. Eh bien, on peut passer à environ 900 FPS en un claquement de doigt, satisfaisant par la même les gamerz nomades (chambre, salon, toilettes) que nous sommes tous (même toi, là bas, au fond). Pour cela, j'ai honteusement pompé sur le net (des tutos, des rapports de bugs, des sujets de forum) et j'ai fait un joli mix que voici.

D'abord, dans le xorg.conf :

Section "Device"
    Identifier "Configured Video Device"
    Option "AccelMethod" "xaa"
    Option "MigrationHeuristic" "greedy"
    Option "DRI" "true"
    Option "FramebufferCompression" "on"
    Option "UseFBDev" "true"
    Option "RenderAccel" "true"
    Option "XAANoOffscreenPixmaps" "true"
    Option "Tiling" "on"
EndSection

Et puis au final, dans le .bashrc :

export INTEL_BATCH=1

Bon, par contre, rien de dingue, j'oscille entre 5 et 50 FPS selon les jeux et certains (comme gl-117) refusent tout simplement de se lancer. Les malpropres. Notons aussi que pour le coup, j'ai un peu copié sans chercher à comprendre, c'est que c'est bien obscur toutes ces bêtises d'accélération graphique.

Le portable vient aussi avec une interface Bluetooth. J'ai d'ailleurs trouvé sur le net une bien bonne astuce pour utiliser tout ça facilement, la voici. Avant toute chose, il faut installer le paquet gnome-bluetooth et ensuite créer le fichier ./local/share/Thunar/sendto/gnome-obex-send-generic.dekstop. Ce fichier doit juste contenir ça :

[Desktop Entry]
Type=Application
Version=1.0
Encoding=UTF-8
Name=Bluetooth OBEX Recipient
Exec=/usr/bin/gnome-obex-send %f

Et hop, il y aura une nouvelle entrée au menu « Envoyer vers » de Thunar. Et on utilisera gnome-obex-server pour récupérer des fichiers transmis par le Bluetooth (chez moi, il se lance à l'ouverture de ma session).

Pour pouvoir utiliser les touches de gestion du son, il faut faire une petite manipulation de rien du tout avec xmodmap. Quand on utilise Openbox, il suffit d'ajouter « xmodmap /chemin/vers/votre/xmap » dans ~/.config/openbox/autostart.sh. Ce fichier xmap contiendra :

keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
keycode 160 = XF86AudioMute

Et il n'y a plus qu'à mettre à jour le ~/.config/openbox/rc.xml :

    <keybind key="XF86AudioRaiseVolume">
<action name="Execute">
<command>aumix -v+4</command>
</action>
</keybind>

<keybind key="XF86AudioLowerVolume">
<action name="Execute">
<command>aumix -v-4</command>
</action>
</keybind>

<keybind key="XF86AudioMute">
<action name="Execute">
<command>aumix -v0</command>
</action>
</keybind>

Voilà qui n'est déjà pas mal. Maintenant, sans transition, on va passer de la bidouille du dimanche à quelque chose de bien plus intéressant.

Étant d'un naturel paranoïaque, il ne m'a pas fallu en parler longtemps sur le net avant de me décider à chiffrer ma partition /home. Et en plus, c'est vraiment pas si compliqué que ça. On commence par installer le paquet cryptsetup. Avant toute chose, il peut être sympa de se faire un petit backup, j'ai par exemple créé un dossier /var/homebackup dans lequel j'ai copié /home/xbright. Après, on attaque les choses sérieuses (vérifiez que le module dm-crypt est chargé pour la suite). Et si vous avez un avertissement à propos d'un certain udevsettle manquant, pas de panique, c'est un bug. Enfin, pour bien comprendre mon exemple, dans mon cas, /home est sur /dev/sda5.

On commence par démonter notre partition :

umount /dev/sda5

Ensuite, on lance la création du chiffrage sur cette partition :

cryptsetup luksFormat /dev/sda5

Et puis, on va ouvrir tout ça :

cryptsetup luksOpen /dev/sda5 home

Et on va maintenant créer un système de fichier ext3 :

mke2fs -j /dev/mapper/home

À ce moment là, moi, j'ai restauré ma sauvegarde en trois étapes toutes simples :

mount -t ext3 /dev/mapper/home /mnt
cp -av /var/homebackup/xbright /mnt
umount /mnt

Et ensuite, dernière étape, il faut modifier deux fichiers, le premier, /etc/fstab, il s'agit de modifier la ligne concernant notre partition afin qu'elle ressemble à ça :

/dev/mapper/home    /home    ext3    defaults    1    2

Le dernier fichier à modifier est /etc/crypttab, auquel il suffira d'ajouter cette ligne :

home    /dev/sda5    none    luks

Un petit reboot et c'est bon. Il faudra juste entrer le mot de passe à chaque boot pour que la partition puisse être lue. Et puis, ça rassure le paranoïaque qui sommeille au fond de nous.

Et maintenant, les traditionnels screenshots pour montrer un peu à quoi ressemble la bestiole (attention, la taille de la police pourrait faire peur à certains qui se balladent sur le web en 16 pixels, parce que là, c'est moins que la moitié).

15:39 par xbright (Commentaires)

06 juin 2009

Benoit Peccatte

Comptes ldap (2)

Niveau : Star Star Star Empty Empty
Résumé : lib­pam-ldap

Hier nous avons créé un compte sur le ldap. Bien, mais on ne pou­vait pas en faire grand chose. Il faut main­te­nant pou­voir se con­nec­ter. Il est théo­ri­que­ment pos­si­ble de tout faire avec libnss mais c’est à la fois plus dif­fi­cile et moins fonc­tion­nel qu’avec pam.

Comme vous le savez l’authen­ti­fi­ca­tion sous linux se fait avec PAM. Nous allons donc uti­li­ser un module dédié : lib­pam-ldap (cool le paquet porte le même nom).

LDAP

Cette fois ne nous force à uti­li­ser aucun object­Class, mais comme il sait uti­li­ser les attri­buts de la classe sha­do­wAc­count, on peut uti­li­ser celle-ci pour se sim­pli­fier la vie.

Ajou­tons le mot de passe à notre uti­li­sa­teur. On crée le mot de passe LDAP à la main, mais par la suite vous ver­rez que ce n’est pas indis­pen­sa­ble.

$ slappasswd -s test
{SSHA}l5X6sBFomfk3tk02HEMWK4YLep7pqZDk

On ajoute ce mot de passe à l’uti­li­sa­teur déjà créé :

$ ldapmodify -x -D "cn=admin,dc=linux-attitude,dc=fr" -W
dn: uid=peck,ou=people,dc=linux-attitude,dc=fr
changetype: modify
add: userPassword
userPassword: {SSHA}l5X6sBFomfk3tk02HEMWK4YLep7pqZDk

Un test de con­nexion avec ldap­search vous mon­trera que le mot de passe est bien pris en compte :

$ ldapsearch -x -D "uid=peck,ou=people,dc=linux-attitude,dc=fr" -w test "uid=peck"

PAM

Main­te­nant il faut expli­quer gen­ti­ment à PAM d’aller faire son authen­ti­fi­ca­tion en uti­li­sant LDAP. Pour cela hop, con­fi­gu­ra­tion dans /etc/pam.d/com­mon-*. Cer­tai­nes dis­tri­bu­tions devront peut-être con­fi­gu­rer cha­que élé­ment un par un : su, login, ssh …

# common-auth
# attention, le pam_unix devient sufficient
auth    sufficient    pam_unix.so nullok_secure nodelay
# use_first pass permet de ne demander qu'une fois les mot de passe pour les 2 modules
auth    sufficient    pam_ldap.so use_first_pass 
# common-account
account    required    pam_unix.so
account    sufficient   pam_ldap.so
# common-session
session    required    pam_unix.so
session    optional    pam_ldap.so

Main­te­nant atta­quons-nous au fichier de con­fi­gu­ra­tion pro­pre­ment dit : /etc/pam_ldap.conf. En voici l’essen­tiel :

# /etc/pam_ldap.conf
base ou=people,dc=linux-attitude,dc=fr
uri ldap://127.0.0.1/
ldap_version 3

Vous remar­que­rez que pam_ldap.conf et libnss-ldap.conf ne ren­trent jamais en con­flit. Vous pou­vez faire un lien de l’un vers l’autre ou modi­fier la con­fi­gu­ra­tion pour que ce soient les mêmes fichiers. Cela peut vous évi­ter quel­ques désa­gré­ments.

Test

Main­te­nant tout mar­che, même l’authen­ti­fi­ca­tion. Fai­tes le test :

$ su - peck
Password:
$ id
peck

Youpi, ça mar­che même en ssh. Bon c’est bien gen­til, mais c’est encore un peu léger. La pro­chaine fois , on vou­drait pou­voir faire encore plus.

15:20 par Peck (Commentaires)

Carl Chenet

Pycallgraph


J’ai récemment adopté le paquet Debian du programme Pycallgraph. Excellente raison pour vous présenter rapidement ce programme.

Pycallgraph vous permet de générer une représentation graphique des appels aux différentes fonctions qui composent votre programme Python. Vous pouvez ainsi détecter une anomalie ou comprendre pourquoi votre programme n’est pas performant lors de son exécution.
Un exemple avec mon projet Bélier peut être consulté ici à cette adresse.

L’utilisation du programme est très simple. Pour Bélier, la commande a été la suivante :

$ pycallgraph bel -e ordres

Dans l’exemple ci-dessus, le fichier image au format PNG généré s’appellera pycallgraph.png. Pour l’appeler autrement, il aurait suffi d’appeler la commande suivante :

$ pycallgraph –output-file mon_graphe_belier.png bel -e ordres

Il peut être utile de rajouter certaines instructions dans votre code afin de faciliter l’intégration de Pycallgraph. Plus d’informations à l’adresse suivante : http://pycallgraph.slowchop.com/pycallgraph/wiki/documentation/0.5.1.

Cerise sur le gâteau, la version Debian est à jour par rapport à l’upstream :)

12:55 par carlchenet (Commentaires)

Shams Fantar

Tutoriel : apache et les vhosts

Des personnes m'ont demandé à plusieurs reprises de leur expliquer "comment faire un vhost avec apache ?", pour leur répondre, je vais expliquer ici comment le créer, c'est une configuration assez simple à mettre en place. Nous allons le faire donc avec apache, un sous-domaine (ou un nom de domaine, c'est la même conf). La configuration est réalisée sous debian.

I - Explications :

Pour rappel, les vhosts (virtual hosts) sont utilisées pour pouvoir héberger plusieurs sites web par exemple sur une même machine/même ip. En gros, on redirige un domaine/sous-domaine sur l'IP de la machine qui hébergera le site, et on indique à apache "si je tape ce sous-domaine, montre-moi le contenu de ce répertoire sur le serveur (sous-entendu du site web qui se trouve derrière)".

II - DNS :

Je ne vais pas entrer dans les détails au niveau de la conf DNS avec bind, mais voici ce que nous retiendrons pour rediriger un sous-domaine sur la bonne IP :

mon-sous.domaine.tld. A IP-du-serveur

Relancez ensuite bind à coup de /etc/init.d/bind9 reload.

III - Maintenant, les préparatifs :

Avant la configuration du vhost lui-même, il faut créer le répertoire (si il n'existe pas) où se trouvera tout le contenu, par habitude, je mets tout le contenu dans un public_html :

mkdir /home/monsite/public_html

IV - Et on passe au vhost :

Les vhosts sont à créer dans /etc/apache2/site-available/ sous debian. Ouvrez un nouveau fichier :

cd /etc/apache2/site-available/ && nano mon-sous.domaine.tld

Et copiez cette configuration de base :

<VirtualHost *>
ServerAdmin root@localhost # vous pouvez y mettre votre mail, il sera affiché aux visiteurs en cas de problèmes techniques avec apache.
ServerName mon-sous.domaine.tld # le sous-domaine ou le domaine
ServerAlias www.mon-sous.domaine.tld # vous pouvez mettre un second domaine/sous-domaine pour un même vhost


DocumentRoot /home/monsite/public_html # le chemin vers le contenu du site
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/monsite/public_html> # le chemin vers le contenu du site
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ErrorLog /var/log/apache2/error_mon-sous.domaine.tld # gestion des logs d'erreur

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access_mon-sous.domaine.tld combined # gestion des logs d'accès
ServerSignature Off


</VirtualHost>

Les explications sont dans la configuration ci-dessus. La configuration est également disponible ici (pour des raisons de mise en page).

Comme je l'ai dit, la configuration est vraiment basique mais elle est suffisante pour un simple site web. Réfèrez-vous à Google pour d'autres paramètres possibles en fonction de vos besoins.

V - On indique tout ça à apache :

Il faut maintenant dire à apache d'utiliser le vhost :

a2ensite mon-sous.domaine.tld

Et le relancer pour lui indiquer cet ajout :

/etc/init.d/apache2 reload

Et voilà ! Apache est maintenant capable de diriger le sous-domaine vers le bon contenu.

VI - Et...

Pour supprimer un vhost :

a2dissite mon-sous.domaine.tld

Et il faut relancer apache.

08:10 par Scurz

05 juin 2009

Shams Fantar

Script PHP pour connaître le nombre de fois qu'un fichier est téléchargé

Ayant besoin et ne trouvant pas de script répondant à mes attentes, j'ai codé moi-même un script permettant de compter le nombre de fois qu'un fichier est téléchargé. Le script est assez court mais je pense qu'il pourra servir, il permet de gagner du temps !

Le script en PHP fonctionne avec MySQL pour ce qui est des données. Il ne nécessite rien d'autre. Vous avez également le droit à une petite interface d'administration.

Le fameux script en question est disponible dans une archive tar. Lisez le fichier read.me pour tous les détails concernant son utilisation. Les scripts sont accessibles ici aussi.

Une version 0.2 devrait voir le jour sous peu, il sera possible, pour avoir des stats plus vraies, de ne compter qu'un téléchargement par fichier par IP.

N'hésitez pas pour les feedbacks !

15:46 par Scurz

04 juin 2009

Carl Chenet

Reportbug : situation actuelle


Suite à un billet de Sandro Tosi passé sur planet.debian.org qui résumait les avancées récentes de Reportbug que j’ai présenté dans un billet précédent, je vais me permettre d’entrer un peu plus dans le détail.

  • Développement de l’interface en GTK2 de reportbug par Luca Bruno qui fait un gros travail.
  • Renforcement de l’application (rajouts de contrôles)
  • Développement de nouvelles options
  • Réduction importante du nombre de bugs. Ce tableau généré par Sandro Tosi résume la situation.)

Si vous êtes sous Sid et que vous avez la possibilité de tester le dernier Reportbug, n’hésitez pas à envoyer un bug sur Reportbug lui-même. Nous ne garantissons pas un retour rapide sur votre rapport (excepté pour un bug considéré comme important) car les trois contributeurs principaux sont très occupés (j’essaie moi-même d’écluser de nombreux rapports présents depuis trop longtemps dans le BTS avant de me concentrer sur les nouveaux rapports). Mais quoiqu’il arrive, nous voyons passer le rapport et nous vous ferons un retour dessus dès que possible.

Un grand remerciement à Sandro Tosi qui clôt et corrige lui-même de très nombreux rapports, tout en intégrant les patchs que Luca et moi lui envoyons, sans parler de sa disponibilité sur IRC (ubiquité?).

En tous les cas Reportbug est très actif et les retours que nous avons dessus nous permettront d’avancer, merci à vous.

20:12 par carlchenet (Commentaires)

Benoit Peccatte

Comptes ldap (1)

Niveau : Star Star Star Empty Empty
Résumé : nss-ldap

Il y a plu­sieurs façon de gérer ses comp­tes par ldap. Com­men­çons par la plus sim­ple. Pla­çons-nous dans le cas d’une machine qui a des uti­li­sa­teurs sys­tè­mes sto­ckés sur le ldap.

Les uti­li­sa­teurs sont gérés par la biblio­thè­que de nom nom­mée NSS (et là). Cette biblio­thè­que se con­fi­gure dans /etc/nss­witch.conf. En sup­po­sant qu’on ait déjà un ser­veur ldap avec des uti­li­sa­teurs, il suf­fit donc de modi­fier ce fichier ainsi que d’ajou­ter un fichier de con­fi­gu­ra­tion spé­ci­fi­que à nss-ldap.

Ser­veur LDAP

Sup­po­sons que vous ayez déjà un ser­veur ins­tallé (apt-get ins­tall slapd), avec un suf­fixe nommé dc=linux-atti­tude,dc=fr.

Si vous n’avez pas encore d’arbo­res­cence avec des uti­li­sa­teurs, choi­sis­sez en une, par exem­ple ou=peo­ple,dc=linux-atti­tude,dc=fr.

Et peu­plons d’uti­li­sa­teurs notre arbre (je ne vais pas vous appren­dre le LDAP). Atten­tion, ici il faut uti­li­ser la classe posixAc­count pour les uti­li­sa­teurs que nous allons créer. Il est pos­si­ble de faire autre­ment, mais nous ver­rons ça plus tard.

Créons un uti­li­sa­teur avec un uid qui ne ren­trera pas en con­flit avec les uti­li­sa­teurs exis­tants pour mieux tes­ter. Uti­li­sons un groupe non ldap pour sim­pli­fier le pro­ces­sus (atten­tion, posixAc­count est AUXI­LIARY, ce qui veut dire qu’il faut une autre classe pour l’uti­li­sa­teur, ine­tOrg­Per­son par exem­ple) :

$ ldapadd -x -D "cn=admin,dc=linux-attitude,dc=fr" -W
dn: uid=peck,ou=people,dc=linux-attitude,dc=fr
uid: peck
objectClass: posixAccount
objectClass: inetOrgPerson
cn: peckname
sn: Peck Le bogoss
uidNumber: 2000
gidNumber: 1000
homeDirectory : /tmp

NSS

Il nous faut le paquet libnss-ldap. Pour que NSS le prenne en compte, il faut édi­ter /etc/nss­witch.conf :

# on donne la priorité à ldap
passwd:         ldap compat

Main­te­nant, il faut con­fi­gu­rer libnss-ldap, c’est un peu plus com­pli­qué, mais le fichier de con­fig par défaut est plein de com­men­tai­res. Voici le mini­mum à con­fi­gu­rer :

# /etc/libnss-ldap.conf
base ou=people,dc=nodomain
uri ldap://127.0.0.1/
ldap_version 3

Test

Ce test doit être fait en root car nous n’avons pas tout mis en place. Nous n’avons pour l’ins­tant défini que l’exis­tence de l’uti­li­sa­teur.

$ su - peck
$ id
# Une autre façon de faire :
$ getent passwd peck

You­hou ça mar­che.
Demain nous ferons un peu mieux parce que là bon, c’est léger …

16:05 par Peck (Commentaires)

03 juin 2009

Eric Veiras Galisson

Mercurial : éditer l'historique d'un dépôt (les changesets) avec les MQ

J’ai toujours[1] cru qu’on ne pouvait éditer l’historique des ‘changesets’ de Mercurial, mais en fait si ! Et c’est grâce à ce billet sur le blog de Jesper Noehr (un des gars derrière bitbucket) que j’ai découvert qu’en fait c’est tout à fait possible.

En utilisant les MQ (mercurial queues) dont je vous ai déjà parlé, il est donc tout à fait possible de rééditer des modifications déjà enregistrées (committées) dans votre dépôt Mercurial.

Bien évidemment, ce genre de manipulations n’est possible que si vous contrôlez votre dépôt et ses éventuels clones. Dès l’instant où celui-ci a pu être cloné, vous avez perdu la maîtrise de votre code et les modifications sur lesquelles vous voulez revenir sont déjà parties.

Nous sommes dans un dépôt test avec 3 changesets

$ hg log
changeset:   2:6a2d12a15cda
tag:         tip
summary:     modifications de a et b

changeset:   1:ca5faf3b4493
summary:     ajout de b

changeset:   0:66545c7be018
summary:     ajout de a

et nous souhaitons revenir sur les changesets 1 et 2.

Nous initialisons d’abord un dépôt de MQ si ce n’est pas déjà fait

$ hg qinit -c

[2]

Puis nous importons les changesets que nous voulons modifier

$ hg qimport -r 2:1

Si on regarde maintenant le log

changeset:   2:6a2d12a15cda
tag:         qtip
tag:         2.diff
tag:         tip
summary:     modification de a et b

changeset:   1:ca5faf3b4493
tag:         1.diff
tag:         qbase
summary:     ajout de b

changeset:   0:66545c7be018
tag:         qparent
summary:     ajout de a

on retrouve bien nos 3 différents changesets sauf que les 2 derniers sont différents : ce sont maintenant des patchs sous forme MQ que nous pouvons alors manipuler de façon classique[3]

On peut donc dépiler tous les patchs pour revenir dans l’état qu’on voulait avant les changesets 1 et 2

$ hg qpop -a
Patch queue now empty
$ hg log
changeset:   0:66545c7be018
tag:         tip
summary:     ajout de a

On peut alors à coup de hg qpush/hg qpop empiler/dépiler nos patchs afin de les modifier, les réorganiser ou ajouter des changesets, et donc revenir sur l’historique de notre dépôt.

J’ai découvert qu’en fait cette information est également disponible sur le site de Mercurial, voyez http://www.selenic.com/mercurial/wi…

Notes

[1] “toujours” est peut-être un trop grand mot, ça ne fait pas non plus si longtemps que ça que je connais Mercurial ;-)…

[2] tant qu’à faire nous ajoutons -c pour avoir un dépôt MQ ‘versionnable’

[3] je vous renvoie vers les chapitre 12 et 13 du hgbook pour plus d’infos

13:48 par er:k (Commentaires)

02 juin 2009

Shams Fantar

Note : PHP et les sessions

Petite note comme ça, ce n'est pas un cours, juste un mémo.

Les sessions en PHP :


  • Pour ouvrir une session :

session_start();

  • Pour détruire une variable spécifique dans une session :

unset($_SESSION['ma-variable'];

Ne pas oublier de détruite ma-variable si on doit lui réattribuer une autre valeur plus tard.

  • Pour détruire une session :

session_destroy();

20:46 par Scurz

Benoit Peccatte

Il fait chaud ici !

Niveau : Star Star Star Empty Empty
Résumé : sen­sors-detect ; sen­sors; hdd­temp; fan­con­trol

Sen­sors

Com­ment con­naî­tre les dif­fé­ren­tes tem­pé­ra­tu­res à l’inté­rieur de votre machine ? Il y a des cap­teurs, donc il y a bien une infor­ma­tion quel­que part. Linux a tous les dri­vers néces­sai­res, mais pour ceux qui se sont essayé à regar­der, c’est dif­fi­cile de savoir qui sert à quoi. Heu­reu­se­ment, il y a lm-sen­sors pour venir à notre secours.

Pour avoir la liste de tous les cap­teurs dis­po­ni­bles sur la machine ainsi que les dri­ver linux asso­ciés à char­ger, il existe une com­mande toute sim­ple une fois le paquet lm-sen­sors ins­tallé :

$ sensors-detect

Cette com­mande scanne le maté­riel, vous pose une ques­tion ou deux et ter­mine en vous lis­tant les modu­les noyau à char­ger pour pou­voir obte­nir les valeurs. Deux cho­ses à faire :

# On charge le(s) module(s)
$ modprobe lemodule
# Et on automatise ça pour le prochain reboot
$ echo lemodule >> /etc/modules

Et voilà, il ne vous reste plus qu’à lire les valeurs. Pour cela, vous avez plu­sieurs outils :

# lecture simple des valeurs en mode texte
$ sensors 
# lecture avec interface graphique (ne marche pas chez moi)
$ xsensors

Ou les tra­di­tion­nel­les applet qu’on peut trou­ver sur gnome, kde, gkrellm, win­dow­ma­ker …

Hdd­temp

Si vous vou­lez aussi lire la tem­pé­ra­ture de vos dis­que, il existe hdd­temp du paquet épo­nyme. Celui-ci mar­che direc­te­ment en ligne de com­mande :

# Il faut être root
$ hddtemp /dev/sda

Il existe aussi en mode démon, une fois ins­tallé, modi­fiez /etc/default/hdd­temp (debian) et relan­cez le démon :

$ /etc/init.d/hddtemp restart
# vérifions qu'il marche
$ telnet localhost 7634

Et voila, il ne vous reste plus qu’a ajou­ter le dis­que dur dans l’applet.

Atten­tion, l’applet de gnome néces­site d’être redé­mar­rée pour détec­ter hdd­temp.

Fan­con­trol

C’est la fête, pas­sons main­te­nant aux ven­ti­la­teurs. Vous avez déjà remar­qué que vous pou­vez avoir la vitesse de rota­tion dans vos applet. Ajou­tez la au moins tem­po­rai­re­ment, ça peut vous être utile pour la suite.

En effet, nous n’allons pas seu­le­ment lire la vitesse des ven­ti­la­teurs, mais nous allons la modi­fier. Pour ceux qui veu­lent regar­der sous le capot, tout cela se trouve dans /sys/devi­ces/plat­form/<sen­sor­dri­ver>/

Fan­con­trol est un paquet qui con­tient deux cho­ses : un script per­met­tant de régler auto­ma­ti­que­ment la vitesse de rota­tion des ven­ti­la­teurs et un outil per­met­tant de le con­fi­gu­rer sans se for­cer.

Pour uti­li­ser fan­con­trol, il faut avoir des sen­sors opé­ra­tion­nels. Gar­dez de pré­fé­rence un oeil sur votre applet pour évi­ter les débor­de­ments de tem­pé­ra­ture et pour savoir quoi répon­dre au script.

$ pwmconfig

Ce script vous pose plein de ques­tions, arrête les ven­ti­la­teurs, les relance, les ralen­tit … dans le but de savoir quel ven­ti­la­teur fait quoi, à quel cap­teur de tem­pé­ra­ture on peut l’asso­cier et com­ment il mar­che. Sachez au pas­sage que les pro­ces­seurs accep­tent des tem­pé­ra­tu­res assez éle­vées, pas besoin de les for­cer à 40°C, vous éco­no­mi­se­rez du bruit. Regar­dez la doc de votre fabri­cant si vous vou­lez un avis sérieux.

Le script pose 2 ques­tions dif­fi­ci­les à com­pren­dre

  • MINS­TART est la valeur de con­fi­gu­ra­tion au des­sus de laquelle le ven­ti­la­teur com­mence à tour­ner
  • MINS­TOP est la valeur de con­fi­gu­ra­tion au des­sous de laquelle le ven­ti­la­teur s’arrête de tour­ner

De façon géné­rale, MINS­TOP doit être supé­rieur à MINS­TART (hys­té­ré­sis), mais les valeurs sont assez pro­ches. Vous pou­vez aussi choi­sir ces valeurs par rap­port à ce que vous enten­dez plu­tôt qu’à la vitesse réelle de rota­tion.

Une fois le tout con­fi­guré :

$ /etc/init.d/fancontrol start

Et écou­tez ce silence en pro­ve­nance de votre ven­ti­la­teur. Sur­tout lors­que vous fai­tes des acti­vi­tés peu inten­si­ves.

13:22 par Peck (Commentaires)

31 mai 2009

Benoit Peccatte

Scripts nautilus

Niveau : Star Star Empty Empty Empty
Résumé : ~/.gno­me2/nau­ti­lus-scripts

Aujourd’hui par­lons un peu d’inter­face uti­li­sa­teur. Vous arrive-t-il sou­vent de lan­cer la même com­mande sur plein de fichiers ? Avez-vous une per­sonne de votre famille qui perd son temps à ouvrir des fichiers un par un pour faire une modi­fi­ca­tion dans cha­que ?

Si ces opé­ra­tions sont auto­ma­ti­sa­bles (cal­culs ope­nof­fice, modi­fi­ca­tion d’image, ajout d’une ligne de texte …) alors il y a un moyen pour les ren­dre acces­si­ble direc­te­ment depuis le navi­ga­teur de fichier. Pour cela, il suf­fit d’écrire un script et de le pla­cer dans ~/.gno­me2/nau­ti­lus-scripts. Essayer de bien le nom­mer car il appa­raî­tra tel quel dans le menu con­tex­tuel “Scripts” de nau­ti­lus.

Pour par­ler con­crè­te­ment, nous allons faire un outil de réduc­tion d’image dis­po­ni­ble direc­te­ment depuis le navi­ga­teur de fichier. Nous allons donc édi­ter le fichier ~/.gno­me2/nau­ti­lus-scripts/Reduc­tion­Pho­tos qui nous per­met­tra d’appe­ler ima­ge­ma­gick pour réduire la taille des pho­tos sélec­tion­nées (en ajou­tant un pré­fixe pour ne rien per­dre). Nous feront notre démo sur tous les fichiers sélec­tion­nés à la sou­ris pour bien mon­trer qu’on auto­ma­tise un com­por­te­ment d’uti­li­sa­teur “nor­mal”.

Le script reçoit ses infor­ma­tions dans des varia­bles d’envi­ron­ne­ment. La plus impor­tante dans notre cas est NAU­TI­LUS_SCRIPT_SELEC­TED_FILE_PATHS qui con­tient la liste des fichiers sélec­tion­nés sépa­rés par des retours à la ligne. Donc une petite bou­cle pour les trai­ter tous d’un coup :

echo -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read in_file
do
        process_file $in_file
done

Alors il se peut que le script ait des ques­tions à poser à l’uti­li­sa­teur. C’est le moment d’uti­li­ser zenity. Un petit outil sympa, équi­va­lent de dia­log, mais bien mieux inté­gré dans gnome. Petite exem­ple avec la sélec­tion d’un nom­bre dans une inter­valle de 0 à 100 :

$ percent=$(zenity --scale --title="Choix du pourcentage" --text "Pourcents : " --value="50" --min-value="0" --max-value="100" --step="1")

Sim­ple non ?

Pour trai­ter les ima­ges en ligne de com­mande, vous con­nais­sez ima­ge­ma­gick. Voici la com­mande à uti­li­ser dans mon cas :

convert image1.jpg -quality 80 -resize 1200 image2.jpg

Voila, on a tou­tes les bri­ques pour faire le script.

#!/bin/bash
#
# Name : ReductionPhoto
# Author : peck
# Licence : GPLv2
#

set -x

#################################################
#       FONCTIONS
ask_questions ()
{
        # question communes à tous les fichieirs
        quality=$(zenity --scale --title="Choix de qualite" --text "Qualite" --value="75" --min-value="0" --max-value="100" --step="1")
        width=$(zenity --entry --title="Largeur de l'ecran" --text "Largeur" --entry-text="1200")
}

reduct()
{
        # options de reduction
        options="-quality $quality -resize $width"
echo $options >> /tmp/debug

        # sauter les non-images
        if identify "$1" >/dev/null
        then
                # convertir
                convert "$1" $options "$2"
        fi
}

#################################################
#       PROGRAMME
if [ $# -eq 0 ]; then
        zenity --error --title="Erreur" --text="Pas de fichier selectionne pour la conversion"
        exit 1
fi
if which convert 2>/dev/null
then
        true
else
        zenity --error --title="Erreur" --text="ImageMagick n'est pas installe"
        exit 1
fi

# c'est parti
ask_questions
echo -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read in_file
do
        ibase=$(basename "$in_file")
        idir=$(dirname "$in_file")
        out_file="$idir/r_$ibase"

        # on fait gaffe aux fichiers qu'on ecrase
        if ls "$out_file"
        then
                if zenity --question --title="Fichier existant" --text="Remplacer r_$ibase ?"
                then
                        reduct "$in_file" "$out_file"
                fi
        else
                reduct "$in_file" "$out_file"
        fi
done

# et ouala
zenity --info "Reduction terminee"

À vous de faire tout ce qui vous inté­resse, le reste de la doc se trouve dans la faq du site

10:23 par Peck (Commentaires)

30 mai 2009

Shams Fantar

Le blog en version anglaise

Voulant rendre mes articles lisibles par plus de monde, j'ai ouvert un autre blog, avec les articles que j'écris sur celui-ci (celui où vous vous trouvez actuellement). La différence réside dans le fait que sur cet autre blog, je traduis en anglais les articles disponibles ici.

Ceci permet donc que plus de monde soit en mesure de lire ce que je rédige. Le contenu est par conséquent le même.

Le blog en version anglaise est disponible ici : http://en.about-gnulinux.info/

Quelques articles du blog anglais seront publiés prochainement sur linux.com.

16:29 par Scurz

27 mai 2009

Benoit Peccatte

En vrac (23)

Niveau : Star Star Empty Empty Empty
Résumé : pam_fail­de­lay.so ; tail -F * ; dusort ;

Réduire le délai en cas d’erreur du mot de passe (très chiant pour su par exem­ple). Sim­ple cal­cul, le délai par défaut de 2s donne 13243 ans pour bru­te­for­cer un mot de passe de 8 let­tres (26 pos­si­bi­li­tés). On peut donc se per­met­tre de divi­ser ce délai par 4 pour appor­ter un peu de con­fort à l’usage :

$ vi /etc/pam.d/common-auth
# on annule le délay ajouté par pam_unix
auth    required        pam_unix.so nullok_secure nodelay
# on ajoute un délai en microsecondes
auth  optional  pam_faildelay.so  delay=500000

Atten­tion, login vient avec son pro­pre délai sup­plé­men­taire de 3 secon­des chez debian (dans /etc/pam.d/login).

Il est pos­si­ble de regar­der les nou­vel­les lignes sur plu­sieurs fichiers en même temps :

$ tail -F /var/log/*

Alias pour con­naî­tre rapi­de­ment les 10 plus gros réper­toire du réper­toire en cours :

$ alias dusort='du --max-depth=1 | sort -rn | head -n 10'

Appe­ler une com­mande en évi­tant tous les alias pos­si­ble (par exem­ple rm qui est aliasé rm -i):

# bash uniquement
$ \commande

Avan­cer / recu­ler d’un mot lors de l’édi­tion de ligne (bash ou tout outil read­line) Esc-fle­che droite ou gau­che.

Effa­cer les fichiers de plus de XX jours :

$ find . -not -ctime -XX -name "*.ncap" -exec rm {} ;

16:16 par Peck (Commentaires)

22 mai 2009

Carl Chenet

Bélier 0.8


La nouvelle version de mon programme Bélier est disponible depuis hier sur http://www.ohmytux.com/belier et sur mentors.debian.net ;) Je recherche donc un sponsor.

http://mentors.debian.net/debian/pool/main/b/belier
http://mentors.debian.net/debian/pool/main/b/belier/belier_0.8-1.dsc

Bélier permet l’ouverture automatisée d’un terminal ou l’exécution de commandes sur un ordinateur distant via une connexion ssh. L’intérêt principal de Bélier réside dans sa capacité à traverser plusieurs machines intermédiaires avant d’accomplir la tâche assignée.

Un schéma vaut souvent mieux qu’un long discours :

Schéma de fonctionnement de Bélier

Schéma de fonctionnement de Bélier

Permettant d’automatiser des connexion ssh avec plusieurs machines intermédiaires entre la source et la destination, Bélier réunit tous les éléments nécessaires pour qu’un administrateur, avec son seul poste de travail, puisse administrer son réseau de manière indépendante sans devoir/pouvoir modifier les serveurs dont il a la charge.

Bélier génère un script expect en sortie qu’il vous suffira d’exécuter pour atteindre votre machine.

Bélier n’est pas une alternative à l’échange de clés ssh ou à des solutions centralisées de déploiement de logiciels. Son rôle est de permettre à un administrateur système qui ne possède pas la maîtrise totale de son parc, qui ne peut pas mettre en place une solution centralisée d’administration, de travailler de manière productive sans perdre un temps considérable à atteindre ses machines.

Des exemples concrets d’utilisation sont disponibles ici :

http://www.ohmytux.com/belier/#toc8

Quelques fonctionnalités :

  • atteinte d’une machine cible à travers plusieurs machines intermédiaires
  • lancement d’une commande d’une machine source vers une machine cible à travers plusieurs machines intermédiaires
  • possibilité de changer de compte sur chaque machine du chemin (pour utiliser un échange de clé ou se conformer à une restriction d’accès)
  • possibilité de changer de port entre chaque connexion ssh du chemin
  • vous pouvez définir les mots de passe ou non (utilisation d’un échange de clé existant)

Bélier sera présenté dans un lightning talk au Pycon Fr http://pycon.fr le 31/05/09. Un retour d’expérience sur le développement de Bélier aura également lieu aux Rencontres Mondiales du Logiciel Libre à Nantes le 09/07/2009.

Comme annoncé au début du message, je recherche un sponsor Debian pour ce paquet. Tout retour sur l’empaquetage d’un mainteneur/DD me sera extrêmement profitable. Et bien sûr tous les retours d’éventuels testeurs en général.

23:09 par carlchenet (Commentaires)

Benoit Peccatte

Pas d'écran, pas de chocolat

Niveau : Star Star Star Empty Empty
Résumé : Xvnc

Sup­po­sons une machine sur laquelle vous n’avez pas d’écran. Vous vou­driez tout de même pou­voir y accé­der en mode gra­phi­que. Pour ma part, il s’agit de met­tre en place une machine auto­nome, qui ser­vi­rait à dif­fu­ser la musi­que sur mon ampli. Pas de place pour l’écran, le pro­blème, il faut bien la com­man­der un peu de temps en temps.

Pour cela il y a plu­sieurs solu­tions

Solu­tion A

Dans le cas de dif­fu­sion de musi­que, il est pos­si­ble de trou­ver un sys­tème pure­ment ser­veur per­met­tant d’être com­mandé par une inter­face web ou un client en ligne de com­mande. Je pense à des plu­gins spé­ci­fi­ques à des client habi­tuels ou à des ser­veurs comme mpd sans inter­face gra­phi­que.

Incon­vé­nient, l’inter­face est assez peu intui­tive et néces­site une cer­taine bidouille pour être acces­si­ble par tous. De plus on passe du temps pour fina­le­ment ne faire que de la musi­que (si on veut que la machine fasse aussi alarme, il faut repar­tir dans la bidouille.

Solu­tion B

Un solu­tion très unixienne avec inter­face gra­phi­que serait de met­tre en place XDMCP sur le ser­vice de con­nexion (gdm, kdm …). Bonne solu­tion, même pour les clients win­dows puis­que xming per­met de faire ser­veur X sous win­dows.

Cette solu­tion nous per­met­trait de dis­po­ser de tous les avan­ta­ges d’un bureau inté­gré, par exem­ple, régler le son, con­fi­gu­rer une radio … Par con­tre, cette solu­tion a l’incon­vé­nient de ren­dre la machine con­cer­née non auto­nome. A la moin­dre décon­nexion, pof, plus de musi­que. Mais expli­quons quand même la solu­tion briè­ve­ment.

  • Acti­vez XDMCP sur votre *dm
    • gdm : dans /etc/gdm/gdm.conf
    • kdm : dans /etc/kde*/kdm/kdmrc
##########­MA­CRO#0#
  • Con­nec­tez vous avec votre ser­veur X
    • X86 ou Xorg :
##########­MA­CRO#1#


** Xming : xlaunch / “One WIn­dow” / “Open ses­sion via XDMCP” / “Con­nect to Host”

Solu­tion C

Pour pou­voir sur­vi­vre aux décon­nexions, il existe un pro­to­cole vnc. On peut uti­li­ser vnc de deux façons :

  • sur un ser­veur X exis­tant auquel on est con­necté
  • sur un ser­veur X vir­tuel qui ne fait aucun affi­chage réel, juste ser­veur X et ser­veur vnc

Dans le pre­mier cas on uti­li­sera x11vnc, qu’il est pos­si­ble de lan­cer une fois con­necté en tant qu’uti­li­sa­teur. Mais cela ne cor­res­pond pas trop à notre cas d’usage.

Dans le Deuxième cas, il suf­fit de dire à notre *dm de ne pas lan­cer de ser­veur X nor­mal, mais un ser­veur vnc. Pour gdm, il suf­fit de modi­fier gdm.conf :

[daemon]
# pour éviter les paramètre incompris de Xvnc
VTAllocation=false

[servers]
# liste des serveur à lancer
0=vnc device=/dev/console

[server-vnc]
# définition d'un serveur X utilisant directement vnc
name=vnc server
command=/usr/bin/Xvnc -PasswordFile=/root/.vnc/passwd -audit 0
flexible=true

Notez que rien ne vous empê­che de lais­ser gdm lan­cer un ser­veur X habi­tuel en plus d’un ser­veur Xvnc (met­tre un 1 à la place du 0).

Pour kdm, (atten­tion, pas testé) :

[X-:*-Core]
ServerCmd=/usr/bin/Xvnc
ServerArgsLocal="-PasswordFile=/root/.vnc/passwd"

Notez le sto­ckage du mot de passe dans /root/.vnc/passwd, vous le met­tez où vous vou­lez, mais c’est la qu’il est créé par la com­mande ser­vant à créer le fichier :

$ vncpasswd

Très bien, mais le ser­veur ne ser­vant pas à plu­sieurs per­son­nes et sachant qu’il n’est acces­si­ble que sur le réseau local, on vou­drais ne pas avoir à pas­ser l’étape de con­nexion.

Solu­tion D

Le sys­tème D con­siste donc à se pas­ser du dm. Ma solu­tion (spé­ci­fi­que à mon cas musi­cal, mais sim­ple à répé­ter) est de me faire un script qui lan­cera tout ça au démar­rage (j’éteins gdm plu­tôt que de le con­fi­gu­rer pour se con­nec­ter auto­ma­ti­que­ment).

Au pas­sage, j’ai créé un uti­li­sa­teur music, mais vous vous en fou­tez.

Chez mon nou­vel uti­li­sa­teur, j’ai créé le script sui­vant :

#!/bin/sh
# -geometry : un serveur X avec des dimensions satisfaisantes pour la plupart des utilisateurs
# -AlwaysShared : forcer le partage du serveur lorsque plusieurs utilisateur se connectent
# -PasswordFile=/home/music/.vnc/passwd : à remplacer par "-SecurityTypes None"
#                  pour les fous qui ne veulent aucun mot de passe
Xvnc  -geometry 1000x700 -AlwaysShared -SecurityTypes None -audit 0 :0 &
sleep 1
export DISPLAY=:0
# environnement de bureau à lancer
startxfce4  &
sleep 1
# on avertit le quidam dans la pièce qu'on est prêt (30ms, 600hz)
beep -l 300 -f 600

Pour trou­ver com­ment lan­cer l’envi­ron­ne­ment de bureau qui vous inté­resse, il suf­fit de lire les réper­toi­res /usr/share/xses­sions et /etc/dm/Ses­sions, ils con­tien­nent la liste des bureaux con­nus des *dm. Une fois le bon fichier trou­vén repé­rez la ligne Exec= et vous aurez la com­mande.

Et astuce pour le polish, on met ce script dans un cron de l’uti­li­sa­teur con­cerné pour qu’il se lance auto­ma­ti­que­ment au démar­rage de la machine :

$ crontab -e
# m h  dom mon dow   command
# Notez le @reboot magique
@reboot /home/music/script.sh

Voila, il suf­fit de se con­nec­ter avec un client vnc. On peut trou­ver vnc­vie­wer sous linux et sous win­dows. On peut avoir plu­sieurs uti­li­sa­teurs, et on peut avoir une uti­li­sa­tion sim­ple du sys­tème.

16:16 par Peck (Commentaires)

Shams Fantar

Linux-libre, un kernel 100% libre !

C'est avec surprise que j'ai lu que les kernels fournis par debian.org (qui eux, viennent de kernel.org, avec quelques changements entre temps) ne sont pas totalement libres ! Etonnante decouverte je trouve, on nous parle de systemes 100% libres, alors qu'il n'en est rien...

Linux-libre est donc un noyau 100% libre, c'est un noyau ou tous les outils (ils appellent ca des softwares...) non-libres inseres dans le kernel sont supprimes. Pour supprimer les outils non-libres, ils utilisent un script : deblob-main.

Les sources du kernel 100% libre sont disponibles ici, elles sont a compiler comme pour un kernel venant de kernel.org.

Des kernels pre-compiles sont disponibles pour debian et Fedora.

Pour information, linux-libre fonctionne tres bien chez moi sur une debian sid. Sous debian, le noyau n'est pas officiel, le paquet .deb est maintenu par un contributeur debian.


14:16 par Scurz

21 mai 2009

Shams Fantar

Podcasts OxyRadio - Ubuntu party

OxyRadio, la radio 100% libre était présente durant l'Ubuntu party du week-end dernier.

Durant ces deux jours, les animateurs de la radio ont interrogé différentes personnes (contributeur debian, Pierre-Yves Gosset, etc.) sur différents projets (des contributeurs surtout).

Des podcasts des interviews sont disponibles sur cette page.

Merci à eux une fois de plus ! Les intervews sont de qualité et très interessantes !

PS : court billet mais il n'est là que pour signaler la présence des podcasts car je n'ai vu aucun blog en parler.

19:49 par Scurz

18 mai 2009

Carl Chenet

Reportbug


Depuis le début de ma participation au projet Debian, j’ai principalement travaillé sur le programme reportbug. Petite présentation d’un programme fondamental qui pourrait être plus utilisé. Précisons que la présentation suivante décrit le mode texte mais le programme est dans ses dernières versions utilisable à l’aide d’une interface graphique en GTK2 (option –ui gtk2).

Reportbug permet d’envoyer un rapport de bug au projet Debian. Lorsque tout un chacun identifie un problème avec une application, il est nécessaire d’envoyer un rapport de bug pour que le problème soit pris en compte et donc résolu (pas de rapport de bug ? Pas de problème !).

Pour saisir un rapport de bug :

$ reportbug

Par défault la commande reportbug s’exécute en mode configuration à son premier lancement. Si ce n’était pas le cas, forcez l’exécution de l’assistant de configuration avec l’option suivante :

$ reportbug –configure

La commande reportbug va vous demander votre niveau d’expertise, par défaut novice (modifiable par la suite dans le fichier ~/.reportbugrc ou par l’option –mode de la commande). Si vous optez pour un niveau plus avancé, le nombre de questions et de contrôles se réduit.

Reportbug va générer un e-mail et l’envoyer au projet Debian. Vous devez donc avoir un serveur smtp local ou distant. Par défaut reportbug va également tenter de se connecter en http au projet debian pour récupérer une liste des bugs qui peuvent concerner votre problème afin que vous contrôliez si votre problème n’existe pas déjà. Veillez donc à ce que l’utilisation du http soit autorisé depuis votre ordinateur vers les serveurs du projet Debian. Vous pouvez préciser un éventuel proxy http.

Une fois la phase de configuration effectuée, relancez reportbug :

$ reportbug

Reportbug va vous poser une série de questions afin d’identifier votre problème le mieux possible. Il cherche également à récupérer quelques informations système sur votre configuration afin de les joindre au rapport.

Si la première utilisation de reportbug peut sembler fastidieuse à cause du grand nombre de questions posées, vous constaterez rapidement qu’elles ne visent qu’à affiner le champ des possibles de votre problème, afin que le développeur qui va s’y intéresser n’est pas à courir à droite et à gauche pour comprendre ce qui est arrivé. Vous facilitez ainsi sa tâche et n’avez plus qu’à attendre un retour de sa part.

Comptez en général 15 minutes pour venir à bout de votre premier rapport, 5 minutes pour les suivants, l’habitude aidant.

Le prochain billet s’attardera sur les évolutions récentes de reportbug.

17:24 par carlchenet (Commentaires)

Benoit Peccatte

Perl est votre ami

Niveau : Star Star Star Empty Empty
Résumé : perl­con­sole

Vous déve­lop­pez régu­liè­re­ment vos scripts en perl ? Si oui : lisez ceci ou cela ou encore d’autres cho­ses plus ou moins uti­les.

Si oui vous devez faire des tests de temps en temps. Je me suis habi­tué à faire des perl -e ou perl -pe pour des peti­tes cho­ses. Mais il existe un outil bien plus pra­ti­que : perl­con­sole.

Son usage est sim­ple :

$ perlconsole

Pour le debug, cet outil est sympa puisqu’il per­met de taper les com­man­des une par une et d’en avoir la valeur de retour.

Pour le déve­lop­pe­ment cet outil est par­fois un peu lourd puisqu’il ren­voie la valeur de retour de tou­tes les com­man­des tapées, même si cela ne nous inté­resse pas vrai­ment.

Autre fonc­tion­na­lité qui ravira cer­tains, les valeurs de retours peu­vent être affi­chées sous dif­fé­ren­tes for­mes. Ce qui veut dire qu’il est pos­si­ble d’avoir un dump com­plet du résul­tat de cha­que com­mande. Il suf­fit pour cela d’entrer la com­mande sui­vante pour les habi­tués de Data::Dum­per :

:set output=dumper

Mais il existe aussi une sor­tie yaml, que je trouve per­son­nel­le­ment plus lisi­ble pour des struc­tu­res ne dépas­sant pas une page.

:set output=yaml

16:57 par Peck (Commentaires)

13 mai 2009

Benoit Peccatte

Lire dans les paquets

Niveau : Star Star Star Empty Empty
Résumé : ngrep ; net­sed ; tcp­dump | strings

Grep

Pour lire ce qui passe en TCP en fil­trer des mots clés vous avez plu­sieurs tech­ni­ques.

Com­men­çons par la tech­ni­que bour­rin, mais qui mar­che :

# on dumpe en gardant les data, dont on extrait les chaines de caractère
$ tcpdump -s0 -w - port 80 | strings | egrep "html|head"

Pra­ti­que et facile à mémo­ri­ser. Cette tech­ni­que per­met pas mal de cho­ses, mais est à con­si­dé­rer pour des ser­veur peu char­gés.

Ngrep

Ngrep lui, est capa­ble de vous sor­tir uni­que­ment les paquets dont les don­nées mat­chent une expres­sion. L’usage n’est pas for­cé­ment le même que le pré­cé­dent, ici on a un paquet com­plet :

$ ngrep "html|head" "port 80"

Pra­ti­que quand on est à la recher­che d’un paquet foi­reux, ou qu’on veut loguer ce qui ce passe pen­dant un pro­blème.

Sed

Un autre outil pour tes­ter une appli­ca­tion réseau, c’est net­sed (du paquet bien nommé). Une com­mande bien utile qui crée un proxy tcp ou udp capa­ble de modi­fier les paquets en direct.

Il ne fait ça qu’avec des expres­sions basi­ques :

# Attention pas de résolution de nom
$ netsed tcp 1080 1.2.3.4 80 's/Developpement/Production'
# Test 
$ telnet localhost 1080

Atten­tion, con­trai­re­ment à ce qu’on pour­rait croire, ce ne sont pas des vraies expres­sion sed, on est assez limité. D’autre part net­sed fonc­tionne sur des paquets, ce qui veut dire que dans un petit nom­bre de cas, il ne fait pas ce qu’on veut (don­nées à mat­cher répar­tie sur 2 paquets).

En fait, il faut pren­dre cet outil pour ce qu’il est, un outil de test et de debug. D’autant plus qu’il faut tou­cher au client pour le redi­ri­ger vers le port d’écoute de net­sed.

16:30 par Peck (Commentaires)

12 mai 2009

Carl Chenet

Concours de Raphaël Hertzog et GMLF


Après huit semaines d’implication dans le projet Debian, un petit point s’impose :

  • Le concours de Raphaël Hertzog et du mensuel GMLF a été un élément déclencheur, il y a longtemps que je cherchais comment m’investir au sein de Debian.
  • Les débuts ont été difficiles (réapprendre à lire du code, réaliser des patchs qui ne plaisent pas toujours) mais ces interactions avec des personnes compétentes s’avèrent au final passionnantes.
  • J’ai rapidement trouvé les projets qui me correspondaient, il suffit de chercher un peu, ça recrute de partout chez Debian :)
  • L’appréciation d’un DD sur mon travail a été une grande récompense, surtout quand je l’ai vu apparaître sur planet.debian.org (merci Sandro!)

Maintenant que je suis lancé, je ne compte pas m’arrêter là. Les prochains billets vous tiendront informés de mes participations à Debian.

ps :  … et ce petit blog pour faire partager ce que je vis en contribuant.

22:03 par carlchenet (Commentaires)