Chapitre 9. Astuces du système

Table des matières

9.1. Le programme screen
9.1.1. Scénario d’utilisation de screen(1)
9.1.2. Raccourcis clavier de la commande screen
9.2. Enregistrer et présenter des données
9.2.1. Le démon de journal
9.2.2. Analyseur de journaux
9.2.3. Enregistrer proprement l’activité de la console
9.2.4. Affichage personnalisé des données de texte
9.2.5. Affichage personnalisé de la date et de l’heure
9.2.6. Écho colorisé de l’interpréteur de commandes
9.2.7. Commandes colorisées
9.2.8. Enregistrer l’activité de l’éditeur pour des répétitions complexes
9.2.9. Enregistrer l’image graphique d’une application X
9.2.10. Enregistrer les modifications dans des fichiers de configuration
9.3. Surveiller, contrôler et démarrer l’activité des programmes
9.3.1. Temps d’un processus
9.3.2. La priorité d’ordonnancement
9.3.3. La commande ps
9.3.4. La commande top
9.3.5. Afficher les fichier ouverts par un processus
9.3.6. Tracer l’activité d’un programme
9.3.7. Identification des processus qui utilisent des fichiers ou des sockets
9.3.8. Répéter une commande avec un intervalle constant
9.3.9. Répéter une commande en bouclant entre des fichiers
9.3.10. Lancer un programme depuis l’interface graphique
9.3.11. Personnaliser le programme à lancer
9.3.12. Tuer un processus
9.3.13. Planifier des tâches qui s’exécutent une fois
9.3.14. Planifier des tâches qui s’exécutent régulièrement
9.3.15. touche Alt-SysRq
9.4. Astuces de maintenance du système
9.4.1. Qui se trouve sur le système ?
9.4.2. Prévenir tout le monde
9.4.3. Identification du matériel
9.4.4. Configuration matérielle
9.4.5. Heure système et matérielle
9.4.6. Configuration du terminal
9.4.7. L’infrastructure de gestion du son
9.4.8. Désactiver l’économiseur d’écran
9.4.9. Désactiver les bips
9.4.10. Utilisation de la mémoire
9.4.11. Vérification de la sécurité et de l’intégrité du système
9.5. Astuces relatives au stockage des données
9.5.1. Utilisation de l’espace disque
9.5.2. Configuration de la partition du disque
9.5.3. Accès à une partition en utilisant l’UUID
9.5.4. LVM2
9.5.5. Configuration de systèmes de fichiers
9.5.6. Création et vérification de l’intégrité d’un système de fichiers
9.5.7. Optimisation du système de fichiers à l’aide des options de montage
9.5.8. Optimisation du système de fichiers à l’aide du superbloc
9.5.9. Optimisation du disque dur
9.5.10. Optimisation du SSD
9.5.11. Utiliser SMART pour prédire les défaillances des disques durs
9.5.12. Indication du répertoire de stockage temporaire à l’aide de $TMPDIR
9.5.13. Étendre l’espace de stockage utile à l’aide de LVM
9.5.14. Extension de l’espace de stockage en montant une autre partition
9.5.15. Extension de l’espace de stockage en remontant un autre répertoire
9.5.16. Extension de l’espace utilisable à l’aide de liens symboliques
9.5.17. Extension de l’espace utilisable à l’aide de aufs
9.6. Le fichier image du disque
9.6.1. Créer le fichier image du disque
9.6.2. Écrire directement sur le disque
9.6.3. Monter le fichier image du disque
9.6.4. Nettoyage d’un fichier image du disque
9.6.5. Réaliser le fichier image d’un disque vide
9.6.6. Créer un fichier image ISO9660
9.6.7. Écriture directe sur CD/DVD-R/RW
9.6.8. Monter le fichier image ISO9660
9.7. Les données binaires
9.7.1. Afficher et éditer des données binaires
9.7.2. Manipulation des fichiers sans monter le disque
9.7.3. Redondance des données
9.7.4. Récupération de fichiers de données et analyse par autopsie
9.7.5. Éclater un gros fichier en petits fichiers
9.7.6. Effacer le contenu d’un fichier
9.7.7. Fichiers fictifs
9.7.8. Effacer l’ensemble du disque dur
9.7.9. Effacer l’ensemble du disque dur
9.7.10. Récupérer des fichiers supprimés mais encore ouverts
9.7.11. Rechercher tous les liens physiques
9.7.12. Consommation d’espace disque invisible
9.8. Astuces de chiffrement des données
9.8.1. Chiffrement des disques amovibles à l’aide de dm-crypt/LUKS
9.8.2. Partition d’échange chiffrée avec dm-crypt
9.8.3. Chiffrer les fichiers automatiquement avec eCryptfs
9.8.4. Montage automatique de eCryptfs
9.9. Le noyau
9.9.1. Noyau Linux 2.6/3.x
9.9.2. Paramètres du noyau
9.9.3. En-têtes du noyau
9.9.4. Compiler le noyau et les modules associés
9.9.5. Compiler les sources du noyau : recommandations de l’équipe en charge du noyau Debian
9.9.6. Pilotes de matériel et microprogramme
9.10. Système virtualisé
9.10.1. Outils de virtualisation
9.10.2. Étapes de la virtualisation
9.10.3. Monter le fichier image du disque virtuel
9.10.4. Système protégé (chroot)
9.10.5. Systèmes de bureaux multiples

Je décris ici les astuces de base pour configurer et gérer les systèmes, la plupart depuis la console.

screen(1) est un outil très utile pour ceux qui accèdent à un site distant par l’intermédiaire d’une connexion non fiable ou intermittente car il gère les interruptions de connexion au réseau.


screen(1) ne permet pas uniquement de faire tourner plusieurs processus dans une fenêtre de terminal, mais aussi à un processus de l’interpréteur de commandes distant de survivre à d’éventuelles interruptions de la connexion. Voici un scénario typique de screen(1) :

  1. vous-vous connectez à une machine distante ;

  2. vous démarrez screen sur une seule console ;

  3. vous exécutez plusieurs programmes dans les fenêtres screen créées avec ^A c (« Ctrl-A » suivi de « c ») ;

  4. vous passez d’une des fenêtres multiples de screen à l’autre avec ^A n (« Ctrl-A » suivi de « n ») ;

  5. vous avez alors besoin de quitter votre terminal, mais vous ne voulez pas perdre votre travail en cours perdant la connexion.

  6. vous pouvez détacher la session screen par différentes méthodes :

    • débrancher brutalement votre connexion réseau ;

    • entrer ^A d (« Ctrl-A » suivi de « d ») et en quittant manuellement la connexion distante :

    • entrer ^A DD (« Ctrl-A » suivi de « DD ») pour détacher screen et vous déconnecter.

  7. Vous vous reconnectez à la même machine distante (même depuis un autre terminal) ;

  8. Vous lancez screen avec « screen -r » ;

  9. screen réattache magiquement toutes les fenêtres screen précédentes avec tous les programmes qui y tournent.

[Astuce] Astuce

Avec screen, vous pouvez économiser des frais de connexion pour les connexions limitées, telles que les connexion commutées ou par paquets, parce que vous laissez un processus actif alors que vous êtes déconnecté. Vous pouvez le ré-attacher plus tard, lorsque vous vous reconnectez.

Voici les principaux analyseurs de journaux (« ~Gsecurity::log-analyzer » dans aptitude(8)).


[Note] Note

CRM114 fournit une architecture de vocabulaire pour écrire des filtres fuzzy avec la bibliothèque d’expressions rationnelles TRE. Une de ses utilisations courantes est le filtrage des pourriels mais il peut aussi être utilisé pour l’analyse de journaux.

La simple utilisation de script(1) (consultez Section 1.4.9, « Enregistrer les actions de l’interpréteur de commandes ») pour enregistrer l’activité de l’interpréteur de commandes produit un fichier avec des caractères de contrôle. Cela peut être évité en utilisant col(1) comme suit :

$ script
Script started, file is typescript

faites quelque chose… et pressez Ctrl-D pour quitter script.

$ col -bx <typescript >fichier_propre
$ vim fichier_propre

si vous n’avez pas script (par exemple pendant le processus d’amorçage dans l’initramfs), vous pouvez alors utiliser ce qui suit :

