2007 July Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for July, 2007

Niveau :      
Résumé : libpam-cracklib ; passwd -e

Vos mots de passes sont nazes ? Vous avez des utilisateurs qui ont des mots de passe faibles ? Alors c'est que vous avez oublié cracklib lors de votre installation.

Cracklib

Cracklib est une bibliothèque qui permet de vérifier la force ou la faiblesse d'un mot de passe (paquet libcrack2 et cracklib-runtime). Ceci se fait avec quelques tests basiques, ainsi qu'un dictionnaire de mots de passe.

Par défaut, le dictionnaire n'est pas compilé, pour l'utiliser, tapez en root :

$ update-cracklib # exécuté tous les jours en cron par l'installeur

Pour tester si cracklib considère un mot de passe comme faible, utilisez crack_testlib :

$ echo "azerty" | cracklib-check
> azerty: ok

Bon ça commence mal, la base est un peu légère. Donc commençons par un petit dictionnaire. Téléchargez http://prdownloads.sourceforge.net/cracklib/cracklib-words.gz et décompressez.

Sous debian, modifiez /etc/cracklib/cracklib.conf et ajoutez votre fichier dans cracklib_dictpath_src. Enfin tapez :

$ update-cracklib

Si vous n'êtes pas sous debian, vous n'avez probablement pas update-cracklib, dans ce cas :

$ cracklib-packer /var/cache/cracklib/cracklib_dict < votrefichier

Ou si votre fichier n'est pas au bon format :

$ cracklib-format votrefichier | crack_packer /var/cache/cracklib/cracklib_dict

Et on recommence :

$ echo "azerty" | cracklib-check
> azerty: it is based on a dictionary word

C'est mieux ! Maintenant vous trouverez bien d'autres fichiers de mot de passe sur le web. Par exemple http://lastbit.com/dict.asp ou http://www.cotse.com/tools/wordlists.htm à vous de les choisir.


continue reading...

Niveau :      
Résumé : /etc/environment

PAM

Comme vous le savez, c'est depuis longtemps PAM qui gère vos sessions.

Les variables d'environnement font partie de ces sessions, et c'est le module pam_env qui les gère avec une ligne du style :

session       required   pam_env.so readenv=1

Il lit 2 fichiers de configuration : /etc/environment et /etc/security/pam_env.conf

Le premier définit des variables d'environnement au format shell habituel.

VAR="toto"

Le second permet de les définir de façon un peu plus évoluées.

VAR DEFAULT="titi"
VAR OVERRIDE="tata"

La priorité va donc à OVERRIDE, /etc/environment puis à DEFAULT. Placez donc toute votre configuration dans /etc/environment sauf besoin particulier.

Variables

Mais quelles sont donc les variables sympathiques qu'on peut y mettre ? Voici quelques exemples.

TMOUT : timeout de bash, si vous n'entrez rien pendant ce nombre de secondes, le shell se terminera. C'est une valeur très utile pour éviter de se retrouver avec des shells ouvert dans une console et personne devant la machine, on se prémunit ainsi des têtes en l'air.

LANG : la langue utilisée, pam étant bien intégré, la valeur est valable pour quasiment tout le système. C'est le bon moyen pour passer le système d'iso à utf8 et inversement.

PROMPT_COMMAND : commande lancée entre chaque ligne de commande de shell. Par exemple si comme moi vous êtes un malade du ls et que vous tapez ls frénétiquement quand vous ne savez pas quoi taper, mettez "ls", vous l'aurez à chaque ligne (oui c'est très chiant à la longue).

Sinon vous avez le droits à toutes les variables d'environnement que vous voulez, comme PS1, TMPDIR, PATH, HISTSIZE, HISTFILESIZE, ou des variables spécifique à vos applications.

PS : pour ce qui est du ls fréquent, en réalité j'ai un alias bien pratique dans mon .bashrc

$ function cdls { cd $1 && ls; }
$ cd alias cd=cdls

Niveau :      
Résumé : Mio vs Mo

Aujourd'hui culture générale.

Qu'est-ce qu'un kilogramme de plomb ?
- C'est mille grammes de plomb.
Qu'est-ce qu'un kilomètre ?
- C'est mille mètres.
Qu'est-ce qu'un kilooctet ?

Grâce à l'étalon stocké au pavillon de Breteuil, on peut savoir précisément ce que représente un kilogramme. Et comme nous sommes tous grands, nous le savons déjà. De même qu'un kilomètre représente 1000 mètres un kilooctet vaut 1000 octets.

Pourtant ces rigolos d'informaticiens se sont crus au-dessus de ça. Pour simplifier leurs calculs à l'époque où une opération coûtait plus cher qu'un diamant, ils ont choisi de dire que le kilo valait 1024. Et ça, pour mettre le bazar pendant des décennies c'est très fort !

Alors oui c'est parfois pratique car on gère les adresses par puissance de 2, donc il est plus sympa de dire 1 mégaoctet que 1.048576 mégaoctet.

Mais imaginez les gens des télécom qui parlent en kilohertz et kilobits par seconde par puissance de 1000 (normal) communiquer avec ceux qui font de l'internet et qui parlent en kilooctets par seconde en puissance de 1024. C'est comme si les américains parlaient en gallons avec des français qui parlent en litre, de quoi faire rater le départ d'une fusée !

Sur ces entrefaites, arrivent les vendeurs de disque dur qui eux on bien calculé la différence. Car à partir du giga ou du téra octet, celle-ci commence à se voir. 200Go façon informaticien fait 214.7Go en puissance de 1000. Ils ont donc choisi le parti du marketing.

