Trucs libres

marcmaurice.fr Diaspora
en

jeudi 10 décembre 2009

[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

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

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 interne 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@myserver.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 commentant 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étaillais 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.

lundi 3 août 2009

Fail2ban

Si vous constatez de nombreuses tentative de connexion par ssh dans votre fichier /var/log/auth.log (robots qui testent des utilisateurs/mots de passes), il faut faire quelque chose.

Le plus simple est de mettre en place une restriction par IP dans votre pare-feu iptables, ou dans /etc/hosts.deny

Si vous ne pouvez/voulez pas mettre en place cette restriction, utilisez Fail2ban :

aptitude install fail2ban

L’installation par défaut bloque les tentatives de connexion SSH.

On peut adapter un peu la configuration, ou activer Fail2ban pour d’autres services. Exemple :

vi /etc/fail2ban/jail.conf
bantime  = 86400
maxretry = 10 # pour ssh
enabled  = true # pour vsftpd
maxretry = 10 # pour vsftpd

Ensuite, la commande iptables -L donne les adresses IP qui ont été bannies.

mardi 7 juillet 2009

[Exim] Filtre système

Voici comment créer un filtre système dans Exim4, pour envoyer certains mails dans un script Bash.

Sous Debian, on ajoute les lignes suivantes dans /etc/exim4/exim4.conf.template :

system_filter = /etc/exim4/exim.filter
system_filter_pipe_transport = address_pipe
system_filter_user = Debian-exim

Et le filtre /etc/exim4/exim.filter contient par exemple :

if $h_subject: begins "[MyTest]" and
  $h_to: contains mytest@example.com
then
       unseen pipe /usr/local/bin/myscript.sh
endif 

Dans le script .sh, on pourra récupérer le mail complet par l’instruction :

MAIL=`cat`

Notes :

  • Le transport "address_pipe" est décrit un peu plus bas dans le fichier de configuration d’Exim.
  • Si on ne place pas la directive "system_filter_user", le script serait lancé en root, et Exim le refuse.

Lien : http://www.exim.org/exim-html-curre...

lundi 29 juin 2009

[Apache] Liste des virtualhosts sous Debian

Pour faire un test de configuration tout en listant les virtualhosts Apache, utiliser la commande :

apache2ctl -S

Ne pas utiliser la commande apache2 -S qui ne lira pas le contenu de /etc/apache2/envvars, et affichera donc l’erreur :

# apache2 -S
apache2: bad user name ${APACHE_RUN_USER}

Références :

mercredi 10 juin 2009

PostgreSQL sous Redhat

Choses non triviales à savoir :

  • Les fichiers de configuration se trouvent dans /var/lib/pgsql/data/ :
# ls /var/lib/pgsql/data/
base     pg_hba.conf    pg_multixact  pg_twophase  postgresql.conf
global   pg_ident.conf  pg_subtrans   PG_VERSION   postmaster.opts
pg_clog  pg_log         pg_tblspc     pg_xlog      postmaster.pid
  • Il faut ajouter la ligne suivante au fichier pg_hba.conf, pour autoriser les authentifications par le réseau :
host    all         all         127.0.0.1/32          md5

mardi 2 juin 2009

Monitoring d'un RAID SAS sur serveur Dell

Pour installer une surveillance du RAID SAS sur un serveur Dell :

# lspci|grep -i raid
01:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 1078 (rev 04)

# vi /etc/apt/sources.list
deb http://hwraid.le-vert.net/debian lenny main

# aptitude update
# aptitude install megactl

# megasasctl 
a0       PERC 6/i Integrated      encl:1 ldrv:1  batt:good
a0d0      278GiB RAID 1   1x2  optimal
a0e32s0    279GiB  a0d0  online  
a0e32s1    279GiB  a0d0  online  

# crontab -l
# monitoring du raid toutes les 4 heures
* */4 * * * /usr/sbin/megasasctl -H

Sources :

lundi 16 mars 2009

[LXDE] Supprimer l'applet NetworkManager au démarrage

Pour ne plus avoir l’applet NetworkManager gnome lancé au démarrage de la session, modifier la ligne suivante dans /etc/xdg/autostart/nm-applet.desktop

NotShowIn=KDE;LXDE;

mardi 10 mars 2009

Faire taire le terminal

Assez d’entendre les bips incessants lorsque vous utilisez la complétion dans votre terminal ?

Ajouter la ligne suivante au fichier ~/.bashrc

# desactiver le son de cloche
xset -b

nm-applet avec LXDE

Pour utiliser l’applet Network Manager de Gnome avec LXDE, vous pouvez ajouter la ligne

@nm-applet --sm-disable

À la fin du fichier /etc/xdg/lxsession/LXDE/autostart

Changer le terminal et le navigateur dans LXDE

Le fichier de configuration du panel se trouve dans ~/.config/lxpanel/LXDE/panels/panel

Les lanceurs sont dans /usr/share/applications/lxde*.desktop

Il faut changer les alternatives Debian. En root taper :

update-alternatives --config x-terminal-emulator
update-alternatives --config x-www-browser

mercredi 4 mars 2009

Augmenter l'historique des commandes bash

Par défault la taille de l’historique bash sous Debian semble être à 500.

Placer la ligne suivante dans son ~/.bashrc :

export HISTFILESIZE=5000

- page 1 de 2