$ sh -i 2>&1 | tee typescript
[Astuce] Astuce

Certains émulateurs de terminaux X tels que gnome-terminal peuvent faire de l’enregistrement. Il faudra peut-être augmenter la taille du tampon de lignes pour le défilement vers l’arrière.

[Astuce] Astuce

Vous pouvez utiliser screen(1) avec « ^A H » (consultez Section 9.1.2, « Raccourcis clavier de la commande screen ») pour effectuer des enregistrement de la console.

[Astuce] Astuce

Vous pouvez utiliser emacs(1) avec « M-x shell », « M-x eshell » ou « M-x term » pour effectuer l’enregistrement de la console. Vous pourrez ensuite utiliser « C-x C-w » pour enregistrer le tampon dans un fichier.

Bien que des outils de visualisation de texte (« pager » tels que more(1) et less(1) (consultez Section 1.4.5, « Le visualisateur de fichiers ») et des outils personnalisés de mise en évidence et de formatage (consultez Section 11.1.8, « Mettre en évidence et formater des données en texte brut ») peuvent afficher des données textuelles de manière agréable, les éditeurs généralistes (consultez Section 1.4.6, « L’éditeur de texte ») sont plus souples et paramétrables.

[Astuce] Astuce

Pour vim(1) et ses alias de visualisation de texte view(1), « :set hls » active la recherche avec mise en évidence.

Le format par défaut de la date et de l’heure de la commande « "ls -l » dépend des paramètres régionaux (consultez la valeur en Section 1.2.6, « Horodatage »). La variable « $LANG » est d’abord visée, elle peut être surchargée par la variable « $LC_TIME ».

Le format réel de l’affichage pour chaque paramètre linguistique dépend de la version de la bibliothèque C standard (paquet libc6) utilisée. Par exemple, les différentes versions de Debian ont des valeurs par défaut différentes.

Si vous désirez vraiment personnaliser ce format d’affichage de la date et de l’heure plus loin que ne le fait locale, vous pouvez définir la valeur de style d’heure avec le paramètre « --time-style » ou par la valeur de « $TIME_STYLE » (consultez ls(1), date(1), « info coreutils 'ls invocation' »).


[Astuce] Astuce

Vous pouvez éviter d’entrer des options longues sur la ligne de commande en utilisant les alias de commande, par exemple « alias ls='ls --time-style=+%d.%m.%y\ %H:%M' » (consultez Section 1.5.9, « Alias de commande »).

[Astuce] Astuce

ISO 8601 est suivie pour ces formats iso.

L’écho de l’interpréteur de commandes sur la plupart des terminaux peut être colorisé en utilisant le code ANSI d’échappement (consultez « /usr/share/doc/xterm/ctlseqs.txt.gz »).

Essayez, par exemple, ce qui suit :

$ ROUGE=$(printf "\x1b[31m")
$ NORMAL=$(printf "\x1b[0m")
$ INVERSE=$(printf "\x1b[7m")
$ echo "${ROUGE}TEXTE-ROUGE${NORMAL} ${INVERSE}TEXTE-INVERSE${NORMAL}"

Vous pouvez enregistrer l’activité de l’éditeur pour des répétitions complexes.

Pour Vim, de la manière suivante :

  • « qa » : démarre l’enregistrement des caractères entrés dans le registre appelé « a ».

  • … activité de l’éditeur

  • « q » : termine l’enregistrement des caractères entrés.

  • « @a » : exécute le contenu du registre « a ».

Pour Emacs, de la manière suivante :

  • « :C-x ( » : commencer la définition d’une macro clavier.

  • … activité de l’éditeur

  • « C-x ) » : terminer la définition d’une macro clavier.

  • « C-x e » : exécuter une macro clavier.

Il existe des outils spécialisés pour enregistrer les modifications de la configuration avec l’aide du système DVCS.


Je recommande l’utilisation avec git(1) du paquet etckeeper, il met l’ensemble de « /etc » sous le contrôle de VCS. Son guide d’installation et un tutoriel se trouvent dans « /usr/share/doc/etckeeper/README.gz ».

Essentiellement, l’exécution de « sudo etckeeper init » initialise le dépôt git pour « /etc » exactement comme le processus décrit dans Section 10.6.5, « Git pour l’enregistrement de l’historique de la configuration » mais avec quelques scripts automatiques (« hook ») permettant une configuration plus approfondie.

Alors que vous effectuez des modifications de votre configuration, vous pouvez aussi utiliser git(1) normalement pour l’enregistrer. Il enregistre parfaitement les modifications chaque fois que vous lancez des commandes de gestion de paquet.

[Astuce] Astuce

Vous pouvez parcourir l’historique des modifications de « /etc » en exécutant « sudo GIT_DIR=/etc/.git gitk » avec une vue claire des nouveaux paquets installés et les changements de version des paquets.

L’activité des programmes peut être surveillée et contrôlée à l’aide d’outils spécialisés.

Tableau 9.7. Liste des outils de surveillance et de contrôle de l’activité des programmes

paquet popcon taille description
coreutils V:862, I:999 13461 nice(1) : lancer un programme avec une priorité d’ordonnancement modifiée
bsdutils V:810, I:999 185 renice(1) : modifier la priorité d’ordonnancement d’un programme en cours d’exécution
procps V:822, I:999 651 utilitaires du système de fichiers « /proc » : ps(1), top(1), kill(1), watch(1), …
psmisc V:645, I:963 721 utilitaires du système de fichiers « /proc » : killall(1), fuser(1), peekfd(1), pstree(1)
time V:61, I:892 78 time(1) : lancer un programme qui indique l’utilisation des ressources du système en fonction du temps
sysstat V:74, I:94 1272 sar(1), iostat(1), mpstat(1), … : outils de mesure des performances du système pour Linux
isag V:0, I:7 129 Générateur interactif de graphes de l’activité système pour sysstat
lsof V:415, I:927 420 lsof(8) : afficher la liste des fichiers ouverts par un processus en cours d’utilisation en utilisant l’option « -p
strace V:31, I:206 404 strace(1) : tracer les appels système et les signaux
ltrace V:2, I:29 188 ltrace(1) : tracer les appels de bibliothèque
xtrace V:0, I:1 336 xtrace(1) : tracer la communication entre un client X11 et le serveur
powertop V:7, I:224 629 powertop(1) : information concernant la puissance électrique utilisée sur les portables basés sur Intel
cron V:859, I:998 300 faire tourner des processus en arrière plan selon un calendrier depuis le démon cron(8)
anacron V:453, I:553 163 ordonnanceur de type cron pour les systèmes qui ne tournent pas 24 heures sur 24
at V:510, I:894 98 at(1) ou batch(1) : lancer un travail à une heure déterminée ou en dessous d’un niveau de charge donné

[Astuce] Astuce

Le paquet procps fournit des fonctions très basiques de surveillance, de contrôle et de lancement des activités du programme. Vous devriez toutes les apprendre.

Il existe plusieurs manières de répéter une boucle de commande entre des fichiers correspondant à une condition, par exemple, correspondant au motif « glob » « *.ext ».

for x in *.ext; do if [ -f "$x"]; then commande "$x" ; fi; done
  • combinaison de find(1) et de xargs(1) :

find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 commande
  • find(1) avec l’option « -exec » avec une commande :

find . -type f -maxdepth 1 -name '*.ext' -exec commande '{}' \;
  • find(1) avec l’option « -exec » avec un court script de l’interpréteur :

find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "commande '{}' && echo 'succès'" \;

Les exemple ci-dessus ont été écrits afin d’assurer une prise en compte correcte de noms de fichiers étranges tels que ceux qui comportent des espaces. Consultez Section 10.1.5, « Idiomes pour la sélection de fichiers » pour une utilisation avancée de find(1).

Vous pouvez définir le lancement d’un processus depuis l’interface utilisateur graphique (GUI).

Sous l’environnement de bureau GNOME, un programme peut être lancé avec les paramètres corrects par un double-clic sur l’icône de lancement, par glisser-déposer de l’icône d’un fichier sur l’icône du lanceur ou par le menu « Ouvrir avec… » que l’on obtient par un clic droit sur l’icône d’un fichier. KDE peut aussi faire la même chose.

Voici un exemple sous GNOME pour créer une icône de lanceur pour mc(1) lancé dans gnome-terminal(1).

Créez un programme exécutable « mc-term » en effectuant ce qui suit :

# cat >/usr/local/bin/mc-term <<EOF
#!/bin/sh
gnome-terminal -e "mc \$1"
EOF
# chmod 755 /usr/local/bin/mc-term

Créez un lanceur sur le bureau comme suit :

  1. Faites un clic-droit sur le bureau et sélectionnez « ;Créer un lanceur… » ;

  2. Définissez « Type » à « Application » ;

  3. Définissez « Nom » à « mc » ;

  4. Définissez « Commande » à « mc-term %f » ;

  5. Cliquez « Valider ».

Créez une association « ouvrir avec » comme suit :

  1. Faites un clic-droit sur le dossier pour sélectionner « Ouvrir avec une autre application … » :

  2. Cliquer pour ouvrir fenêtre « Utiliser une commande personnalisée » et entrez « mc-term %f ».

  3. Cliquez « Ouvrir ».

[Astuce] Astuce

Le lanceur est un fichier de « ~/Desktop » ayant l’extension « .desktop ».

Certains programmes lancent automatiquement d’autres programmes. Voici des points-clés pour la personnalisation de ce processus :

[Astuce] Astuce

update-mime(8) met à jour le fichier ≤ /etc/mailcap » en utilisant le fichier « /etc/mailcap.order » (consultez mailcap.order(5)).

[Astuce] Astuce

Le paquet debianutils fournit sensible-browser(1), sensible-editor(1), et sensible-pager(1) qui prennent des décisions raisonnables concernant l’éditeur, le visualisateur, le navigateur à appeler respectivement. Je vous recommande de lire ces scripts de l’interpréteur de commandes.

[Astuce] Astuce

De façon à faire tourner une application de console telle que mutt sous X en tant qu’application préférée, vous devriez créer une application X comme suit et définir « /usr/local/bin/mutt-term » comme étant votre application préférée à lancer comme il est décrit :

# cat /usr/local/bin/mutt-term <<EOF
#!/bin/sh
gnome-terminal -e "mutt \$@"
EOF
chmod 755 /usr/local/bin/mutt-term

Utilisez cron(8) pour planifier des tâches qui s’exécutent régulièrement. Consultez crontab(1) et crontab(5).

Vous pouvez planifier le lancement des processus en tant qu’utilisateur normal, par exemple toto en créant un fichier crontab(5) file comme « /var/spool/cron/crontabs/toto » avec la commande « crontab -e ».

Voici un exemple de fichier crontab(5).

# utilise /bin/sh pour exécuter les commandes, quoi que dise /etc/passwd
SHELL=/bin/sh
# envoie un courrier électronique à Paul contenant tous les résultats,
# quelle que soit la personne à qui appartient la crontab
MAILTO=paul
# Minute Heure JourDuMois Mois JourDeLaSemaine commande
# est exécuté à 00:05 chaque jour
5  0  *  * *   $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# est exécuté à 14:15 le 1e de chaque mois -- le résultat est envoyé à Paul
# par courrier électronique
15 14 1  * *   $HOME/bin/monthly
# est exécuté à 22:00 chaque jour de la semaine(1-5), ennuie Joe.
# % pour une nouvelle ligne, dernier % pour cc:
0 22 *   * 1-5 mail -s "Il est 10h" joe%Joe,%%Ou sont tes enfants ?%.%%
23 */2 1 2 *   echo "run 23 minutes after 0am, 2am, 4am ..., on Feb 1"
5  4 *   * sun echo "run at 04:05 every sunday"
# est exécuté à 03:40 le premier lundi de chaque mois
40 3 1-7 * *   [ "$(date +%a)" == "Mon" ] && command -args
[Astuce] Astuce

Sur un système qui ne tourne pas en permanence, installez le paquet anacron afin de planifier les tâches périodiques à des intervalles particulier dès que le temps de fonctionnement « uptime » de la machine le permet. Consultez anacron(8) et anacrontab(5).

[Astuce] Astuce

Vous pouvez lancer périodiquement les scripts de maintenance planifiée du système, depuis le compte de l’administrateur en les plaçant dans « /etc/cron.hourly/ », « /etc/cron.daily/ », « /etc/cron.weekly/ » ou « /etc/cron.monthly/ ». L"échéancier d’exécution de ces scripts peut être personnalisé dans « /etc/crontab » et « /etc/anacrontab ».

Une assurance contre le mauvais fonctionnement du système est fournie par l’option de compilation du noyau « Magic SysRq key » (touche SAK) qui est maintenant une valeur par défaut pour les noyaux de Debian. Presser Alt-SysRq (NDT : Alt-Sys ou Alt-Impr écran sur un clavier français) suivi par une des touches suivantes permet de reprendre par magie le contrôle du système.


La combinaison de « Alt-Sys s », « Alt-Sys u » et « Alt-Sys r » permet de se tirer de situation vraiment désastreuses.

Consultez « /usr/share/doc/linux-doc-3.*/Documentation/sysrq.txt.gz ».

[Attention] Attention

la fonctionnalité Alt-SysRq peut être considérée comme un risque de sécurité permettant à des utilisateurs d’accéder à des fonctions ayant le privilège de l’administrateur. Placer « echo 0 >/proc/sys/kernel/sysrq » dans « /etc/rc.local » ou « kernel.sysrq = 0 » dans « /etc/sysctl.conf » désactive la fonctionnalité Alt-SysRq.

[Astuce] Astuce

Depuis un terminal SSH, etc., vous pouvez utiliser la fonctionnalité Alt-SysRq en écrivant vers « /proc/sysrq-trigger ». Par exemple;, « echo s > /proc/sysrq-trigger; echo u > /proc/sysrq-trigger » depuis l’invite de l’interpréteur de commandes de l’administrateur syncs (synchronise) et umount (démonte) tous les systèmes de fichiers montés.

Bien que l'essentiel de la configuration du matériel puisse être gérée au moyen des outils graphiques qui accompagnent les environnements de bureau graphiques modernes comme GNOME ou KDE, c’est une bonne idée de connaître certaines méthodes de base permettant de le configurer.

Tableau 9.14. Liste des outils de configuration du matériel

paquet popcon taille description
hal V:91, I:133 1495 Couche d’abstraction matérielle (HAL) : lshal(1)
console-tools V:79, I:183 600 Police de la console Linux et utilitaires de table de caractères
x11-xserver-utils V:390, I:620 489 utilitaires pour le serveur X  : xset(1), xmodmap(1)
acpid V:529, I:945 187 démon servant à gérer les événements délivrés par l’Interface avancée de configuration et de gestion de l’énergie ACPI (« Advanced Configuration and Power Interface »)
acpi V:52, I:823 71 utilitaire d’affichage des informations des périphériques ACPI
apmd V:3, I:57 252 démon de gestion des événements délivrés par la gestion avancée de l’alimentation APM (« Advanced Power Management »)
sleepd V:0, I:0 148 démon permettant de mettre un ordinateur portable en veille lorsqu’il est inactif
hdparm V:371, I:637 285 optimisation de l’accès aux disques durs (consultez Section 9.5.9, « Optimisation du disque dur »)
smartmontools V:62, I:243 1611 contrôle et surveillance des systèmes de stockage en utilisant S.M.A.R.T.
setserial V:7, I:18 141 collection d’outils pour gérer les ports série
memtest86+ V:3, I:77 2342 collection d’outils pour gérer la mémoire physique
scsitools V:1, I:6 302 collection d’outils pour gérer le matériel SCSI
tpconfig V:1, I:5 164 utilitaire pour configurer les pavés tactiles (touchpad)
setcd V:0, I:1 28 optimisation de l’accès au lecteur de CD
big-cursor I:1 68 curseurs de souris plus grands pour X

Ici, ACPI est une infrastructure de gestion de l’alimentation électrique du système plus récente qu’APM.

[Astuce] Astuce

L’ajustement de la fréquence d’horloge des processeurs modernes est gérée par des modules du noyaux tels que acpi_cpufreq.

Ce qui suit permet de définir l’heure du système et du matériel à MM/DD hh:mm, CCYY :

# date MMDDhhmmCCYY
# hwclock --utc --systohc
# hwclock --show

Sur un système Debian, l’heure est normalement affichée en heure locale mais l’heure système et matérielle utilisent habituellement l’heure TU(GMT).

Si l’heure matérielle (BIOS) est réglée en TU, modifiez le réglage pour « UTC=yes » dans le fichier « /etc/default/rcS ».

Si vous désirez ajuster l’heure de votre système par l’intermédiaire du réseau, vous pouvez envisager l’utilisation du service NTP avec un paquet tel que ntp, ntpdate ou chrony.

Consultez ce qui suit :

[Astuce] Astuce

ntptrace(8) du paquet ntp peut suivre la trace d’une chaîne de serveurs NTP jusqu’à la source primaire.

Les pilotes de périphériques des cartes sons pour les versions actuelles de Linux sont fournies par Advanced Linux Sound Architecture (ALSA). ALSA fournit un mode d’émulation du système précédent Open Sound System (OSS) pour des raisons de compatibilité.

[Astuce] Astuce

Utilisez « cat /dev/urandom > /dev/audio » ou speaker-test(1) pour tester les hauts-parleurs. (^C pour arrêter)

[Astuce] Astuce

Si vous n’arrivez pas à obtenir de sons, il est possible que votre haut-parleur soit connecté à une sortie muette (« muted »). Les systèmes de son modernes ont de nombreuses sorties. alsamixer(1) du paquet alsa-utils est pratique pour configurer les paramètres de volume et de coupure son

Les logiciels applicatifs peuvent être configurés pour non seulement accéder aux périphériques sonores directement mais aussi pour y accéder par l’intermédiaire d’un système de serveur de son.


Il y a habituellement un moteur de son commun pour chacun des environnements de bureau les plus courants. Chaque moteur de son utilisé par l’application peut choisir de se connecter à un serveur de son différent.

Une mauvaise maintenance du système peut rendre votre système vulnérable à une attaque externe.

Pour la vérification de la sécurité et de l’intégrité du système, vous pouvez démarrer avec ce qui suit :


Voici un script simple pour rechercher des fichiers typiques ayant des permissions incorrectes d’écriture pour tout le monde.

# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
[Attention] Attention

Comme le paquet debsums utilise des sommes de contrôle MD5 enregistrées de manière statique, on ne peut pas lui faire entièrement confiance comme outil d’audit de la sécurité envers des attaques malveillantes.

Démarrer votre système avec un CD autonome de Linux ou avec un CD de l’installateur debian en mode secours (rescue) vous facilite la reconfiguration de l’enregistrement des données sur votre disque de démarrage.

Bien que fdisk(8) ait été considéré comme un standard pour la configuration de la partition du disque dur, il mérite une certaine attention. « Données de partition du disque », « table de partition » et « Étiquette de disque » sont tous des synonymes.

La plupart des PC utilisent le principe de l’Enregistrement Maître de démarrage (MBR) (« Master Boot Record ») pour enregistrer les données de partition du disque sur le premier secteur, c’est-à-dire, le secteur 0 LBA (512 octets).

[Note] Note

Certains PC récent avec une Extensible Firmware Interface (EFI), ce qui comprend les Macs basés sur Intel, utilisent un principe de GUID Partition Table (GPT) pour enregistrer les données de partitionnement du disque ailleurs que sur le premier secteur.

Alors que fdisk(8) a été l’outil standard de partitionnement de disque, parted(8) le remplace maintenant.


[Attention] Attention

Bien que parted(8) prétend pouvoir créer et redimensionner aussi les systèmes de fichiers, il est plus sûr de toucher à ces choses-là en utilisant des outils spécialisés et bien maintenus tels que mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), mkfs.ext4(8), …) et resize2fs(8).