Pour remettre un peu d'ordre la dedans, l'IEC a décidé de suivre la norme internationale et de recommander un nouvel usage : le kilo octet vaut 1000 octets et le kibi octet vaut 1024 octets.

Nous avons donc les nouveautés suivantes :

  • kibioctet : Kio
  • mébioctet : Mio
  • gibioctet : Gio

Et pour résumer les habitudes :

  • Taille de RAM -> 1024
  • Taille de DD -> 1000
  • Fréquence processeur -> 1000 (ouf)
  • Vitesse d'une connexion en bit/s -> 1000 (la plupart du temps)
  • Débit d'un transfert octet/s -> 1024 (la plupart du temps)
  • Taille d'un fichier -> 1024

Petit à petit les logiciels tentent de se mettre à la page et de différencier Mo et Mio.

Youpi ! Aujourd'hui c'est votre fête. La preuve c'est marqué ici -> www.SysadminDay.com Regardez bien les photos c'est passionnant le boulot de sysadmin.

C'est le moment pour faire votre BOFH.

Profitez-en, cassez du sucre sur le dos des autres, car demain c'est vous qui serez le fautif pour tous ces IE, Office et autres sauvegardes qui plantent.

Niveau :      
Résumé : bc -l ; dc

Oups BC/DC.

Bc et dc sont des calculatrices en ligne de commande disponibles un peu partout. Ils vous permettrons de faire un peu mieux que ce que propose le bash avec $ iy expr

$ echo $((142857*2))
>285714
$ expr 142857 '*' 2
>285714

bc

bc est une calculatrice standard qui ne gère que les nombres entiers par défaut. Utilisez l'option -l pour des calculs en virgule flottante.

Utilisez ctrl-d pour terminer vos commandes :

$ bc -l
142857*3
>428571

Bc supporte les variables :

a=142857
a*4
>571428

Dont last :

5291*27
>142857
last*5
>714285

Bc permet aussi les conversions de base grâce aux variables ibase et obase les bases d'affichage d'entrée et de sortie. Ex convertir de l'hexadécimal en décimal :


continue reading...

Niveau :      
Résumé : rename ; mmv

Vous avez plein de fichiers téléchargés chez vous et c'est le bazar. Il vous faut les renommer et les déplacer vers un endroit ou ils pourront reposer en paix.

Pour cela vous avez 2 commandes à votre disposition

Rename

Rename est une commande du paquet prename. Pour ceux qui connaissent les expressions régulières perl, c'est génial.

Exemple de suppresson des numéros au début des noms de fichiers mp3 :

$ rename 's/dd-(.*).mp3/$1.mp3/' *

Pour ne pas vous louper faites un test avec l'option -n

Mmv

Mmv du paquet éponyme, permet de faire bien plus que rename au prix de quelques difficultés sur les expressions utilisées. On peut entre autre déplacer, copier, faire des liens symboliques.

$ mmv "[0-9][0-9]*.mp3" "#3.mp3"

? et * fonctionnent comme en shell et [] comme en grep. Et c'est à peu près tout ce qu'il y a à savoir.

Pour la partie réécriture, un #x correspond au match d'un des 3 patterns précédents.

Tout comme pour rename, l'option -n permet de vérifier qu'on ne casse rien.

Il est aussi possible de faire une copie plutôt qu'un renommage :

$ mcp "[0-9][0-9]*.mp3" "#3.mp3"

Et enfin, il est possible d'utiliser plusieurs patterns dans une même commande. Pour cela on ne passe pas de paramètre et on utilise l'entrée standard :

$ mmv
> *.mp3 mp3/#1.mp3
> *.avi avi/#1.avi

Niveau :      
Résumé : locate ; upadtedb ; slocate

Locate

Vous savez que vous avez téléchargé un fichier, mais vous ne savez plus où vous l'avez mis. Heureusement, MacGyver est là :

$ locate toto.mp3

Et si vous ne vous rappelez pas bien du nom, vous avez droit aux wildcards du shell et à une option qui permet d'ignorer la différence minuscule/majuscule.

$ locate -i "toto*.mp3"

Mieux, vous avez droit à des expressions régulières :

$ locate -r "[0-9][0-9]-.*.mp3"

Petite fonction sympathique, locate permet de faire un comptage, par exemple pour connaître l'étendue de votre collection.

$ locate -c "*.mp3"

Pour fonctionner, locate utilise une base de données, laquelle est mise à jour avec la commande updatedb. Relancez-là en root lorsque vous n'êtes plus à jour. Mais vous ne devriez pas en avoir besoin car updatedb est lancé régulièrement en cron (à ce propos si vous êtes sur une station allumée irrégulièrement, installez anacron).

Slocate

C'est bien beau me direz-vous, mais locate utilise une base de données créée par root. L'utilisateur normal a donc accès à des informations confidentielles comme la liste des fichiers accessibles uniquement par root.

C'est ici que slocate entre en jeu. Slocate est une version de locate qui vérifie à chaque recherche si l'utilisateur a bien les droits d'accès adéquats pour accéder à un fichier avant de le proposer à l'utilisateur.

Attention, toutes les options de slocate ne sont pas identiques à locate. Par exemple l'option -c ne compte pas les fichiers.

Chose utile, le paquet debian remplace updatedb et locate par des liens symboliques vers slocate pour ne pas troubler l'utilisateur. Par contre il ne les supprime pas totalement, pensez donc à supprimer l'ancienne base /var/cache/locate/locatedb sinon, locate sera toujours disponible à travers /usr/bin/locate.notslocate.

Conclusion

Comme disait Pline l'ancien, si vous êtes sur une machine partagée entre de nombreux utilisateurs ou si elle est sensible, installez slocate !