Trucs libres

CV
en

dimanche 3 janvier 2010

Lecteur d'empreintes digitales de Thinkpad sous Ubuntu Karmic

Voici comment configurer simplement le lecteur d’empreintes digitales de votre Thinkpad sous Ubuntu Karmic en utilisant ThinkFinger.

Installez les paquet thinkfinger-tools (pour l’acquisition et la vérification) et libpam-thinkfinger (pour l’intégration avec PAM):

sudo aptitude install thinkfinger-tools libpam-thinkfinger

Ceci fait, vous pouvez tester l’acquisition/vérification. En tant qu’utilisateur, tapez les commandes :

tf-tool --acquire
# passez trois fois votre doigt
tf-tool --verify
# passez votre doigt, puis un autre doigt...

Note : les commandes doivent fonctionner en tant qu’utilisateur si ce dernier est dans le groupe plugdev.

Ensuite, il faut brancher le lecteur à PAM, comme indiqué dans /usr/share/doc/libpam-thinkfinger/README.Debian :

sudo /usr/lib/pam-thinkfinger/pam-thinkfinger-enable

Et voila, maintenant, redémarrez le système puis testez le passage du doigt à la place de taper le mot de passe. À la connexion GDM et lorsque vous tapez "sudo", l’invite "Password or swipe finger:" s’affiche pour vous authentifier.

Notes :

  • Tester les différents programmes du menu __Administration. Le "swipe finger" ne s’affiche pas toujours mais doit fonctionner quand même.
  • À ma connaissance, ça ne fonctionne pas au vérouillage de l’écran (gnome-screensaver).

Références :

samedi 2 janvier 2010

Un terminal léger : urxvt

Dans ma recherche d’un terminal simple et léger, je suis tombé sur urxvt.

xvt et rxvt ne supportent pas les caractères Unicode. Il faut utiliser urxvt :

aptitude install rxvt-unicode

Non pas que j’ai trouvé que xterm soit trop lent pour mon utilisation. C’est plus ma curiosité de geek qui a pris le dessus. Mais comme je n’aime pas les terminals à onglets et que j’ouvre plein de terminaux différents, je me suis dit que urxvt ferait surement l’affaire.

Ensuite, on peut paramétrer urxvt en utilisant le fichier ~/.Xdefaults :

vi ~/.Xdefaults
Rxvt*scrollBar: False
Rxvt*background: black
Rxvt*foreground: white
Rxvt*geometry: 110x35

J’utilise une géométrie qui me permet de faire rentrer 4 terminaux dans mon écran.

Note : vous pouvez aussi placer les paramètres dans ~/.Xresources, mais vous devrez redémarrer X ou utiliser la commande xrdb -merge ~/.Xresources pour charger les paramètres.

Je vous conseille aussi l’utilisation d’un raccourci clavier pour lancer vos terminaux. Dans Gnome :

  1. Configurez votre terminal par défaut dans Système > Préférences > Applications préférées
  2. Puis dans Système > Préférences > Raccourcis clavier, il y a une entrée Lancer un terminal. Moi j’utilise Alt+X.

Références :

lundi 14 décembre 2009

Afficher les commandes au démarrage d'Ubuntu

Par défaut, Ubuntu démarre avec l’écran "splash" sans rien afficher des actions qu’il effectue.

Avant Ubuntu Karmic (Grub ancien), il faut éditer /boot/grub/menu.lst pour enlever les quiet.

Depuis Ubuntu Karmic (nouveau Grub) :

sudo vi /etc/default/grub
# enlever "quiet"
sudo update-grub

Lien :

Voir aussi :

[Ubuntu Karmic] Empathy au démarrage

Pour lancer automatiquement Empathy au lancement d’Ubuntu Karmic :

sudo cp /usr/share/applications/empathy.desktop /etc/xdg/autostart/

Cela ajoute automatiquement une entrée dans les applications au démarrage de Gnome.

Sources :

vendredi 11 décembre 2009

