Bien souvent, lorsqu'il migre de Windows à Linux, l'utilisateur est rapidement perdu dans les répertoires, les partitions à monter, etc. Ne serait-ce que le fait d'avoir accès à un disque ou une partition par l'intermédiaire d'un répertoire (point de montage) peut s'avérer déroutant. Mais peu à peu, l'habitude fait son office, jusqu'au jour où l'on tombe sur "un truc bizarre", comme une petite blague d'internaute...
Les pièges des noms de dossiers ou de fichiers
Voici quelques exemples :
spacewalker# cat >piege attention
difficile les débuts sous Linux !
^D
spacewalker# rm piege attention
rm: piege: No such file or directory
rm: attention: No such file or directory
spacewalker#
Le nom de fichier ne comporte pas d'accents et pourtant il n'est pas si facile à supprimer ce fichier ! Seule solution pour passer outre, faire comprendre à la commande que l'espace fait partie intégrante du nom de fichier :
spacewalker# rm "piege attention"
ou
spacewalker# rm piege\ attention
Grâce à cet espace géré de manière spéciale, on peut aussi se permettre des noms de répertoires du style ".. ", mais avec un espace !
spacewalker# mkdir ".. "
spacewalker# mv ./"piege attention" ./".. "
spacewalker# ls -a
total 120
. .. .. .Xclients .Xresources
.
[et ainsi de suite]
.
spacewalker#
Ce qui est un petit peu plus dangereux, c'est de créer un fichier ou un répertoire portant le nom *, caractère très spécial s'il en est.
la différence a de quoi dérouter...
spacewalker# cat >\*
gros gros danger
^D
spacewalker# rm *
Ici, vous supprimez tous les fichiers et non pas simplement celui nommé *.
Résultat :
spacewalker# ls
total 0
spacewalker#
La solution sans risque est :
spacewalker# rm \*
A présent, voyons ce qu'il faut maintenant éviter. Le résultat de la manipulation qui va suivre pourrait être expliqué de deux façons : Premièrement, vous avez un problème d'Inode (gravissime). Secondo, il vous est impossible de créer un fichier car vous avez dépassé la limite de création de fichier (rarissime). Pour vous donnez une idée de cette limite, faites un df -i. Pour créer un tel problème, vous devez écrire puis exécuter le script suivant :
spacewalker# cat >peste.sh << EOF
#!/bin/sh
umask 000
mkdir bouchon
cp peste.sh bouchon
cd bouchon
chmod +x peste.sh
./bouchon.sh &
EOF
spacewalker#
Une fois lancé ce script va créer des répertoires ./bouchon jusqu'à épuisement des Inodes. Résultat, la création de quelque chose comme :
/home/bouchon/bouchon/bouchon/bouchon/bouchon/bouchon/bouchon/bouchon/bouchon/bouchon........etc.etc.etc..
Pour le supprimer, on exécutera :
spacewalker# cd /home # si c'est ici que le # script a été lancé
spacewalker# rm -rf ./bouchon
En espérant que cela pourra aider certain.
Se protéger à la racine
Sans aller jusqu'à prétendre être la solution pour vous protéger contre une attaque de hackers vous voulant du mal (ce qui est somme toute très rare), il y a quelques règles élémentaires à respecter dans vos choix de vos mots de passe. Pour éprouver votre choix, on fera usage de l'utilitaire "John the ripper". Celui-ci est utilisé dans la plupart des cas pour découvrir un mot de passe de manière peu honnête
Avant toutes choses, voici les quelques règles de base à respecter pour faire votre choix. Vous remarquerez que l'utilitaire qui vous permet de choisir votre mot de passe (passwd) est assez exigeant. Suivez ses conseils !
Les noms, prénoms et tout ce qui a un sens est évidemment à proscrire. Choisissez, même s'ils vous demanderont un effort de mémoire plus important, des mots comme JuL53k84cI ou QpA3m5ci9Z.
Maintenant, passons à l'utilisation de "John the ripper" (téléchargeable à cette adresse : http://www.multimania.com/spacewal/ucf/ucfjohn2.zip).
Décompressons l'utilitaire,
gzip -d ./ucfjohn2.zip
puis demandons-lui de scanner votre fichier passwd :
./john w:puffs.dic /etc/passwd
"John the ripper" va regarder si les termes contenus dans puffs.dic peuvent être les mots de passe des utilisateurs référencés dans /etc/passwd. Cependant, si l'opération échoue, ne vous sentez pas à l'abri pour autant ! Pour être sûr de vous, complétez le dictionnaire (puffs.dic) avec des termes que vos utilisateurs pourraient éventuellement employer.
Comme les utilisateurs sont insités au changement fréquent de mots de passe, il serait intéressant pour l'administrateur de faire cette manipulation toutes les semaines. Pensez donc à l'utilitaire cron...
Boot, disquette ou de dos
En cas de problème, le boot sur Linux n'est pas une tâche facile. Voici trois manières de procéder :
Depuis le DOS
Si vous n'avez pas installé lilo, ou que vous n'avez pas de disquette de boot sous la main, vous pouvez exécuter cette commande :
loadlin c:\linux\vmlinuz root=/dev/hdb1 ro
Ce, à condition d'avoir copié vmlinuz et loadlin.exe (disponibles sur le CD de votre distribution) dans un répertoire linux sur C :.
Bien sûr, dans notre exemple, Linux est installé sur /dev/hdb1. ce qui n'est pas forcément compatible avec votre installation.
Disquette de boot
Dans le cas où vous faites une mise à jour générale, que vous recompilez votre noyau ou simplement pour prévenir d'un gros problème, il est indispensable de créer une disquette de boot avec votre noyau actuel. La manipulation à effectuer sous Linux est :
cat /vmlinuz-2.0.36-0.7 > /dev/fd0
On copie physiquement le noyau /vmlinuz sur le premier lecteur de disquette (a:).
LILO
LILO (LInux LOading) vous permet d'écrire sur le MBR (Master Boot Record). Il s'agit d'un programme qui gérera le multiboot. Lisons le fichier de configuration /etc/lilo.conf que LILO utilise lors de son installation (par la commande lilo).
boot=/dev/hda # disque où lilo s'installera
map=/boot/map
install=/boot/boot.b
prompt
timeout=50 # temps laissé pour le choix avant # lancement automatique(ici 5 s)
image=/boot/vm -
li nuz-2.0.36-0.7 # noyau à lancer
vga=9 # permet de choisir le mode vidéo. # Pour afficher un choix
# on mettrait vga=ask
label=linux # nom du système à lancer
root=/dev/hdb1 # partition ou est installé
# le système
read-only
other=/dev/hda1
label=win
table=/dev/hda
Ce fichier est rarement absent d'une distribution. Et personnellement, je vous conseille de le modifier, notamment pour modifier le mode vidéo. Si jamais un problème de boot devait surevenir, on taperait la commande qui suit sous DOS afin de régénérer le MBR :
fdisk /mbr
Attention aux antivirus de Windows (ai-je besoin de le préciser ?). Ils vérifient cette zone du disque mais s'y trompent à coup sûr : lilo n'est en aucun cas un virus!
Recherche dans vi
Pour éviter l'excellent, mais très encombrant, emacs pour faire vos recherches, utilisez vi. L'avantage de ce dernier est qu'il est très petit. Pour lancer une recherche, on se placera en mode commande (touche Esc), puis :
/[dD]e # pour chercher les occurences des mots #"de" et "De"
/[A-Z][a-z] # pour chercher tous les mots composés # d'une majuscule suivi d'une minuscule
/[^a-z][^A-Z] # Idem.
/t* # recherche de tous les mots composés # de t
Structure d'un Makefile
Contrairement à ce qu'il parait, c'est la manière la plus sûre d'installer une application qui fonctionne et de la compiler soimême. Cette astuce consiste uniquement à vous habituer à lire un fichier Makefile. C'est utile lorsqu'une compilation ne fonctionne pas. Exemple (très simplifié) :
# Makefile compilant prog
# Première étape, définition des variables
# qui serviront tout au long du fichier
# Vous pouvez les modifier si vous y trouvez une
# erreur
CC = gcc
CFLAGS = -O
# Les cibles que l'on atteint avec un "make cible"
# sont ensuite définies avec le nom suivi de :
# all est une cible courante qui permet de tout faire
all : prog
# Pour les cibles qui suivent on lira, par exemple pour
# fichier1.o que le fichier fichier1.c dépend du # fichier
# fichier1.c et que pour obtenir fichier1.c on # exécute :
# gcc O c fichier.c
prog : fichier1.o fichier2.o fichier3.o
$(CC) $(CFLAGS) -o prog fichier1.o fichier2.o \fichier3.o -lm
fichier1.o : fichier1.c
$(CC) $(CFLAGS) -c fichier1.c
fichier2.o : fichier2.c
$(CC) $(CFLAGS) -c fichier2.c
fichier3.o : fichier3.c
$(CC) $(CFLAGS) -c fichier3.c
# cette cible est courante et permet de nettoyer
# les fichiers qui ne servent plus après installation (*.o par # exemple)
clean :
rm -f prog *.o core