[Note] Note

De manière à passer de GPT à MBR, il vous faut d’abord effacer les premiers blocs du disque directement (consultez Section 9.7.6, « Effacer le contenu d’un fichier ») et utiliser « parted /dev/sdx mklabel gpt » ou « parted /dev/sdx mklabel msdos » afin de le mettre en place. Vous remarquerez que « msdos » est utilisé ici pour MBR.

Bien que la reconfiguration de votre partition ou l’ordre d’activation des supports d’enregistrement amovibles puisse conduire à des noms de partitions différents, vous pouvez y accéder de manière homogène. Cela vous aidera aussi si vous avez plusieurs disques et que votre BIOS ne leur donne pas toujours le même nom de périphérique.

[Astuce] Astuce

Vous pouvez tester l’UUID d’un périphérique spécial en mode bloc avec blkid(8).

[Astuce] Astuce

Les nœuds de périphériques comme les supports d’enregistrement amovibles peuvent être rendus statiques en utilisant, si besoin, des règles udev. Consultez Section 3.3, « Le système udev ».

LVM2 est un gestionnaire de volume logique pour le noyau Linux. Avec LVM2, les partitions peuvent être créées sur des volumes logiques plutôt que sur des disques durs physiques.

LVM requiert ce qui suit :

  • le support « device-mapper » dans le noyau Linux (présent par défaut sur les noyaux Debian)

  • La bibliothèque de support du « device-mapper » en espace utilisateur (du paquet libdevmapper*)

  • le paquet des outils LVM2 en espace utilisateur (lvm2)