11 modèles économiques pour le logiciel libre

Un article très intéressant présentant 11 modèles économiques possibles pour le logiciel libre :

http://blogs.zdnet.com/open-source/?p=5371

Référence :

jeudi 10 décembre 2009

[Dotclear] Désactiver un plugin sans interface

Pour désactiver une extension dans Dotclear 2.1.6 sans utiliser l’interface d’administration, c’est très simple. Il faut créer un fichier _disabled vide dans le dossier du plugin :

touch plugins/monplugin/_disabled

Et pour le réactiver ? On supprime le fichier.

Référence :

  • vi inc/core/class.dc.modules.php

[SSH] Changement de répertoire à la connexion

Problème :

Je souhaite créer un alias serveur-www qui me connecte au serveur en SSH et m’amène automatiquement dans le dossier /var/www/.

Voici :

ssh -t serveur 'cd /var/www && $SHELL'

Et pour l’alias qu’on pourra ensuite mettre dans son ~/.bashrc :

alias serveur-www="ssh -t serveur 'cd /var/www && $SHELL'"
serveur-www # pour tester

Références :

Hibernation sans verrouillage du trousseau

Par défaut sous Ubuntu, le trousseau est systématiquement verrouillé à l’hibernation. Ainsi, on vous demande le mot de passe du trousseau à la sortie de l’hibernation.

Pour désactiver ce verrouillage :

  1. Allez dans Applications > Outils système > Éditeur de configuration
  2. Décocher /apps/gnome-power-manager/lock/gnome_keyring_hibernate

Note : vous pouvez aussi lancer l’éditeur de config par la commande gconf-editor.

Référence :

  • Recherche de "lock" dans l’éditeur de configuration.

Autologin Gnome et déverrouillage du trousseau avec mot de passe

Quand vous avez configuré la connexion automatique (autologin) sous Gnome/Ubuntu, rien de plus agaçant que la fenêtre demandant de déverrouiller le trousseau au démarrage, pour que network-manager puisse utiliser les clés Wifi !

Si votre mot de passe de trousseau est le même que celui du login, le trousseau est déverrouillé automatiquement lorsque vous tapez le mot de passe à la connexion, ce qui n’est pas possible en autologin.

Une solution est de mettre un mot de passe de trousseau vide, mais c’est mauvais pour la sécurité de tous vos mots de passe.

La meilleure solution serait de stocker les clés wifi dans le trousseau par défaut, et de stocker tous les autres mots de passe dans un autre trousseau. J’ai peut-être mal cherché mais à ce que j’ai vu la plupart des applications utilisent uniquement le trousseau par défaut.

Solution intermédiaire : mettre un mot de passe "bidon" au trousseau par défaut, déverrouillé au démarrage de Gnome par un script, ce qui est quand même mieux qu’un mot de passe vide.

Voici donc ma solution :

On change le mot de passe du trousseau par défaut :

  1. Aller dans Applications > Accessoires > Mots de passe et clés de chiffrement (inutile comme moi de chercher dans Système > Préférences pendant 2 heures, là où il devrait être)
  2. Clique droit sur le trousseau par défaut > Changer le mot de passe

On crée ensuite le script python contenant le code suivant :

vi ~/.lordiam.py
#!/usr/bin/python
import gnomekeyring
#gnomekeyring.lock_sync(None);
gnomekeyring.unlock_sync(None, 'monmotdepasse');

On empêche aux autres utilisateurs de lire le fichier :

chmod 700 ~/.lordiam.py

On teste. On doit obtenir 0 comme code de retour (le warning est normal) :

~/.lordiam.py
echo $?

Maintenant, on ajoute le script au démarrage dans Système > Préférences > Applications au démarrage :

Commande : /home/UTILISATEUR/.lordiam.py

Enfin, on redémarre son PC pour tester le tout.

