vendredi 11 avril 2008

Pas de violence, c'est les vacances...

Ca y est, j'ai enfin quitté le bureau (à 18h30, arghhh) et vraiment ce futur mois de vacances ne va pas être du luxe. Conseil d'ami: ne passez pas une release en production juste avant de partir, vous pouvez être sûr que la loi de Murphy sera de la partie. Vite, vite, faire les derniers achats à la pharmacie (renouveler mon stock d'aspirine), passer à la Fnac chercher Mario Kart (carton rouge à Finaref qui m'a fait perdre un bon quart d'heure pour obtenir ma nouvelle carte : d'après le système, celle-ci n'a pas pu être délivré à la maison alors que la facture a trouvé toute seule le chemin de la boîte aux lettres). Hop, hop: on termine d'empaqueter les affaires dans le sac: le GPS datalogguer (j'en parlerai dans un prochain article), mon nokia 770 (pour se diriger en ville) et mon Asus EEE PC qui seront nos seuls liens avec Internet. On range un minimum, quelques coups de téléphone, dernier mails à envoyer (j'ai trouvé pourquoi ma carte réseau ne marchait plus sous Hardy), dodo, réveil, petit dej' et Marianne et Sylvain en bas de chez moi : Japon me voilà.

PS à mes collègues: non, je n'ai pas pris mon token RSA.

jeudi 17 janvier 2008

Un pas dans la bonne direction...

Yahoo! n'est pas la compagnie la plus réputée pour son implication dans les standards du web ou bien dans l'opensource (certainement à tort si on regarde ici ici ici et ici) mais son dernier communiqué de presse va peut être changer la donne : Yahoo!a annoncé officiellement le support d'OpenID 2.0. En clair, il sera bientôt possible (la beta commence le 30 janvier) de se logger sur n'importe quel site utilisant OpenID avec son identifiant Yahoo!

C'est certainement un signe de bonne volonté de la part de Yahoo! (ou un bon coup de pub diront certains) mais c'est aussi une aubaine pour OpenID qui voit le nombre d'identifiants OpenID passer automatiquement de 120 millions à 368 millions (ouch!).

Mention spéciale pour Orange qui propose le même service à toutes les personnes possédant un compte sur son portail.

mercredi 17 octobre 2007

Ca aurait pû être du rugby...

...mais en fait non.

Aujourd'hui j'ai reçu ma certification Scrum Master suite à deux jours de formation intensive orchestrée par Gabrielle et Nicola.

Pour ceux qui ne connaissent pas Scrum, il s'agit d'une méthode agile de développement dont un des principaux pilliers est l'esprit d'équipe : l'équipe (de développement) est auto-gêrée, l'équipe s'engage auprès du client, l'équipe prend les décisions. Pas vraiment de chef de projet mais un rôle clef (pour lequel j'ai été certifié) : le scrum master qui est une sorte de pivot ou médiateur. Il protège l'équipe des influences extèrieurs, s'arrange pour éliminer les points bloquants, etc... Ceux qui pratiquent la langue de Shakespeare (ou éventuellement le Mandarin) trouveront sur le site Scrumprimer une excellente introduction.

En ce qui concerne la formation elle-même, elle est franchement excellente (même si cela est dû en partie aux formatrices et aux participants) et très ludique (mini-jeux pour illustrer les différents points).

Bien sûr, Scrum n'est pas LA méthode à utiliser à tout prix (et elle n'a pas cette prétention) mais si votre équipe n'est pas trop grosse et relativement experimentée, que votre client change souvent d'avis ou a besoin de voir régulièrement l'évolution du développement, elle peut sans doute vous aider.

PS: Pour ceux qui se demandent encore le rapport avec le rugby, il suffit de faire un tour sur le wiktionnaire

mercredi 10 octobre 2007

Leçon de sécurité pour les nuls

Rien de mieux qu'un petit dessin pour illustrer un long discours. Aujourd'hui xkcd nous en gratifie d'un particulièrement savoureux sur les injections SQL.

Enjoy...

lundi 8 octobre 2007

La citation du jour

"L'architecte est au développeur ce que le critique est à l'artiste" (moi-même)

samedi 6 octobre 2007

Ubuntu, ssh et PermitRootLogin...

Ca pourrait être le titre d'une sitcom comme "Amour, Gloire et Beauté" [1] mais c'est plutôt quelque chose qui m'a déçu légèrement auprès d'Ubuntu : "par défaut" le serveur ssh est configuré avec PermitRootLogin à on. Pour ceux qui ne parlent pas le ssh couramment, cela veut dire que ssh autorise un utilisateur externe à se connecter à la machine directement en superutilisateur (avec tous les droits) à condition bien sûr qu'il donne le bon mot de passe. Mais comme Ubuntu n'active pas le mot de passe root -"par défaut"- c'est donc quelque chose d'impossible (sauf si l'administrateur de la machine a installé un mot de passe pour root). L'honneur est donc sauf ?

Pour moi, clairement non: deux précautions valent mieux qu'une et quand on voit le nombre de tentatives faites directement sur le compte root[2], je pense franchement que c'est un peu tirer le diable par la queue. Malheureusement ce n'est pour l'instant pas l'avis des mainteneurs Ubuntu de ssh (et manifestement de ceux d'OpenBSD).

Moralité: être parano en matière de sécurité, ne pas faire aveuglement confiance dans les réglages faits par d'autres (fussent-ils les mainteneurs de ma distribution préférée).

PS: PermitRootLogin ne prend pas uniquement "on" et "off" comme valeurs, il prend aussi "without-password" qui autorise l'authentification par clef publique uniquement et "forced-commands-only" qui autorise uniquement l'authentification par clef publique et l'execution d'une commande précise (à préciser dans le fichier authorized_keys, potentiellement utile pour lancer un backup par exemple)

Notes

[1] Je viens d'ailleurs de comprendre que "Amour, Gloire et Beauté" sur France 2 et "Top Models" sur RTL9 sont en fait la même série

[2] ne pensez pas que votre compte "toto" soit à l'abri, il est juste essayé moins frequemment

vendredi 5 octobre 2007

A mes amis les démarcheurs et autre télémarketeurs...

J'ai une certaine sympathie pour les démarcheurs par téléphone (sauf les lâches qui le font par répondeur interposé). Je ne les ai pas souvent au téléphone (merci Free d'inclure la présentation du numéro) mais quand j'en ai l'occasion (généralement après un réveil difficile qui m'empêche de lire l'afficheur de mon téléphone), je tombe sur une personne qui gentillement, voire très gentillement :

  • se présente par son prénom (c'est tellement plus convivial) en me disant que j'ai gagné un magnifique lot (voyages, canapé, téléphone portable) ou me demande quel type d'accès à Internet je possède
  • me demande si je suis bien M. ou Mme Goujon (j'en déduis qu'à la voix, cela ne se déduit pas)
  • très souvent me demande aussi si je suis retraité (idem) (et raccroche dans le cas contraire)
  • et dans tous les cas j'ai droit au final à un petit speech au prompteur qui laisse penser que mon interlocuteur a été coaché par J-P l'agitateur[1]

Mais comme je l'ai dit précédemment, je reçois ce genre d'appel au moment où je suis le plus facilement irritable, ils ont droit dans le pire des cas à :

  • "Je ne suis pas intéressé" ** Clac! **
  • "Je suis sur liste Orange[2] j'ai donc demandé à ne pas être démarché par téléphone. Merci donc de retirer mon numéro de votre base (surtout que je ne suis pas retraité) car je n'hésiterai pas à porter plainte la prochaine fois [3] "
  • "... Oui mais non merci. Au revoir"

Cela me laisse aussi penser que certains d'entre eux n'ont manifestemenent pas lu le code de déontologie du télémarketeur (c'est surtout leur employeur voire le client qui aurait du le lire...).

Et bien un jour, peut-être qu'au lieu de débiter les banalités habituelles citées ci-dessus, je passerai à la vitesse supérieure et je leur dirai cela (attention le prompteur qui suit est en anglais).

Notes

[1] Oui c'est gratuit mais on ne peut pas aimer tout le monde

[2] malgé le lien, ce n'est pas spécifique à cet opérateur

[3] ils ne savent pas que je bluffe

mercredi 3 octobre 2007

Lancer un script mysql sans donner ni l'utilisateur ni le mot de passe sur la ligne de commande

Voici mon problème du jour : Comment lancer un script (de maintenance par exemple) qui fait appel à mysql, sans stocker en dur le nom de l'utilisateur et le mot de passe (ce qui est mal, très très mal). Le but est que seul un utilisateur privilégié (je n'ai pas forcément dit root ! je pense plutôt à un compte système comme mysql par exemple) puisse lancer ce script.


C'est plutôt facile, et je fournis trois solutions pour la peine :
  1. Avoir un fichier de configuration pour le script accessible seulement par l'utilisateur privilégié

    On définit dans le fichier de configuration des variables d'environnement, une pour le user, une autre pour le mot de passe. Dans le script il ne reste qu'à utiliser la commande source pour récuperer ses variables (seul l'utilisateur privilégié pourra lire le fichier). Simple et efficace.

  2. Avoir un fichier de configuration pour mysql accessible seulement par l'utilisateur privilégié

    Variante de la précédente : on crée un fichier de configuration spécifique pour mysql (que l'on pourra mettre par exemple dans /etc/mysql mais il n'y a aucune obligation). Et on utilise l'option --defaults-file pour que mysql lise le contenu du fichier (il lit notamment les sections [client] et [mysql]). Exemple de fichier:

    [client]
    host = localhost
    user = votre_user
    password = votre_mot_de_passe
    socket = /var/run/mysqld/mysqld.sock
    Bonus : on peut spécifier d'autres options pour influer sur mysql (en vrac, le nom de serveur, le jeu de caractères...).
  3. Pour ceux qui ont plusieurs scripts mais qui ont des options qui diffèrent légèrement

    Vous avez des scripts quasiment identiques mais les options diffèrent légèrement (ou vous voulez centraliser tout en un seul fichier) : c'est possible. C'est une variante du cas précedent : on écrit un fichier de configuration mysql que l'on découpe en plusieurs sections. Ensuite, on fait appel au programme my_print_defaults ! my_print_defaults examine le fichier de configuration (option -c pour spécifier le votre...) et donne en sortie les paramètres à passer à mysql sous forme d'argument. Exemple :

    $ my_print_defaults -c /etc/mysql/maconf.cnf client 
    --host=localhost
    --user=votre_user
    --password=votre_mot_de_passe
    --socket=/var/run/mysqld/mysqld.sock
    Il ne reste plus qu'à passer cela à mysql en récuperant la sortie dans une variable (ou en utilisant cette petite merveille de xargs).

mardi 2 octobre 2007

Petit truc en vrac

Je suis souvent confronté à des petits problèmes dont je ne trouve pas immédiatement la solution (ce qui n'engendre chez moi que frustration et désespoir, et chez certains de mes collègues une perte de leur capacité auditive). Et parfois, après, alors que j'étais sur totalement autre chose, je découvre ce que je cherchais désespérement. Si, si.

Dans le principe que "Si j'ai ce problème, il y a de fortes chances que d'autres soient dans le même cas de figure", voici le premier billet d'une probablement longue série.

Problème: Comment executer un script au démarrage d'une machine quand on n'est pas root !
Quelques précisions: l'un de mes amis et colocataires de notre serveur dédié utilise fetchmail. Mais à chaque fois qu'il y a reboot du serveur (ce qui est arrivé une ou deux fois), adieu fetchmail... Donc pour parer à cela, il a ajouté un script dans sa crontab pour vérifier toutes les heures si fetchmail est démarré, et dans le cas contraire, le script lance fetchmail. Pas mal mais peut on faire mieux ?

La réponse est oui, du moins si on utilise Vixie cron (le cron par défaut d'ubuntu et de tant d'autres) dans sa version 3 (qui date de 1993). Oui, ce bon vieux cron que l'on croit seulement capable de lancer des tâches périodiquement. En faisant un simple man 5 crontab, on tombe sur ce paragraphe:

À la place des cinq premiers champs peut apparaître l’une des huit chaînes spéciales :


              chaîne         signification
              ------         -------
              @reboot        Exécuter une fois au démarrage.
              @yearly        Exécuter une fois par an, « 0 0 1 1 * ».
              @annually      (idem que @yearly)
              @monthly       Exécuter une fois par mois, « 0 0 1 * * ».
              @weekly        Exécuter une fois par semaine, « 0 0 * * 0 ».
              @daily         Exécuter une fois par jour, « 0 0 * * * ».
              @midnight      (idem que @daily)
              @hourly        Exécuter une fois par heure, « 0 * * * * ».

et oui un simple @reboot et le tour est joué...

mardi 7 août 2007

Maintenant, je sais...

Oui, je sais...

NB : Tout le monde meurt un jour ou l'autre, la question est de savoir (ou de ne pas savoir) quand... Dans le cas d'Harry, le point intéressant, c'était de savoir s'il survivait à sa dernière année d'étude.

- page 9 de 10 -