Démarrez l’apprentissage de LVM2 par la lecture des pages de manuel suivantes :

  • lvm(8): les bases du mécanisme de LVM2 (liste de toutes les commandes LVM2) 

  • lvm.conf(5): le fichier de configuration pour LVM2 

  • lvs(8): information sur les rapports relatifs aux volumes logiques 

  • vgs(8): information sur les rapports relatifs aux groupes de volumes

  • pvs(8): information sur les rapports relatifs aux volumes physiques.

Pour le système de fichiers ext4, le paquet e2fsprogs fournit les éléments suivants :

  • mkfs.ext4(8) pour créer un nouveau système de fichiers ext4

  • fsck.ext4(8) pour vérifier et réparer un système de fichiers ext4 existant

  • tune2fs(8) pour configurer le superbloc d’un système de fichiers ext4

Les commandes mkfs(8) et fsck(8) font partie du paquet e2fsprogs en tant que frontal à de nombreux programmes dépendant du système de fichiers (mkfs.fstype etfsck.fstype). Pour le système de fichiers ext4, il y a mkfs.ext4(8) et fsck.ext4(8) (ils sont liés par un lien physique à mke2fs(8) ete2fsck(8)).

Des commandes semblables sont disponibles pour chaque système de fichiers pris en charge par Linux.


[Astuce] Astuce

Le système de fichiers ext4 est le système de fichiers par défaut pour les systèmes Linux. Son utilisation est fortement recommandée, sauf cas spécifiques.

[Astuce] Astuce

Le système de fichiers Btrfs est disponible dans le noyau Linux 3.2 (Debian Wheezy). Il devrait devenir le prochain système de fichiers par défaut après ext4.

[Avertissement] Avertissement

Vous ne devriez pas encore utiliser le système de fichiers Btrfs pour vos données essentielles avant que la fonctionnalité fsck(8) n’atteigne l’espace dynamique du noyau et qu’il soit pris en charge par le chargeur d’amorçage.

[Astuce] Astuce

Certains outils permettent l’accès au système de fichiers sans prise en charge par le noyau Linux (consultez Section 9.7.2, « Manipulation des fichiers sans monter le disque »).

La configuration statique de base du système de fichiers est donnée par « /etc/fstab ». Par exemple,

# <système fic> <point montage> <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 noatime,errors=remount-ro 0 1
UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap sw  0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0
[Astuce] Astuce

Un UUID (consultez Section 9.5.3, « Accès à une partition en utilisant l’UUID ») peut être utilisé pour identifier un périphérique bloc au lieu des noms de périphériques blocs normaux comme « /dev/sda1 » ou « /dev/sda2 » par exemple.