Notes :

  • C’est un "coup de chance" que le script soit appelé avant le lancement de network-manager. Je n’ai pas trouvé comment le placer prioritaire dans la liste des programmes au démarrage de Gnome.
  • À quoi sert le trousseau ’login’ ? À ce que j’ai compris, il sert à stocker les mots de passes qui seront oubliés à la fin de la session.
  • Pour le script, on choisira un nom moins remarquable que unlock_keyring.py. De même, on met le script en fichier caché. C’est toujours mieux que rien.

Références :

  • apt-get source libpam-gnome-keyring
  • apt-get source python-gnomekeyring

jeudi 3 décembre 2009

Pour un Thinkpad silencieux

Certains Thinkpads, dont le T43, ont plusieurs problèmes de chaleur et de ventilation.

Sur une installation Linux par défaut, le processeur de mon T43 fait 46°C en moyenne, et le GPU 49°C pour une température extérieure de 19°C.

L’algorithme de gestion du ventilateur par le BIOS est très mauvais, si bien qu’après un démarrage à froid, le ventilateur se met à tourner sans arrêt après quelques minutes d’utilisation.

Fort heureusement, il est possible d’utiliser des programmes pour prendre le contrôle du ventilateur à la place du BIOS.

Pour commencer, le module thinkpad_acpi doit nous autoriser à changer la vitesse du ventilo :

# vi /etc/modprobe.d/thinkpad.conf
options thinkpad_acpi fan_control=1 experimental=1

Au choix, vous pouvez recharger le module, ou relancer votre système.

# rmmod thinkpad_acpi
# modprobe thinkpad_acpi

Vous pouvez désormais prendre le contrôle de votre ventilo :

# cat /proc/acpi/ibm/fan
# echo level 0 > /proc/acpi/ibm/fan
# echo level 7 > /proc/acpi/ibm/fan # pleine puissance !!
# echo level auto > /proc/acpi/ibm/fan # retour à la normale, on laisse le BIOS prendre la main

Maintenant, rendez-vous ici et copiez le contenu du script dans /usr/local/bin/tp-fancontrol.

# mv index.php /usr/local/bin/tp-fancontrol
# chmod a+x /usr/local/bin/tp-fancontrol

Ensuite, pour tester le script :

# tp-fancontrol
# tp-fancontrol -s 5 # pour un ventilo qui démarre plus tard

Afin de lancer le script au démarrage, on récupère aussi, sur la même page, le script tp-fancontrol.init.debian. On l’ajoute au démarrage du système.

# mv index.php /etc/init.d/tp-fancontrol
# chmod a+x /etc/init.d/tp-fancontrol
# vi /etc/init.d/tp-fancontrol
DAEMON=/usr/sbin/fancontrol
# /etc/init.d/tp-fancontrol start
# /etc/init.d/tp-fancontrol stop
# update-rc.d tp-fancontrol defaults # note : on peux aussi n'ajouter que les liens "start"

La touche finale est de modifier le script afin de changer les seuils minimum de déclenchement du ventilateur, de manière à ce qu’il se déclenche plus tard quand le système commence à chauffer :

# vi /usr/local/bin/tp-fancontrol
MIN_THRESH_SHIFT=5
INTERVAL=10 # on peut aussi augmenter l'intervalle de mise à jour de la vitesse

Une augmentation de 5 secondes permet au ventilateur de redevenir silencieux quand l’ordinateur ne fait plus rien.

Références :

mercredi 2 décembre 2009

USwSusp sous Ubuntu Karmic

Userspace Software Suspend est une alternative à la méthode d’hibernation par défaut du noyau Linux. Elle ajoute plusieurs fonctionnalités intéressantes telles que la compression, le chiffrement... La compression permet d’hiberner avec une partition Swap plus petite, et accélère le temps de réveil de votre système !

Voici comment installer USwSusp sous Ubuntu Karmic. Doit aussi fonctionner sous une Debian récente.

Installer le paquet uswsusp :

aptitude install uswsusp

Désormais, vous pouvez hiberner en tapant la commande s2disk en root.

Pour hiberner depuis le menu Ubuntu ou les raccourcis clavier, modifiez la ligne suivante dans le fichier /etc/pm/config.d/00sleep_module :

SLEEP_MODULE=uswsusp

Puis testez votre hibernation !!

Liens :

mercredi 18 novembre 2009

[Screen] No more PTYs. Sorry, could not find a PTY.

Si vous obtenez les erreurs suivantes en lançant screen en tant qu’utilisateur :

No more PTYs.
Sorry, could not find a PTY.
[screen is terminating]

Il faut changer les droits du fichier /dev/ptmx :

# ls -l /dev/ptmx 
crw-r--r-- 1 root root 5, 2 nov 18 23:28 /dev/ptmx
# chmod a+w /dev/ptmx
# ls -l /dev/ptmx 
crw-rw-rw- 1 root root 5, 2 nov 18 23:34 /dev/ptmx

Sous Ubuntu, le problème était absent, les droits étant déjà positionnés :

$ ls -l /dev/ptmx 
crw-rw-rw- 1 root tty 5, 2 2009-11-18 23:37 /dev/ptmx

Références :

  • man ptmx
  • ubuntu$ ls -l /dev/ptmx

vendredi 23 octobre 2009

Double écran avec Xrandr sous Gnome

Voici comment j’ai configuré mon double écran sous ma Debian unstable.

Xrandr

Par défaut, la carte graphique affiche la même chose sur les deux écrans.

On lance d’abord la commande xrandr pour afficher les différentes sorties vidéo.

Ensuite, on lance la commande magique :

xrandr --output DVI-1 --left-of DVI-0

Notes :

  • Si xrandr affiche une erreur, ajouter le paramètre Virtual au fichier /etc/X11/xorg.conf et relancer X (voir ci-dessous).
  • Essayez --right-of si c’est inversé !

Paramétrage Xorg

Et pour que les modifications soient permanentes, on modifie /etc/X11/xorg.conf :

Section "Device"
        Identifier      "ATI Technologies Inc RV380 [Radeon X600 (PCIE)]"
        Driver          "ati"
 
        Option          "Monitor-DVI-0" "Screen 1"
        Option          "Monitor-DVI-1" "Screen 2"
EndSection

Section "Monitor"
        Identifier      "Screen 1"
EndSection
Section "Monitor"
        Identifier      "Screen 2"
        Option          "RightOf" "Screen 1"
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Device          "ATI Technologies Inc RV380 [Radeon X600 (PCIE)]"
        Monitor         "DELL 1704FPT"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
                Modes           "1280x1024" "1152x864" "1024x768" "800x600" "720x400" "640x480"
                Virtual         2560 1280
        EndSubSection
EndSection
  • Dans la section "Device", on liste les différents écrans au format "Moniteur-NomDeSortie".
  • On place ensuite une section par écran, en positionnant le deuxième écran par rapport au premier.
  • La sous-section "Screen > Display" doit contenir le paramètre "Virtual" avec une surface en pixels assez grande pour accueillir les deux résolutions.

Note : vous pouvez aussi essayer le programme graphique grandr.

Panneaux Gnome

Sous Gnome, vous avez maintenant deux écrans : un principal et un secondaire.

Si vous voulez que vos panneaux soient sur l’autre écran, il vous suffit de les déplacer (clique droit sur le panneau > Propriétés, décocher Étendre, déplacer le panneau, puis remettre Étendre).

Je vous conseille aussi d’ajouter une nouvelle barre avec une nouvelle liste de fenêtres sur votre écran secondaire.

Références :

mercredi 21 octobre 2009

Format du sujet des mail de cron

J’ai cherché un moyen de modifier le format des courriels envoyés par la crontab. J’aurais espéré une syntaxe similaire à MAILTO=

Réponse : C’est impossible.

Avec le programme cron par défaut sous Debian, c’est codé en dûr dans le code de cron :