Les performances et les caractéristiques d’un système de fichiers peuvent être optimisées à l’aide des options de montage utilisées (consultez fstab(5) et mount(8)). Les principales options sont les suivantes :

  • l’option « defaults » implique les options par défaut : « rw,suid,dev,exec,auto,nouser,async » (général) ;

  • les options « noatime » ou « relatime » sont très efficace pour accélérer la vitesse de lecture (général) ;

  • l’option « user » permet à un utilisateur normal de monter le système de fichiers. Cette option implique la combinaison d’options « noexec,nosuid,nodev » (général, utilisée pour les CD et les disquettes) ;

  • la combinaison d’options « noexec,nodev,nosuid » est utilisée pour améliorer la sécurité (général) ;

  • l’option « noauto » limite le montage uniquement à une opération explicite (général) ;

  • l’option « data=journal » pour ext3fs peut améliorer l’intégrité des données lors d’une panne de courant, elle s’accompagne d’une légère baisse de la vitesse d’écriture.

[Astuce] Astuce

Vous devez donner au noyau le paramètre de démarrage (consultez Section 3.1.2, « Étage 2 : le chargeur initial »), par exemple « rootflags=data=journal » afin de mettre en œuvre pour le système de fichiers racine un mode de journalisation autre que celui par défaut. Pour lenny, le mode de journalisation par défaut est « rootflags=data=ordered ». Pour squeeze, il s’agit de « rootflags=data=writeback ».

Les caractéristiques du système de fichiers peuvent être optimisées par l’intermédiaire de son superbloc en utilisant la commande tune2fs(8).

[Avertissement] Avertissement

La conversion du système de fichiers du périphérique de démarrage vers le système de fichiers ext4 doit être évitée jusqu’à ce que le système d’amorçage GRUB prenne correctement en charge le système de fichiers ext4 et que la version de noyau installée soit plus récente que 2.6.30.

[Astuce] Astuce

En dépit de son nom, tune2fs(8) ne fonctionne pas uniquement sur le système de fichiers ext2 mais aussi sur les systèmes de fichiers ext3 et ext4.

Les performances et l’usure du solid-state drive (SSD) peuvent être optimisées comme suit.

  • Utiliser le dernier noyau (>= 3.2).

  • Réduire les écritures sur le disque pour les accès en lecture.

    • Définir les options de montage « noatime » ou « relatime » dans /etc/fstab.

  • Activer la commande TRIM.

    • Définir l’option de montage « discard » dans /etc/fstab pour les systèmes de fichiers ext4 et Btrfs, les partitions de swap, etc. Consultez fstab(5).

    • Définir l’option « discard » dans /etc/lvm/lvm.conf pour LVM. Consultez lvm.conf(5).

    • Définir l’option « discard » dans /etc/crypttab pour dm-crypt. Consultez crypttab(5).

  • Activer le schéma d’allocation d’espace disque optimisé pour SSD.

    • Définir l’option de montage « ssd » dans /etc/fstab pour Brtfs.

  • Vider les données sur le disque toutes les dix minutes pour les ordinateurs portables.

    • Définir l’option de montage « commit=600 » dans /etc/fstab. Consultez fstab(5).

    • Configurer pm-utils pour utiliser laptop-mode même sous tension. Consultez le bogue Debian nº 659260.

[Avertissement] Avertissement

Modifier l’intervalle de vidage de données à dix minutes, au lieu de la valeur par défaut de cinq secondes, peut rendre les données vulnérables aux coupures de courant.

Vous pouvez surveiller et enregistrer les disques durs conformes à SMART à l’aide du démon smartd(8).

  1. Activez la fonctionnalité SMART dans le BIOS.

  2. Installez le paquet smartmontools.

  3. Identifiez vos disques durs en en affichant la liste avec df(1).

    • Supposons que le disque dur à surveiller soit « /dev/hda ».

  4. Contrôlez la sortie de « smartctl -a /dev/hda » pour voir si la fonctionnalité SMART est effectivement activée.

    • Si elle ne l’est pas, activez-la avec « smartctl -s on -a /dev/hda ».

  5. Autorisez le fonctionnement du démon smartd(8) par l’action suivante :

    • décommentez « start_smartd=yes » dans le fichier « /etc/default/smartmontools » ;

    • relancez le démon smartd(8) avec « sudo /etc/init.d/smartmontools restart ».

[Astuce] Astuce

Le démon smartd(8) peut être personnalisé par l’intermédiaire du fichier /etc/smartd.conf y compris pour la manière d’être informé des avertissements.

Les partitions créées sur le gestionnaire de volumes logiques (LVM) (« Logical Volume Manager ») (fonctionnalité de Linux) au moment de l’installation peuvent être facilement redimensionnées en y concaténant des extensions (« extents ») ou en en tronquant les extensions sur plusieurs périphériques de stockage sans reconfiguration majeure du système.

Si vous avez de l’espace disponible sur une autre partition (par exemple « /chemin/vers/ »), vous pouvez y créer un répertoire et l’ajouter au répertoire où vous avez besoin de place avec aufs.

$ sudo mv répertoire-travail ancien-répertoire
$ sudo mkdir répertoire-travail
$ sudo mkdir -p /chemin/vers/répertoire/temporaire
$ sudo mount -t aufs -o br:/chemin/vers/répertoire/temporaire:ancien-répertoire none répertoire-travail
[Attention] Attention

L’utilisation de aufs pour le stockage de données à long terme n’est pas une bonne idée car il est en cours de développement et les modifications de sa conception peuvent poser des problèmes.

[Astuce] Astuce

De manière à pouvoir utiliser aufs, il faut installer son paquet utilitaire aufs-tools et le paquet des modules du noyau pour aufs comme aufs-modules-2.6-amd64.

[Astuce] Astuce

aufs est utilisé pour fournir un système de fichiers où l’administrateur peut écrire par de nombreux projets de live CD.

Nous discutons ici des manipulations sur l’image disque.

Le fichier image du disque, « disk.img » d’un périphérique non monté, par exemple, le second périphérique SCSI « /dev/sdb » peut être créé en utilisant cp(1) ou dd(1) comme suit :

# cp /dev/sdb disque.img
# dd if=/dev/sdb of=disque.img

L’image disque du master boot record (MBR) (secteur principal d’amorçage) (consultez Section 9.5.2, « Configuration de la partition du disque ») qui se trouve sur le premier secteur du disque primaire IDE peut être faite en utilisant dd(1) comme suit :

# dd if=/dev/hda of=mbr.img bs=512 count=1
# dd if=/dev/hda of=mbr-nopart.img bs=446 count=1
# dd if=/dev/hda of=mbr-part.img skip=446 bs=1 count=66
  • « mbr.img » : MBR avec la table des partitions

  • « mbr-nopart.img » : MBR sans la table des partitions

  • « part.img » : table de partition du MBR seul

Si vous avez un périphérique SCSI (y compris les nouveaux disques de type serial ATA) comme disque d’amorçage, remplacez « /dev/hda » avec « /dev/sda ».

Si vous réalisez une image d’une partition du disque d’origine, remplacez « /dev/hda » par « /dev/hda1 », etc.

L’image disque « partition.img », qui contient une partition image unique, peut être monté et démonté en utilisant le périphérique de rebouclage (loop device) de la manière suivante :

# losetup -v -f partition.img
Loop device is /dev/loop0
# mkdir -p /mnt/loop0
# mount -t auto /dev/loop0 /mnt/loop0
...hack...hack...hack
# umount /dev/loop0
# losetup -d /dev/loop0

Cela peut être simplifié de la manière suivante :

# mkdir -p /mnt/loop0
# mount -t auto -o loop partition.img /mnt/loop0
...hack...hack...hack
# umount partition.img

Chaque partition de l’image disque « disk.img » contenant plusieurs partitions peut être montée en utilisant le périphérique de rebouclage (loop device). Étant donné que le périphérique de rebouclage ne gère pas, par défaut, les partitions, il faut le réinitialiser de la manière suivante :

# modinfo -p loop # verify kernel capability
max_part:Maximum number of partitions per loop device
max_loop:Maximum number of loop devices
# losetup -a # verify nothing using the loop device
# rmmod loop
# modprobe loop max_part=16

Maintenant, le périphérique de rebouclage peut gérer jusqu’à 16 partitions.

# losetup -v -f disk.img
Loop device is /dev/loop0
# fdisk -l /dev/loop0

Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x452b6464

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1               1         600     4819468+  83  Linux
/dev/loop0p2             601         652      417690   83  Linux
# mkdir -p /mnt/loop0p1
# mount -t ext4 /dev/loop0p1 /mnt/loop0p1
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/loop0p2 /mnt/loop0p2
...hack...hack...hack
# umount /dev/loop0p1
# umount /dev/loop0p2
# losetup -d /dev/loop0

En remplacement, des effets similaires peuvent être obtenus en utilisant les périphériques device mapper créés par kpartx(8) du paquet kpartx de la manière suivante :

# kpartx -a -v disk.img
...
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2
...
...hack...hack...hack
# umount /dev/mapper/loop0p2
...
# kpartx -d /mnt/loop0
[Note] Note

Vous pouvez monter une partition unique d’une telle image de disque avec le périphérique de rebouclage en utilisant un décalage pour sauter le MBR ou autre. Mais c’est susceptible d’induire des erreurs.

Le fichier image du disque vide « disk.img », qui pourra s’étendre jusqu’à 5Gio peut être fait en utilisant dd(1) comme suit :

$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G

Vous pouvez créer un système de fichiers ext4 sur cette image disque « disk.img » en utilisant le périphérique de rebouclage (loop device) de la manière suivante :

# losetup -f -v disk.img
Loop device is /dev/loop1
# mkfs.ext4 /dev/loop1
...hack...hack...hack
# losetup -d /dev/loop1
$ du  --apparent-size -h disk.img
5.0G  disk.img
$ du -h disk.img
83M disk.img

Pour « disk.img », sa taille de fichier est de 5.0 Gio et son utilisation disque est uniquement de 83Mio. Cette discordance est possible car ext4 sait maintenir un fichier creux (sparse).

[Astuce] Astuce

L’utilisation réelle sur le disque du fichier creux croît au fur et à mesure qu’on y écrit des données .

En utilisant des opérations similaires sur les périphériques créés par loop device ou les périphériques device mapper comme dans Section 9.6.3, « Monter le fichier image du disque », vous pouvez partitionner cette image disque « disk.img » en utilisant parted(8) ou fdisk(8), et y créer un système de fichiers en utilisant mkfs.ext4(8), mkswap(8), etc.

On peut faire le fichier image ISO9660, « cd.iso », depuis l’arborescence de répertoire source située à « répertoire_source », en utilisant genisoimage(1) fourni parcdrkit de la manière suivante :

#  genisoimage -r -J -T -V volume_id -o cd.iso répertoire_source

De la même manière, on peut créer le fichier image ISO9660 amorçable « cdboot.iso » depuis une arborescence comme celle de debian-installer située en « source_directory », de la manière suivante :

#  genisoimage -r -o cdboot.iso -V volume_id \
   -b isolinux/isolinux.bin -c isolinux/boot.cat \
   -no-emul-boot -boot-load-size 4 -boot-info-table répertoire_source

Ici, le chargeur d’amorçage Isolinux (consultez Section 3.1.2, « Étage 2 : le chargeur initial ») est utilisé pour l’amorçage.

Vous pouvez calculer la valeur de la somme md5 (md5sum) et construire des image ISO9660 directement depuis un lecteur de CD-ROM de la manière suivante :

$ isoinfo -d -i /dev/cdrom
CD-ROM is in ISO 9660 format
...
Logical block size is: 2048
Volume size is: 23150592
...
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror | md5sum
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror > cd.iso
[Avertissement] Avertissement

Vous devrez prendre garde d’éviter le bogue de lecture anticipée du système de fichiers ISO9660 de Linux comme ci-dessus afin d’obtenir les résultats corrects.

Nous allons ici discuter de la manipulation directe des données binaires sur le support d’enregistrement.

Il y a des outils pour la récupération des données et l’analyse par autopsie.

Tableau 9.24. Liste de paquets pour la récupération de données et l’analyse par autopsie