Dans le fichier source do_command.c :

fprintf(mail, "From: root (Cron Daemon)\n");
fprintf(mail, "To: %s\n", mailto);
fprintf(mail, "Subject: Cron <%s@%s> %s\n",
  usernm, first_word(hostname, "."),
  e->cmd);

lundi 19 octobre 2009

Ajout du sujet dans la log Exim

Pour ajouter les sujets de courriels dans la log Exim4 (/var/log/exim4/mainlog), il suffit simplement de modifier le fichier /etc/exim4/exim4.conf.template comme suit en ajoutant +subject au log_selector :

.ifdef MAIN_LOG_SELECTOR
log_selector = MAIN_LOG_SELECTOR +subject
.endif

Puis relancer Exim :

/etc/init.d/exim4 restart

dimanche 11 octobre 2009

[Dotclear] Non aux liens tronqués

J’ai utilisé le patch suivant sur mon Dotclear pour éviter que mes URLs soient systématiquement tronquées à 35 caractères dans mes billets :

--- /tmp/class.wiki2xhtml.php   2009-10-11 19:47:34.000000000 +0200
+++ text.wiki2xhtml/class.wiki2xhtml.php        2009-10-11 19:48:34.000000000 +0200
@@ -802,7 +802,7 @@
                if (count($data) == 1)
                {
                        $url = trim($str);
-                       $content = strlen($url) > 35 ? substr($url,0,35).'...' : $url;
+                       $content = $url;
                        $lang = '';
                        $title = $url;
                }

J’ai aussi soumis mon patch sur le Trac de Dotclear :

MAJ 2009-12-13 : Sans ce patch, on peut aussi déclarer les URL en syntaxe wiki :

[URL|URL]

Mais ça n’est pas très "sexy".

http://dev.dotclear.org/2.0/ticket/809

Mes extensions Firefox

Voici les extensions Firefox que j’utilise au quotidien :

Ergonomie

Adblock Plus

Pour un Web sans pub !

ChromaTabs Plus

Des onglets en couleurs pour mieux s’y retrouver.

Flashblock

Non à cette technologie propriétaire, antiopérable et qui fait tout ramer. On pourra tout de même cliquer sur les éléments bloqués pour les visualiser, pour s’autoriser de temps en temps une vidéo sur YouPorn YouTube.

Hide Menubar

Cache la barre de menu qui prend de la place, et que l’on utilise rarement. La touche Alt permet de l’afficher.

Développement Web

Live HTTP Headers

Permet de surveiller toute communication de votre navigateur vers l’extérieur.

Firebug

L’incontournable du développement Web.

Web Developper

Une barre d’outils très utile, qui vient compléter Firebug, comme la désactivation du Javascript.

YSlow

Extension de Yahoo qui vous permet d’optimiser votre site.

Page Speed

La réponse de Google à l’extension YSlow ? Extension de Google qui vous permet d’optimiser votre site. Nécessite Firebug.

vendredi 9 octobre 2009

SFTP chroot + rsync

On le trouve partout. Voici comment créer des partages sftp en chroot.

Dans le fichier /etc/ssh/sshd_config :

# on utilise le sftp internet d'openssh
# car la commande /usr/lib/openssh/sftp-server ne sera pas disponible dans le chroot
Subsystem sftp internal-sftp

Match group sftp
        ChrootDirectory %h
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp

MAJ 17/06/2010 : Attention à la syntaxe ! Les commentaires doivent commencer en début de ligne uniquement, et il ne doit pas y avoir d’espace en fin de la ligne ForceCommand internal-sftp.

Il suffit ensuite de créer des utilisateurs appartenant au groupe sftp, et le tour est joué. On teste par :

sftp user@monserver.com

Problème si on veut utiliser la commande rsync pour transférer des fichiers, car la commande rsync n’est pas disponible dans le chroot.

En premier lieu, on autorise d’autres commandes que "internal-sftp" en commantant la ligne :

#ForceCommand internal-sftp

Ensuite, on crée l’arborescence suivante dans le dossier chroot :

bin/
bin/bash
bin/rsync
lib/
lib/libncurses.so.5
lib/ld-linux.so.2
lib/libacl.so.1
lib/libpopt.so.0
lib/libattr.so.1
lib/i686
lib/i686/cmov
lib/i686/cmov/libdl.so.2
lib/i686/cmov/libc.so.6

Il s’agit des commandes bash et rsync, ainsi que toutes leurs librairies (que l’on peut obtenir à l’aide de la commande ldd)

Note : l’utilisateur doit avoir /bin/bash comme shell par défaut.

Note 2 : le dossier du chroot doit appartenir à root, bien que ça soit le dossier de l’utilisateur. Pour permettre à l’utilisateur d’écrire dedans, il faut créer un sous dossier où il a les droit. C’est une contrainte importante, mais nécessaire à la sécurité d’un chroot, vous dirons les programmeurs d’OpenSSH.

Références :

mercredi 7 octobre 2009

Redirection mobile avec lien vers le site normal

Dans un billet précédent, je détaillait comme mettre en place une redirection mobile basée sur l’en-tête HTTP User-Agent, avec Squid. Exemple : quand un mobile se rend sur www.monsite.com, il est redirigé vers mobile.monsite.com.

Maintenant, nous désirons ajouter un lien sur mobile.monsite.com qui permette d’accéder au site en mode normal (www.monsite.com).

Problème : la redirection est en place, et dès que le mobile retournera sur www.monsite.com, il sera redirigé de nouveau.

Solution : en se basant sur l’en-tête HTTP Referer, on ne redirige pas les mobiles quand l’utilisateur vient du domaine *.monsite.com

Réalisé de la manière suivante dans la configuration Squid :

###################################
# on redirige les telephones vers mobile.monsite.com
url_rewrite_program /etc/squid/redirect_mobile.sh

acl symbian browser Symbian
acl iphone browser iP(hone|od)
acl android browser Android
acl mobile_url dstdomain mobile.monsite.com
acl from_monsite referer_regex ^http\://[^/]+\.monsite\.com   # on teste si l'utilisateur vient de *.monsite.com

url_rewrite_access deny mobile_url
url_rewrite_access deny from_monsite   # on ne redirige pas quand c'est le cas
url_rewrite_access allow symbian
url_rewrite_access allow iphone
url_rewrite_access allow android
url_rewrite_access deny all

De cette manière, si le mobile vient de l’extérieur (d’un moteur de recherche ou autre site, ou qu’il tape directement l’URL dans la barre d’adresse), il sera redirigé. En revanche, s’il a cliqué sur un lien « www.monsite.com en mode normal » depuis mobile.monsite.com, il ne sera pas redirigé.

Note : Cette solution est aisément transposable en règles de réécriture apache.

jeudi 20 août 2009

Avec quelle adresse IP je sors ?

Pour savoir avec quelle adresse IP on sort sur Internet, on peux aller voir un site du genre http://www.whatismyip.com

En mode texte sans navigateur Web, c’est un peu plus compliqué. On pourra donc utiliser la commande suivante :

wget --user-agent="Mozilla/5.0" -O - http://www.whatismyip.com 2>/dev/null | grep -o "Your IP Address Is: [0-9.]*"

Il faut se faire passer pour un vrai navigateur sinon le site nous refuse.

MAJ 14/01/2010

Pour trouver son adresse IP externe, une méthode encore plus élégante :

dig +short myip.opendns.com @resolver1.opendns.com

MAJ 19/03/2010

D’ailleurs ça marche même plus ma méthode. Préférez donc :

http://dev.petitchevalroux.net/linux/connaitre-son-adresse-externe-linux.305.html

MAJ 06/05/2010

Ou encore mieux !

curl icanhazip.com

http://www.commandlinefu.com/commands/view/2966/return-external-ip

- page 2 de 4 -