paquet popcon taille description
testdisk V:4, I:38 1235 utilitaires pour l’examen de partitions et la récupération de disque
magicrescue V:0, I:3 344 utilitaire pour la récupération de fichiers et de recherche des octets magiques
scalpel V:0, I:3 124 récupérateur de fichiers sobre de haute performance
myrescue V:0, I:1 84 récupérer des données depuis des disques endommagés
recover V:0, I:4 104 utilitaire pour récupérer des fichiers effacés d’un système de fichiers ext2
e2undel V:0, I:2 244 utilitaire pour récupérer des fichiers effacés d’un système de fichiers ext2
extundelete V:0, I:5 153 utilitaire pour récupérer des fichiers effacés d’un système de fichiers ext3/4
ext4magic V:0, I:1 253 utilitaire pour récupérer des fichiers effacés d’un système de fichiers ext3/4
ext3grep V:0, I:3 286 outil pour aider à la récupération de fichiers effacés sur un système de fichiers ext3
scrounge-ntfs V:0, I:3 80 programme de récupération de données pour les systèmes de fichiers NTFS
gzrt V:0, I:0 57 boîte à outils de récupération gzip
sleuthkit V:0, I:4 750 outil pour autopsie (« forensics analysis« ». (Sleuthkit)
autopsy V:0, I:2 1372 interface graphique à SleuthKit
foremost V:1, I:8 83 application d’autopsie pour la récupération de données
guymager V:0, I:0 949 outil de création d’image d’autopsie basée sur Qt
dcfldd V:0, I:3 109 version améliorée de dd pour les autopsies et la sécurité
rdd V:0, I:0 200 programme de copie pour autopsie

Les fichiers ayant des liens physiques peuvent être identifiés par « ls -li ».

$ ls -li
total 0
2738405 -rw-r--r-- 1 root root 0 2008-09-15 20:21 titi
2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 tutu
2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 toto

« tutu » et « toto » ont tous les deux un nombre de liens égal à "« 2 » (>1), ce qui indique qu’ils ont des liens physiques. Leur numéro d’inœud commun est « 2738404 ». Cela signifie qu’ils représentent le même fichier lié par des liens physiques. Si vous n’arrivez pas à trouver de fichiers liés par des liens physiques, vous pouvez les rechercher parinœud, par exemple « 2738404 », de la manière suivante :

# find /chemin/vers/point/de/montage -xdev -inum 2738404

Avec un accès physique à votre PC, n’importe qui peut facilement obtenir les privilèges de l’administrateur et accéder à tous les fichiers de votre PC (consultez Section 4.7.4, « sécuriser le mot de passe de l’administrateur »). Cela signifie qu’un système avec un mot de passe de connexion ne permet pas de sécuriser vos données personnelles ou sensibles en cas de vol de votre PC. Vous devez déployer des technologies de chiffrements des données pour assurer cette protection. Bien que GNU privacy guard (consultez Section 10.3, « Infrastructure de sécurité des données ») puisse chiffrer des fichiers, il demande quelques efforts de la part de l’utilisateur.

dm-crypt et eCryptfs facilitent de manière native le chiffrement automatique des données par l’intermédiaire de modules du noyau de Linux avec un minimum d’efforts de la part de l’utilisateur.


Dm-crypt est un système de fichiers chiffré qui utilise device-mapper. Device-mapper effectue le « mapping » d’un périphérique en mode bloc sur un autre.

eCryptfs est un autre système de fichiers chiffré utilisant un système de fichiers empilé. Un système de fichiers empilé s’empile lui-même par dessus un répertoire existant d’un système de fichiers monté.

[Attention] Attention

Le chiffrement des données a un coût en matière de temps processeur, etc. Veuillez comparer ses avantages à son coût.

[Note] Note

Le système Debian dans son ensemble peut être installé sur un disque chiffré par l’installateur debian (lenny ou plus récent) en utilisant dm-crypt/LUKS et initramfs.

[Astuce] Astuce

Consultez Section 10.3, « Infrastructure de sécurité des données » pour un utilitaire de chiffrement de l’espace utilisateur : GNU Privacy Guard.

Vous pouvez chiffrer le contenu des périphériques de masse amovible, par exemple, une clé USB sur « /dev/sdx » en utilisant dm-crypt/LUKS. Il suffit de le formater de la manière suivante :

# badblocks -c 1024 -s -w -t random -v /dev/sdx
# fdisk /dev/sdx
... "n" "p" "1" "return" "return" "w"
# cryptsetup luksFormat /dev/sdx1
...
# cryptsetup luksOpen /dev/sdx1 sdx1
...
# ls -l /dev/mapper/
total 0
crw-rw---- 1 root root  10, 60 2008-10-04 18:44 control
brw-rw---- 1 root disk 254,  0 2008-10-04 23:55 sdx1
# mkfs.vfat /dev/mapper/sdx1
...
# cryptsetup luksClose sdx1

Il peut alors être monté simplement comme un périphérique normal sur « /media/<étiquette_disque> » à l’exception de la demande de mot de passe (consultez Section 10.1.7, « Périphériques d’enregistrement amovibles ») sous un environnement de bureau moderne tel que GNOME en utilisant gnome-mount(1). La différence est que toutes les données qui y seront écrites seront chiffrées. Vous pouvez aussi formater le support dans un format différent, par exemple ext4 avec « mkfs.ext4 /dev/sdx1 ».

[Note] Note

Si vous êtes vraiment paranoïaque en ce qui concerne la sécurité des données, vous pourrez réécrire par dessus plusieurs fois dans l’exemple ci-dessus. Cette opération est cependant très exigeante en temps.

Supposons que votre « /etc/fstab » d’origine comporte ce qui suit :

/dev/sda7 swap sw 0 0

Vous pouvez chiffrer la partition d’échange en utilisant dm-crypt par ce qui suit :

# aptitude install cryptsetup
# swapoff -a
# echo "cswap /dev/sda7 /dev/urandom swap" >> /etc/crypttab
# perl -i -p -e "s/\/dev\/sda7/\/dev\/mapper\/cswap/" /etc/fstab
# /etc/init.d/cryptdisks restart
 ...
# swapon -a

Vous pouvez chiffrer automatiquement les fichiers se trouvant sous « ~/Private/ » en utilisant eCryptfs et le paquet ecryptfs-utils.

  • Lancez ecryptfs-setup-private(1) et configurez « ~/Private/ » en suivant les invites.

  • Activez « ~/Private/ » en lançant ecryptfs-mount-private(1).

  • Déplacez les fichiers de données sensibles vers « ~/Private/ » et faites les liens symboliques à la demande.

    • Candidats : « ~/.fetchmailrc », « ~/.ssh/identity », « ~/.ssh/id_rsa », « »~/.ssh/id_dsa » et d’autres fichiers ayant « go-rwx »

  • Déplacez les répertoires ayant des données sensibles vers un sous-répertoire de « ~/Private/ » et faites les liens symboliques nécessaires.

    • Candidats : « ~/.gnupg » et d’autres répertoires avec « go-rwx »

  • Créez le lien symbolique de « ~/Desktop/Private/ » vers « ~/Private/ » pour faciliter les opérations du bureau.

  • Désactiver « ~/Private/ » en lançant ecryptfs-umount-private(1).

  • Activez « ~/Private/ » à l’aide de « ecryptfs-mount-private » lorsque vous avez besoin de vos données chiffrées.

[Astuce] Astuce

Comme eCryptfs ne chiffre que sélectivement les fichiers sensibles, son coût en matière de ressources système est bien moindre que l’utilisation de dm-crypt sur l’ensemble du système de fichiers racine ou sur le périphérique « /home ». Il ne demande aucun effort particulier sur l’allocation de l’espace disque mais ne peut conserver la confidentialité de toutes les métadonnées du système de fichiers.

Si vous utilisez votre mot de passe de connexion pour envelopper les clés de chiffrement, vous pouvez automatiser le montage de eCryptfs par PAM (Pluggable Authentication Modules).

Insérez la ligne suivante juste avant « pam_permit.so » dans « /etc/pam.d/common-auth » :

auth required pam_ecryptfs.so unwrap

Insérez la ligne suivante en tant que toute dernière ligne de « /etc/pam.d/common-session :

session optional pam_ecryptfs.so unwrap

Insérez la ligne suivante comme première ligne active de « /etc/pam.d/common-password :

password required pam_ecryptfs.so

C’est assez pratique.

[Avertissement] Avertissement

Les erreurs de configuration de PAM peuvent vous interdire l’accès à votre propre système. Consultez Chapitre 4, Authentification.

[Attention] Attention

Si vous utilisez votre mot de passe de connexion pour encapsuler les clés de chiffrement, vos données chiffrées sont aussi sûre que l’est votre mot de passe de connexion (consultez Section 4.3, « Mot de passe de qualité »). À moins que vous ne preniez le soin de définir un mot de passe fort, vos données encourent un risque lorsque quelqu’un lance un logiciel de casse de mots de passe après avoir volé votre ordinateur (consultez Section 4.7.4, « sécuriser le mot de passe de l’administrateur »).

Debian distribue des noyaux Linux modulaires sous forme de paquets pour les architectures prises en compte.

Les noyaux Linux 2.6/3.x possèdent quelques fonctionnalités remarquables comparés à 2.4.

Le saut de version de Linux passant de 2.6.39 à 3.0 n’est pas lié à des changements technologiques majeurs, mais à la célébration de son 20ème anniversaire.

De nombreuses fonctionnalités du noyau peuvent être configurées par l’intermédiaire de paramètres du noyau de la manière suivante :

Consultez « kernel-parameters.txt(.gz) » et d’autres documents en rapport dans la documentation du noyau de Linux (« /usr/share/doc/linux-doc-3.*/Documentation/filesystems/* ») fournie par le paquet linux-doc-3.*.

Debian a sa propre manière de compiler le noyau et les modules associés.


Si vous utilisez un initrd dans Section 3.1.2, « Étage 2 : le chargeur initial », veuillez lire les informations correspondantes dans initramfs-tools(8), update-initramfs(8), mkinitramfs(8) et initramfs.conf(5).

[Avertissement] Avertissement

Ne mettez pas de liens symboliques vers le répertoire de l’arborescence des source (par exemple « /usr/src/linux* ») depuis « /usr/include/linux » et « /usr/include/asm » lors de la compilation des sources du noyau de Linux. (Certains documents périmés le suggèrent).

[Note] Note

Lors de la compilation du dernier noyau de Linux sous un système Debian stable, l’utilisation des derniers outils rétroportés depuis la distribution Debian unstable peuvent être nécessaires.

[Note] Note

Le gestionnaire de modules dynamique du noyau (« dynamic kernel module support (DKMS) » est une nouvelle architecture indépendante de la distribution conçue pour permettre la mise à jour de modules individuels du noyau sans modifier l’ensemble du noyau. Cela sera approuvé pour la maintenance des modules externes à l’arborescence du noyau pour squeeze. Cela rend aussi très facile la reconstruction des modules après la mise à jour des noyaux.

Le pilote de matériel est le code s’exécutant sur le système cible. La plupart des pilotes de matériel sont maintenant disponibles sont forme de logiciels libres et font partie des paquets Debian du noyau dans la section main.

  • Pilote de processeur graphique

    • Pilote Intel (main)

    • Pilote AMD ou ATI (main)

    • Pilote NVIDIA (main pour le pilote nouveau et non-free pour les pilotes binaires pris en charge par le constructeur)

  • Pilote de Softmodem

    • Paquets martian-modem et sl-modem-dkms (non libres)

Le microprogramme est le code ou les données chargées sur le périphérique (par exemple le microcode de processeur, le code de rendu exécuté sur les processeurs graphiques, ou les données de FPGA ou de CPLD, etc.) Certains paquets de microprogramme sont disponibles sous forme de logiciel libre, mais beaucoup de paquets de microprogramme ne le sont pas car ils contiennent des données binaires sans source.

  • firmware-linux-free (main)

  • firmware-linux-nonfree (non libre)

  • firmware-linux-* (non libre)

  • *-firmware (non libre)

  • intel-microcode (non libre)

  • amd64-microcode (non libre)

Veuillez remarquer que les paquets de non-free et contrib ne font pas partie du système Debian. La configuration pour activer et désactiver les sections non-free et contrib est décrite en Section 2.1.4, « Bases concernant l’archive Debian ». Vous devriez être conscient des aspects négatifs associés à l’utilisation de paquets de non-free et contrib décrits dans Section 2.1.5, « Debian est totalement libre ».

L’utilisation d’un système virtualisé permet de faire tourner simultanément plusieurs instances du système sur une plateforme unique.

Il a plusieurs paquets associés à la virtualisation et à l’émulation du système sous Debian au-delà d’un simple chroot. Certains paquets vous facilitent la mise en place d’un tel système.

Tableau 9.27. Liste des outils de virtualisation

paquet popcon taille description
schroot V:8, I:13 2430 outil spécialisé pour l’exécution d’un paquet binaire de Debian dans un chroot
sbuild V:0, I:2 463 outil pour construire des paquets binaires de Debian depuis les sources Debian
pbuilder V:3, I:22 996 constructeur personnel de paquets pour des paquets Debian
debootstrap V:10, I:80 227 amorcer un système Debian de base (écrit en sh)
cdebootstrap V:1, I:8 66 amorcer un système Debian (écrit en C)
rootstrap V:0, I:1 97 outil pour construire des images d’un système de fichiers de Linux complet
virt-manager V:7, I:24 6520 Gestionnaire de machine virtuelle : application du gestionnaire de bureau pour la gestion des machines virtuelles
libvirt-bin V:34, I:52 10107 programmes pour la bibliothèque libvirt
user-mode-linux V:0, I:2 28128 User-mode Linux (noyau)
bochs V:0, I:1 2969 Bochs : émulateur PC IA-32
qemu I:56 532 QEMU : émulateur de processeur générique rapide
qemu-system V:34, I:58 73 QEMU : binaires pour l’émulation d’un système complet
qemu-user V:5, I:56 40394 QEMU : binaires pour l’émulation en mode utilisateur
qemu-utils V:10, I:91 2210 QEMU : utilitaires
qemu-kvm V:38, I:63 75 KVM : virtualisation complète sur les plateformes x86 ayant une virtualisation assistée par le matériel
virtualbox V:50, I:62 48227 VirtualBox : solution de virtualisation x86 sur i386 et amd64
xen-tools V:1, I:11 618 outils pour gérer le serveur virtuel XEN de Debian
wine V:8, I:116 80 Wine : implémentation de l’API Windows (suite standard)
dosbox V:4, I:22 2526 DOSBox : émulateur x86 avec graphisme Tandy/Herc/CGA/EGA/VGA/SVGA, son et DOS
dosemu V:1, I:7 4820 DOSEMU : l’émulateur DOS de Linux
vzctl V:5, I:7 872 OpenVZ solution de virtualisation de serveur - outils de contrôle
vzquota V:5, I:8 210 OpenVZ solution de virtualisation de serveur - outils de quota
lxc V:2, I:8 648 Conteneurs Linux outils de l’espace utilisateur

Consultez l’article de Wikipedia Comparaison de machines pour plateforme virtuelle pour une comparaison détaillée entre les différentes solutions de plateformes de virtualisation.

[Note] Note

Certaines fonctionnalités décrites ici ne sont disponibles que dans squeeze.

[Note] Note

Les noyaux par défaut de Debian prennent en charge KVM depuis lenny.

La virtualisation met en œuvre plusieurs étapes :

Pour le fichier image disque brut, consultez Section 8.3, « Les paramètres linguistiques (« locale ») ».

Pour d’autres fichiers d’images disques virtuels, vous pouvez utiliser qemu-nbd(8) pour les exporter en utilisant le protocole network block device et en les montant à l’aide du module nbd du noyau.

qemu-nbd(8) gère les formats de disques pris en compte par QEMU : QEMU gère les formats de disques suivants  raw, qcow2, qcow, vmdk, vdi, bochs, cow (mode utilisateur de Linux copy-on-write), parallels, dmg, cloop, vpc, vvfat (VFAT virtuelle) et host_device.

Le network block device peut gérer des partitions de la même manière que le périphérique de rebouclage (« loop device » (consultez Section 9.6.3, « Monter le fichier image du disque »). Vous pouvez monter la première partition de « disk.img » de la manière suivante :

# modprobe nbd max_part=16
# qemu-nbd -v -c /dev/nbd0 disk.img
...
# mkdir /mnt/part1
# mount /dev/nbd0p1 /mnt/part1
[Astuce] Astuce

Vous ne pouvez exporter que la première partition de « disk.img » en utilisant l’option « -P 1 » de qemu-nbd(8).

chroot(8) propose la plupart des moyens simples pour faire tourner simultanément plusieurs instances de l’environnement GNU/Linux sur un même système sans redémarrer.

[Attention] Attention

Les exemple ci-dessous supposent que le système père et le système chroot partagent tous les deux la même architecture de processeur.

Vous pouvez apprendre comment configurer et utiliser chroot(8) en lançant le programme pbuilder(8) sous script(1) comme suit :

$ sudo mkdir /sid-root
$ sudo pbuilder --create --no-targz --debug --buildplace /sid-root

Vous pouvez voir comment debootstrap(8) ou cdebootstrap(1) installent les données du système pour l’environnement sid sous « /sid-root ».

[Astuce] Astuce

debootstrap(8) ou cdebootstrap(1) sont utilisés pour installer Debian avec l’installateur Debian. Ils peuvent aussi être utilisés pour installer Debian sur un système sans utiliser de disque d’installation de Debian, mais en provenance d’une autre distribution GNU/Linux.

$ sudo pbuilder --login --no-targz  --debug --buildplace /sid-root

Vous pouvez voir ci-après comment un shell système tournant sous l’environnement sid est créé :

  1. Copier la configuration locale (« /etc/hosts », « /etc/hostname », « /etc/resolv.conf »)

  2. Monter le système de fichiers « /proc »

  3. Monter le système de fichiers « /dev/pts »

  4. Créer « /usr/sbin/policy-rc.d » qui existe toujours avec 101

  5. Lancer « chroot /sid-root bin/bash -c 'exec -a -bash bin/bash' »

[Note] Note

Certains programmes sous chroot peuvent demander l’accès à davantage de fichiers du système parent pour fonctionner que ceux que fournit pbuilder. Par exemple, on peut avoir besoin de monter liés (« bind-mount ») ou de copier « /sys », « /etc/passwd », « /etc/group », « /var/run/utmp », « /var/log/wtmp », etc.

[Note] Note

Le fichier « /usr/sbin/policy-rc.d » évite que des programmes démons ne soient démarrés automatiquement sur le système Debian. Consultez « /usr/share/doc/sysv-rc/README.policy-rc.d.gz ».

[Astuce] Astuce

Le but d’origine du paquet spécialisé d’environnement protégé (chroot) pbuilder est de construire une système protégé et de construire un paquet depuis cet environnement. C’est le système idéal à utiliser pour vérifier que les dépendances de construction d’un paquet sont correctes et pour s’assurer que les dépendances de construction erronées ou non nécessaires n’existent pas dans le paquet résultant.

[Astuce] Astuce

De même, le paquet schroot peut vous donner l’idée de faire tourner un système chroot i386 sous le système parent amd64.

Je vous recommande d’utiliser QEMU ou VirtualBox sur un système Debian stable afin de faire tourner des systèmes de bureau multiples en utilisant la virtualisation. Cela vous permet de lancer des applications de bureau de Debian unstable et testing sans les risques qui leur sont habituellement associés.

Comme QEMU pur est très lent, il est recommandé de l’accélérer avec KVM lorsque le sysètme hôte le prend en charge.

L’image disque virtuelle « virtdisk.qcow2 » qui contient un système Debian pour QEMU peut être créée en utilisant un CD minimal de debian-installer de la manière suivante :

$ wget http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso
$ qemu-img create -f qcow2 virtdisk.qcow2 5G
$ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256
...

Vous trouverez des astuces supplémentaires sur le wiki Debian : QEMU.

VirtualBox est fourni avec des outils ayant une interface graphique Qt et est assez intuitif. Son interface graphique et ses outils en ligne de commandes sont expliqués dans le Manuel de l’utilisateur de VirtualBox et le Manuel de l’utilisateur VirtualBox (PDF).

[Astuce] Astuce

Faire tourner d’autres distributions de GNU/Linux comme Ubuntu et Fedora sous une virtualisation est une bonne manière d’en étudier les astuces de configuration. D’autres systèmes d’exploitation propriétaires peuvent aussi tourner de manière agréable sous la virtualisation GNU/Linux.