Table des matières
Je décris ici les astuces de base pour configurer et gérer les systèmes, la plupart depuis la console.
There are some utility programs to help your console activities.
Tableau 9.1. List of programs to support console activities
paquet | popcon | taille | description |
---|---|---|---|
mc
|
V:54, I:226 | 1482 | See Section 1.3, « Midnight Commander (MC) » |
bsdutils
|
V:610, I:999 | 355 | script command to make typescript of terminal session |
screen
|
V:91, I:263 | 997 | multiplexeur de terminal avec une émulation de terminal VT100/ANSI |
tmux
|
V:39, I:147 | 1106 | terminal multiplexer alternative (Use "Control-B" instead) |
fzf
|
V:3, I:11 | 3323 | fuzzy text finder |
fzy
|
V:0, I:0 | 54 | fuzzy text finder |
rlwrap
|
V:1, I:17 | 330 | readline feature command line wrapper |
ledit
|
V:0, I:13 | 315 | readline feature command line wrapper |
rlfe
|
V:0, I:0 | 42 | readline feature command line wrapper |
ripgrep
|
V:3, I:14 | 4557 | fast recursive string search in the source code tree with automatic filtering |
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 > cleanedfile $ vim cleanedfile
There are alternative methods to record the shell activities:
Use tee
(usable during the boot process in the
initramfs):
$ sh -i 2>&1 | tee typescript
Use gnome-terminal
with the extend line buffer for
scrollback.
Use screen
with "^A H
" (see Section 9.1.2, « Le programme screen ») to perform recording of console.
Use vim
with ":terminal
" to enter the
terminal mode. Use "Ctrl-W N
" to exit from terminal mode
to normal mode. Use ":w typescript
" to write the buffer
to a file.
Use emacs
with "M-x shell
",
"M-x eshell
", or "M-x term
" to enter
recording console. Use "C-x C-w
" to write the buffer to
a file.
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) :
vous-vous connectez à une machine distante ;
vous démarrez screen
sur une seule console ;
vous exécutez plusieurs programmes dans les fenêtres
screen
créées avec ^A c
(« Ctrl-A » suivi de « c ») ;
vous passez d’une des fenêtres multiples de screen
à
l’autre avec ^A n
(« Ctrl-A » suivi de
« n ») ;
vous avez alors besoin de quitter votre terminal, mais vous ne voulez pas perdre votre travail en cours perdant la connexion.
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.
Vous vous reconnectez à la même machine distante (même depuis un autre terminal) ;
Vous lancez screen
avec « screen
-r
» ;
screen
réattache
magiquement toutes les fenêtres screen
précédentes avec
tous les programmes qui y tournent.
Astuce | |
---|---|
Avec |
Dans une session screen
, toutes les entrées clavier sont
envoyées vers votre fenêtre actuelle sauf les séquences de touche de
commande. Toutes les séquences de touche de commande
screen
sont entrées par ^A
(« Ctrl-A ») suivi d’un seule touche [plus les paramètres]. Voici
celles dont il est important de se souvenir.
Tableau 9.2. Liste des raccourcis clavier de screen
affectation | signification |
---|---|
^A ? |
afficher l’aide de screen (afficher les raccourcis clavier) |
^A c |
créer une nouvelle fenêtre et basculer vers celle-ci |
^A n |
aller à la fenêtre suivante |
^A p |
aller à la fenêtre précédente |
^A 0 |
aller à la fenêtre 0 |
^A 1 |
aller à la fenêtre 1 |
^A w |
afficher la liste des fenêtres |
^A a |
envoyer un Ctrl-A à la fenêtre actuelle en tant qu’entrée clavier |
^A h |
écrire dans un fichier une copie de la fenêtre actuelle |
^A H |
commencer et finir l’enregistrement de la fenêtre en cours vers un fichier |
^A ^X |
verrouiller le terminal (protégé par un mot de passe) |
^A d |
détacher la session screen du terminal |
^A DD |
détacher la session screen et se déconnecter |
Consultez screen
(1) pour davantage d’informations.
See tmux
(1) for functionalities of the alternative
command.
In Section 1.4.2, « Personnaliser bash », 2 tips to allow quick navigation
around directories are described: $CDPATH
and
mc
.
If you use fuzzy text filter program, you can do without typing the exact
path. For fzf
, include following in
~/.bashrc
.
FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash if [ -f $FZF_KEYBINDINGS_PATH ]; then . $FZF_KEYBINDINGS_PATH fi FZF_COMPLETION_PATH=/usr/share/doc/fzf/examples/completion.bash if [ -f $FZF_COMPLETION_PATH ]; then . $FZF_COMPLETION_PATH fi
For example:
You can jump to a very deep subdirectory with minimal efforts. You first
type "cd **
" and press Tab
. Then you
will be prompted with candidate paths. Typing in partial path strings,
e.g., s/d/b foo
, will narrow down candidate paths. You
select the path to be used by cd
with cursor and return
keys.
You can select a command from the command history more efficiently with
minimal efforts. You press Ctrl-R
at the command
prompt. Then you will be prompted with candidate commands. Typing in
partial command strings, e.g., vim d
, will narrow down
candidates. You select the one to be used with cursor and return keys.
Some commands such as /usr/bin/dash
which lacks command
line history editing capability can add such functionality transparently by
running under rlwrap
or its equivalents.
$ rlwrap dash -i
This provides convenient platform to test subtle points for
dash
with friendly bash
-like
environment.
After you learn basics of vim
(1) through Section 1.4.8, « Using vim », please read Bram Moolenaar's "Seven habits of effective text
editing (2000)" to understand how vim
should be
used.
Attention | |
---|---|
Don't try to change the default key bindings without very good reasons. |
The behavior of vim
can be changed significantly by
enabling its internal features through the Ex
-mode
commands such as "set ...
" to set vim options.
These Ex
-mode commands can be included in user's vimrc
file, traditional "~/.vimrc
" or git-friendly
"~/.vim/vimrc
". Here is a very simple example
[2]:
colorscheme murphy " from /usr/share/vim/vim??/colors/*.vim filetype plugin indent on " filetype aware behavior syntax enable " Syntax highlight "set spelllang=en_us " Spell check language as en_us "set spell " Enable spell check set autoindent " Copy indent from current line set smartindent " More than autoindent (Drop/Pop after {/}) set nosmarttab " <Tab>-key always inserts blanks set backspace=indent,eol,start " Back space through everything set laststatus=2 " Always show status line set statusline=%<%f%m%r%h%w%=%y[U+%04B]%2l/%2L=%P,%2c%V
Simple customization to enable secure-modelines and classical IDE can be enabled by installing vim-scripts package and appending the following to user's vimrc file.
packadd! secure-modelines packadd! winmanager let mapleader = ' ' " Toggle paste mode with <SPACE>p set pastetoggle=<leader>p " IDE-like UI for files and buffers with <space>w nnoremap <leader>w :WMToggle<CR> " Use safer keys <C-?> for moving to another window nnoremap <C-H> <C-W>h nnoremap <C-J> <C-W>j nnoremap <C-K> <C-W>k nnoremap <C-L> <C-W>l
In order for the above keybindings to function properly, the terminal
program needs to be configured to generate "ASCII DEL" for
Backspace
-key and "Escape sequence" for
Delete
-key.
The new native Vim package system works nicely with "git
"
and "git submodule
". One such example configuration can
be found at my git repository:
dot-vim. This does essentially:
By using "git
" and "git submodule
",
latest external packages, such as
"name
", are placed into
~/.vim/pack/*/opt/name
and similar.
By adding :packadd! name
line to
user's vimrc file, these packages are placed on
runtimepath
.
Vim loads these packages on runtimepath
during its
initialization.
At the end of its initialization, tags for the installed documents are
updated with "helptags ALL
".
For more, please start vim
with "vim
--startuptime vimstart.log
" to check actual execution sequence and
time spent for each step.
Interesting external plugin packages can be found:
Vim - the ubiquitous text editor -- The official upstream site of Vim and vim scripts
VimAwsome -- The listing of Vim plugins
vim-scripts -- Debian package: a collection of vim scripts
It is quite confusing to see too many ways[3] to manage and load these external packages to
vim
. Checking the original information is the best cure.
Tableau 9.3. Information on the initialization of vim
key strokes | information |
---|---|
:help package |
explanation on the vim package mechanism |
:help runtimepath |
explanation on the runtimepath mechanism |
:version |
internal states including candidates for the vimrc file |
:echo $VIM |
the environment variable "$VIM " used to locate the vimrc
file |
:set runtimepath? |
list of directories which will be searched for all runtime support files |
:echo $VIMRUNTIME |
the environment variable "$VIMRUNTIME " used to locate
various system provided runtime support files |
Many traditional programs record their activities in the text file format
under the "/var/log/
" directory.
logrotate
(8) is used to simplify the administration of
log files on a system which generates a lot of log files.
Many new programs record their activities in the binary file format using
systemd-journald
(8) Journal service under the
"/var/log/journal
" directory.
You can log data to the systemd-journald
(8) Journal from
a shell script by using the systemd-cat
(1) command.
Consultez Section 3.4, « Messages du système » et Section 3.3, « Messages du noyau ».
Voici les principaux analyseurs de journaux
(« ~Gsecurity::log-analyzer
» dans
aptitude
(8)).
Tableau 9.4. Liste des analyseurs de journaux système
paquet | popcon | taille | description |
---|---|---|---|
logwatch
|
V:14, I:16 | 2328 | analyseur de journal avec une sortie sympathique en Perl |
fail2ban
|
V:111, I:125 | 2127 | bannir les IP qui provoquent des erreurs d’authentification multiples |
analog
|
V:3, I:100 | 3739 | analyseur des journaux du serveur web |
awstats
|
V:8, I:13 | 6895 | analyseur des journaux du serveur web puissant ayant de nombreuses fonctionnalités |
sarg
|
V:1, I:2 | 845 | générateur de rapport d’analyse de squid |
pflogsumm
|
V:2, I:4 | 109 | résumer les entrées de journal de postfix |
syslog-summary
|
V:0, I:1 | 30 | résumer le contenu du fichier journal syslog |
fwlogwatch
|
V:0, I:0 | 477 | analyseur des journaux du pare-feu |
squidview
|
V:0, I:0 | 189 | surveiller et analyser les fichiers access.log de squid |
swatch
|
V:0, I:0 | 99 | visualisateur de fichier journal avec correspondance d’expressions rationnelles, mise en évidence et « hooks » |
crm114
|
V:0, I:0 | 1119 | analyseur et filtre de données diverses, dont les pourriels (CRM114) |
icmpinfo
|
V:0, I:0 | 44 | interpréter les messages ICMP |
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. |
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 | |
---|---|
Pour |
The default display format of time and date by the "ls
-l
" command depends on the locale (see Section 1.2.6, « Horodatage » for
value). The "$LANG
" variable is referred first and it
can be overridden by the "$LC_TIME
" or
"$LC_ALL
" exported environment variables.
The actual default display format for each locale depends on the version of
the standard C library (the libc6
package) used. I.e.,
different releases of Debian had different defaults. For iso-formats, see
ISO 8601.
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'
»).
Tableau 9.5. Display examples of time and date for the "ls -l
" command
with the time style value
valeur de style pour l’heure | locale | affichage de la date et l’heure |
---|---|---|
iso |
n’importe laquelle | 01-19 00:15 |
long-iso |
n’importe laquelle | 2009-01-19 00:15 |
full-iso |
n’importe laquelle | 2009-01-19 00:15:16.000000000 +0900 |
locale |
C |
Jan 19 00:15 |
locale |
en_US.UTF-8 |
Jan 19 00:15 |
locale |
es_ES.UTF-8 |
ene 19 00:15 |
+%d.%m.%y %H:%M |
n’importe laquelle | 19.01.09 00:15 |
+%d.%b.%y %H:%M |
C ou en_US.UTF-8 |
19.Jan.09 00:15 |
+%d.%b.%y %H:%M |
es_ES.UTF-8 |
19.ene.09 00:15 |
Astuce | |
---|---|
You can eliminate typing long option on commandline using command alias (see Section 1.5.9, « Alias de commande »): alias ls='ls --time-style=+%d.%m.%y %H:%M' |
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 :
$ RED=$(printf "\x1b[31m") $ NORMAL=$(printf "\x1b[0m") $ REVERSE=$(printf "\x1b[7m") $ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"
Les commandes colorisées sont pratiques pour examiner la sortie d’une
commande dans l’environnement interactif. J’inclus ce qui suit dans mon
fichier « ~/.bashrc
».
if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls='ls --color=always' alias ll='ls --color=always -l' alias la='ls --color=always -A' alias less='less -R' alias ls='ls --color=always' alias grep='grep --color=always' alias egrep='egrep --color=always' alias fgrep='fgrep --color=always' alias zgrep='zgrep --color=always' else alias ll='ls -l' alias la='ls -A' fi
L’utilisation d’alias réserve les effets de couleurs à l’utilisation
interactives des commandes. Il a l’avantage sur l’exportation de la variable
d’environnement « export
GREP_OPTIONS='--color=auto'
» car la couleur peut être
affichée avec des programmes de visualisation (« pager » tels que
less
(1). Si vous souhaitez supprimer la couleur lors du
tubage (« piping » à destination d’autres programmes, utilisez
plutôt « --color=auto
» dans l’exemple
ci-dessus pour « ~/.bashrc
».
Astuce | |
---|---|
Vous pouvez désactiver ces alias dans l’environnement interactif en appelant
l’interpréteur de commandes par « |
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 plusieurs manières d’enregistrer l’image graphique d’une
application X, y compris un affichage xterm
.
Tableau 9.6. Liste des outils de manipulation d’images
paquet | popcon | taille | screen | commande |
---|---|---|---|---|
gnome-screenshot
|
V:25, I:259 | 1134 | Wayland | screenshot application for GNOME |
flameshot
|
V:6, I:12 | 3361 | Wayland | screenshot application on steroid |
gimp
|
V:53, I:272 | 19767 | Wayland + X | screenshot in GUI menu |
x11-apps
|
V:26, I:440 | 2476 | X | xwd (1) |
imagemagick
|
I:326 | 176 | X | import (1) |
scrot
|
V:5, I:69 | 129 | X | scrot (1) |
There are specialized tools to record changes in configuration files with help of DVCS and to make system snapshots on Btrfs.
Tableau 9.7. List of packages which can record configuration history
paquet | popcon | taille | description |
---|---|---|---|
etckeeper
|
V:27, I:31 | 164 | enregistrer les fichiers de configuration et leurs métadonnées avec Git (par défaut), Mercurial ou Bazaar (nouveau) |
timeshift
|
V:3, I:6 | 3155 | system restore utility using rsync or BTRFS snapshots |
snapper
|
V:4, I:5 | 2233 | Linux filesystem snapshot management tool |
You may also think about local script Section 10.2.3, « Personal backup » approach.
L’activité des programmes peut être surveillée et contrôlée à l’aide d’outils spécialisés.
Tableau 9.8. Liste des outils de surveillance et de contrôle de l’activité des programmes
paquet | popcon | taille | description |
---|---|---|---|
coreutils
|
V:908, I:999 | 18062 | nice (1) : lancer un programme avec une priorité
d’ordonnancement modifiée |
bsdutils
|
V:610, I:999 | 355 | renice (1) : modifier la priorité d’ordonnancement
d’un programme en cours d’exécution |
procps
|
V:753, I:999 | 2091 | utilitaires du système de fichiers
« /proc » : ps (1),
top (1), kill (1),
watch (1), … |
psmisc
|
V:426, I:798 | 909 | utilitaires du système de fichiers
« /proc » : killall (1),
fuser (1), peekfd (1),
pstree (1) |
time
|
V:10, I:181 | 129 | time (1) : lancer un programme qui indique
l’utilisation des ressources du système en fonction du temps |
sysstat
|
V:162, I:185 | 1785 | sar (1), iostat (1),
mpstat (1), … : outils de mesure des performances du
système pour Linux |
isag
|
V:0, I:3 | 106 | Générateur interactif de graphes de l’activité système pour sysstat |
lsof
|
V:393, I:942 | 482 | lsof (8) : afficher la liste des fichiers ouverts par
un processus en cours d’utilisation en utilisant l’option
« -p |
strace
|
V:14, I:135 | 2839 | strace (1) : tracer les appels système et les signaux |
ltrace
|
V:0, I:18 | 338 | ltrace (1) : tracer les appels de bibliothèque |
xtrace
|
V:0, I:0 | 353 | xtrace (1) : tracer la communication entre un client
X11 et le serveur |
powertop
|
V:10, I:197 | 650 | powertop (1) : information concernant la puissance
électrique utilisée |
cron
|
V:853, I:996 | 220 | faire tourner des processus en arrière plan selon un calendrier depuis le
démon cron (8) |
anacron
|
V:374, I:455 | 91 | ordonnanceur de type cron pour les systèmes qui ne tournent pas 24 heures sur 24 |
at
|
V:126, I:205 | 159 | at (1) ou batch (1) : lancer un
travail à une heure déterminée ou en dessous d’un niveau de charge donné |
Astuce | |
---|---|
Le paquet |
Afficher la durée du processus indiqué dans la commande.
# time some_command >/dev/null real 0m0.035s # time on wall clock (elapsed real time) user 0m0.000s # time in user mode sys 0m0.020s # time in kernel mode
Une valeur de politesse (« nice » est utilisée pour contrôler la priorité d’ordonnancement du processus.
Tableau 9.9. Liste des valeurs de politesse pour la priorité d’ordonnancement
valeur de politesse | priorité d’ordonnancement |
---|---|
19 | la plus basse priorité d’un processus (poli) |
0 | très haute priorité de processus pour un utilisateur |
-20 | très haute priorité d’un processus pour root (non poli) |
# nice -19 top # very nice # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast
Parfois, une valeur extrême de politesse (« nice ») fait plus de mal que de bien au système. Utilisez cette commande avec précaution.
La commande ps
(1) sous Debian comporte à la fois les
fonctionnalités de BSD et de SystemV, elle aide à identifier l’activité des
processus de manière statique.
Tableau 9.10. Liste des styles de la commande ps
style | commande typique | fonction |
---|---|---|
BSD | ps aux |
afficher %CPU %MEM |
System V | ps -efH |
afficher le PPID |
Les processus fils zombies (« defunct ») peuvent être tués par
l’identifiant du processus parent identifié dans le champ
« PPID
»
La commande pstree
(1) affiche une arborescence des
processus.
top
(1) sous Debian a de riches fonctionnalités et aide à
identifier de manière dynamique quels sont les processus qui ont une
activité curieuse.
It is an interactive full screen program. You can get its usage help press by pressing the "h"-key and terminate it by pressing the "q"-key.
Vous pouvez afficher la liste des fichiers ouverts par un processus avec un identifiant de processus (PID), par exemple de 1 en faisant ce qui suit :
$ sudo lsof -p 1
PID=1 est habituellement le programme init
.
Vous pouvez tracer l’activité d’un programme avec
strace
(1), ltrace
(1) ou
xtrace
(1) pour les appels système, les appels
bibliothèque ou la communication entre le serveur et le client X11.
Vous pouvez tracer les appels système de la commande ls
de la manière suivante :
$ sudo strace ls
Astuce | |
---|---|
Use strace-graph script found in /usr/share/doc/strace/examples/ to make a nice tree view |
Vous pouvez aussi identifier les processus qui utilisent des fichiers par
fuser
(1), par exemple pour
« /var/log/mail.log
» en faisant ce qui
suit :
$ sudo fuser -v /var/log/mail.log USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd
Vous voyez que le fichier « /var/log/mail.log
»
est ouvert en écriture par la commande rsyslogd
(8).
Vous pouvez aussi identifier les processus qui utilisent des sockets par
fuser
(1), par exemple, pour
« smtp/tcp
» par ce qui suit :
$ sudo fuser -v smtp/tcp USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4
Vous savez maintenant que exim4
(8) tourne sur votre
système pour gérer les connexions TCP du port
SMTP (25).
watch
(1) execute un programme de manière répétitive avec
un intervalle constant tout en affichant sa sortie en plein écran.
$ watch w
Cela permet l’affichage, mis à jour toutes les deux secondes, de qui est connecté au système.
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
».
Méthode de la boucle « for» » de l’interpréteur de commandes (consultez Section 12.1.4, « Boucles de l’interpréteur de commandes ») :
for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
combinaison de find
(1) et de
xargs
(1) :
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
find
(1) avec l’option
« -exec
» avec une commande :
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
find
(1) avec l’option
« -exec
» avec un court script de
l’interpréteur :
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;
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).
Pour l'interface en ligne de commande
(CLI), le premier programme trouvé dans les répertoires spécifiés
dans la variable d'environnement $PATH
, et dont le nom
correspond, est exécuté. Voir Section 1.5.3, « La variable « $PATH
» »
For the graphical user interface
(GUI) compliant to the freedesktop.org standards, the
*.desktop
files in the
/usr/share/applications/
directory provide necessary
attributes for the GUI menu display of each program. Each package which is
compliant to Freedesktop.org's xdg menu system installs its menu data
provided by "*.desktop" under "/usr/share/applications/". Modern desktop
environments which are compliant to Freedesktop.org standard use these data
to generate their menu using the xdg-utils package. See
"/usr/share/doc/xdg-utils/README".
Par exemple, le fichier chromium.desktop
définit les
attributs pour le "Navigateur Web Chromium" tel que "Name" pour le nom du
programme, "Exec" pour le chemin et les paramètres d'exécution du programme,
"Icon" pour l'icône utilisée, etc. (voir la Spécification d'Entrée de fichier
Desktop) comme suit :
[Desktop Entry] Version=1.0 Name=Chromium Web Browser GenericName=Web Browser Comment=Access the Internet Comment[fr]=Explorer le Web Exec=/usr/bin/chromium %U Terminal=false X-MultipleArgs=false Type=Application Icon=chromium Categories=Network;WebBrowser; MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https; StartupWMClass=Chromium StartupNotify=true
Ceci est une description extrêmement simplifiée. Les fichiers
*.desktop
sont analysés comme suit:
L'environnement de bureau définit les variables d'environnement
$XDG_DATA_HOME
et $XDG_DATA_DIR
. Par
exemple, sous GNOME 3 :
« $XDG_DATA_HOME
» n'est pas paramétré. (La valeur par
défaut de « $HOME/.local/share
» est utilisée.)
« $XDG_DATA_DIRS
» est paramétré à
« /usr/share/gnome:/usr/local/share/:/usr/share/
».
Les répertoires de base (voir Spécification du répertoire de base
XDG et les répertoires des « applications
» sont
donc les suivants :
$HOME/.local/share/
→
$HOME/.local/share/applications
/usr/share/gnome/
→
/usr/share/gnome/applications/
/usr/local/share/
→
/usr/local/share/applications
/usr/share/
→ /usr/share/applications
Les fichiers *.desktop
sont parcourus dans ces
répertoires applications
dans cet ordre.
Astuce | |
---|---|
Une entrée de menu « graphique » personnalisée peut être créée en ajoutant
un fichier « |
Astuce | |
---|---|
De la même façon, si un fichier « |
Astuce | |
---|---|
De la même façon, si un fichier « |
Certains programmes lancent automatiquement d’autres programmes. Voici des points-clés pour la personnalisation de ce processus :
Menu de configuration des applications :
bureau GNOME : « Paramètres » → « Système » → « Détails » → « Applications par défaut »
bureau KDE : « K » → « Centre de contrôle » → « Composants KDE » → « Sélection de composant »
navigateur Iceweasel : « Éditer » → « Préférences » → « Applications »
mc
(1) :
« /etc/mc/mc.ext
»
Environment variables such as "$BROWSER
",
"$EDITOR
", "$VISUAL
", and
"$PAGER
" (see environ
(7))
le système update-alternatives
(1) pour des programmes
tels que « editor
»,
« view
»,
« x-www-browser
»,
« gnome-www-browser
» et
« www-browser
» (consultez Section 1.4.7, « Définir un éditeur de texte par défaut »)
le contenu des fichiers « ~/.mailcap
» et
« /etc/mailcap
» qui associe un type MIME avec un programme (consultez
mailcap
(5))
le contenu des fichiers « ~/.mime.types
» et
« /etc/mime.types
» qui associe l’extension du
nom de fichier avec un type MIME (consultez
run-mailcap
(1))
Astuce | |
---|---|
|
Astuce | |
---|---|
Le paquet |
Astuce | |
---|---|
In order to run a console application such as # cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF # chmod 755 /usr/local/bin/mutt-term |
Astuce | |
---|---|
GUI application can be executed easily under specific environment variables
if the program for "Exec" in its corresponding # cat /usr/local/bin/kitty <<EOF #!/bin/sh GLFW_IM_MODULE=ibus exec /usr/bin/kitty "\$@" EOF # chmod 755 /usr/local/bin/kitty This |
Utilisez kill
(1) pour tuer (ou envoyer un signal à) un
processus avec son identifiant de processus.
Utilisez killall
(1) ou pkill
(1) pour
faire la même chose avec le nom de commande du processus et d’autres
attributs.
Tableau 9.11. Liste des signaux couramment utilisés avec la commande kill
valeur du signal | nom du signal | action | note |
---|---|---|---|
0 | --- | no signal is sent (see kill (2)) |
check if process is running |
1 | SIGHUP | terminate the process | disconnected terminal (signal hang up) |
2 | SIGINT | terminate the process | interrupt from keyboard (CTRL-C ) |
3 | SIGQUIT | terminate the process and dump core | quit from keyboard (CTRL-\ ) |
9 | SIGKILL | terminate the process | unblockable kill signal |
15 | SIGTERM | terminate the process | blockable termination signal |
Exécutez de la manière suivante la commande at
(1) pour
planifier un travail qui s’exécute une fois
$ echo 'command -args'| at 3:40 monday
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).
# use /bin/sh to run commands, no matter what /etc/passwd says SHELL=/bin/sh # mail any output to paul, no matter whose crontab this is MAILTO=paul # Min Hour DayOfMonth Month DayOfWeek command (Day... are OR'ed) # run at 00:05, every day 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # run at 14:15 on the first of every month -- output mailed to paul 15 14 1 * * $HOME/bin/monthly # run at 22:00 on weekdays(1-5), annoy Joe. % for newline, last % for cc: 0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%.%% 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" # run at 03:40 on the first Monday of each month 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && command -args
Astuce | |
---|---|
Sur un système qui ne tourne pas en permanence, installez le paquet
|
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
« |
Systemd has low level capability to schedule
programs to run without cron
daemon. For example,
/lib/systemd/system/apt-daily.timer
and
/lib/systemd/system/apt-daily.service
set up daily apt
download activities. See systemd.timer
(5) .
Pressing Alt-SysRq (PrtScr) followed by one keys does the magic of rescuing control of the system.
Tableau 9.12. List of notable SAK command keys
touche suivant Alt-Sys | description de l’action |
---|---|
k |
kill all processes on the current virtual console (SAK) |
s |
synchroniser tous les systèmes de fichiers montés afin d'éviter la corruption des données |
u |
remonter en lecture seule tous les systèmes de fichiers montés (umount) |
r |
restaurer le clavier depuis le mode raw (brut) après un plantage de X |
See more on Linux kernel user’s and administrator’s guide » Linux Magic System Request Key Hacks
Astuce | |
---|---|
Depuis un terminal SSH, etc., vous pouvez utiliser la fonctionnalité
Alt-SysRq en écrivant vers
« |
The current (2021) Debian amd64 Linux kernel has
/proc/sys/kernel/sysrq=438=0b110110110
:
2 = 0x2 - enable control of console logging level (ON)
4 = 0x4 - enable control of keyboard (SAK, unraw) (ON)
8 = 0x8 - enable debugging dumps of processes etc. (OFF)
16 = 0x10 - enable sync command (ON)
32 = 0x20 - enable remount read-only (ON)
64 = 0x40 - enable signaling of processes (term, kill, oom-kill) (OFF)
128 = 0x80 - allow reboot/poweroff (ON)
256 = 0x100 - allow nicing of all RT tasks (ON)
Vous pouvez rechercher qui se trouve sur le système par les commandes suivantes :
who
(1) shows who is logged on.
w
(1) shows who is logged on and what they are doing.
last
(1) shows listing of last logged in user.
lastb
(1) affiche une liste des utilisateurs s’étant mal
connectés.
Astuce | |
---|---|
« |
Vous pouvez envoyer un message à toutes les personnes connectées au système
avec wall
(1) en faisant ce qui suit :
$ echo "We are shutting down in 1 hour" | wall
Pour les périphériques similaires à PCI (AGP, PCI-Express,
CardBus, ExpressCard, etc.), lspci
(8)
(probablement avec l’option « -nn
») est un bon
point de départ pour l’identification du matériel.
Vous pouvez aussi identifier le matériel en lisant le contenu de
« /proc/bus/pci/devices
» ou en parcourant
l’arborescence de répertoires se trouvant sous
« /sys/bus/pci
» (consultez Section 1.2.12, « procfs et sysfs »).
Tableau 9.13. Listes des outils d’identification du matériel
paquet | popcon | taille | description |
---|---|---|---|
pciutils
|
V:225, I:990 | 210 | utilitaires PCI de Linux : lspci (8) |
usbutils
|
V:71, I:855 | 325 | utilitaires USB de Linux : lsusb (8) |
nvme-cli
|
V:8, I:15 | 1346 | NVMe utilities for Linux: nvme (1) |
pcmciautils
|
V:8, I:13 | 91 | utilitaires PCMCIA pour Linux : pccardctl (8) |
scsitools
|
V:0, I:3 | 375 | collection d’outils pour la gestion des périphériques SCSI :
lsscsi (8) |
procinfo
|
V:0, I:11 | 132 | informations sur le système obtenues dans
« /proc » : lsdev (8) |
lshw
|
V:14, I:96 | 919 | informations concernant la configuration matérielle :
lshw (1) |
discover
|
V:37, I:951 | 98 | système d’identification du matériel : discover (8) |
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 |
---|---|---|---|
console-setup
|
V:95, I:964 | 425 | Police de la console Linux et utilitaires de table de caractères |
x11-xserver-utils
|
V:285, I:506 | 576 | utilitaires pour le serveur X : xset (1),
xmodmap (1) |
acpid
|
V:110, I:205 | 154 | 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:12, I:190 | 47 | utilitaire d’affichage des informations des périphériques ACPI |
sleepd
|
V:0, I:0 | 86 | démon permettant de mettre un ordinateur portable en veille lorsqu’il est inactif |
hdparm
|
V:243, I:461 | 256 | optimisation de l’accès aux disques durs (consultez Section 9.6.9, « Optimisation du disque dur ») |
smartmontools
|
V:189, I:236 | 2199 | contrôle et surveillance des systèmes de stockage en utilisant S.M.A.R.T. |
setserial
|
V:4, I:7 | 103 | collection d’outils pour gérer les ports série |
memtest86+
|
V:1, I:24 | 12681 | collection d’outils pour gérer la mémoire physique |
scsitools
|
V:0, I:3 | 375 | collection d’outils pour gérer le matériel SCSI |
setcd
|
V:0, I:0 | 35 | optimisation de l’accès au lecteur de CD |
big-cursor
|
I:0 | 26 | 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 | |
---|---|
L’ajustement de la fréquence d’horloge des processeurs modernes est gérée
par des modules du noyaux tels que |
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 TUC(GMT).
If the hardware time is set to UTC, change the setting to
"UTC=yes
" in the "/etc/default/rcS
".
La commande suivante relance la configuration du fuseau horaire utilisé par le système Debian.
# dpkg-reconfigure tzdata
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
.
Astuce | |
---|---|
Sous systemd, utilisez plutôt
|
Consultez ce qui suit.
Le paquet ntp-doc
Astuce | |
---|---|
|
Il existe plusieurs composants pour configurer la console en mode caractères
et les fonctionnalités du système ncurses
(3).
Le fichier « /etc/terminfo/*/*
»
(terminfo
(5))
La variable d’environnement
« $TERM
»(term
(7))
setterm
(1), stty
(1),
tic
(1) et toe
(1)
Si l’entrée terminfo
pour xterm
ne
fonctionne pas avec un xterm
non Debian, changez le type
de terminal dans « $TERM
» de
« xterm
» pour une version limitée en
fonctionnalités comme « xterm-r6
» lorsque
vous-vous connectez à distance à un système Debian. Consultez
« /usr/share/doc/libncurses5/FAQ
» pour
davantage d’informations. « dumb
» est le plus
petit dénominateur commun pour « $TERM
».
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é.
Application softwares may be configured not only to access sound devices directly but also to access them via some standardized sound server system. Currently, PulseAudio, JACK, and PipeWire are used as sound server system. See Debian wiki page on Sound for the latest situation.
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.
Astuce | |
---|---|
Utilisez « |
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. |
Tableau 9.15. Liste des paquets son
Pour désactiver l’écran de veille, utilisez les commandes suivantes :
Tableau 9.16. Liste des commandes pour désactiver l’économiseur d’écran
environnement | commande |
---|---|
Console Linux | setterm -powersave off |
Système X Window (couper l’économiseur d’écran) | xset s off |
X Window (désactive dpms) | xset -dpms |
X Window (interface de configuration graphique d’économiseur d’écran) | xscreensaver-command -prefs |
On peut toujours débrancher le haut-parleur du PC pour désactiver les
bips. La suppression du module du noyau pcspkr
le fait
pour vous.
Ce qui suit évite que le programme readline
(3) utilisé
parbash
(1) ne bipe lors de l'apparition d'un caractère
d'alerte (ASCII=7).
$ echo "set bell-style none">> ~/.inputrc
Vous avez à votre disposition deux moyens d'obtenir l'état d'utilisation de la mémoire.
Le message de démarrage du noyau dans
« /var/log/dmesg
» donne exactement la taille
de la mémoire disponible.
free
(1) et top
(1) affichent des
informations concernant les ressources mémoire sur le système actif.
Voici un exemple.
# grep '\] Memory' /var/log/dmesg [ 0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init) $ free -k total used free shared buffers cached Mem: 997184 976928 20256 0 129592 171932 -/+ buffers/cache: 675404 321780 Swap: 4545576 4 4545572
Vous pourriez vous demander « dmesg me rapporte 990 Mo de mémoire libre et « free -k » me dit que 320 Mo sont libres. Il manque plus de 600 Mo… ».
Ne vous inquiétez pas de la taille importante de
« used
» et de la petite taille de
« free
» sur la ligne
« Mem:
», mais lisez ce qui se trouve sous
celle-ci (675404 et 321780 dans l’exemple ci-dessous) et détendez-vous.
Pour mon MacBook avec 1Go=1048576k DRAM (la mémoire vidéo en prend une partie), je peux voir ce qui suit :
Tableau 9.17. Taille mémoire affichée
affiché | taille |
---|---|
Taille totale dans dmesg | 1016784k = 1Go - 31792k |
Libre dans dmesg | 990528k |
Total sous l’interpréteur de commandes | 997184k |
Libre sous l’interpréteur de commandes | 20256k (mais réellement 321780k) |
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 :
Le paquet debsums
, consultez
debsums
(1) et Section 2.5.2, « Fichier « Release » de plus haut niveau et authenticité ».
Le paquet chkrootkit
, consultez
chkrootkit
(1).
La familles de paquets clamav
, consultez
clamscan
(1) et freshclam
(1).
Tableau 9.18. Liste d’outils pour la vérification de la sécurité et de l’intégrité du système
paquet | popcon | taille | description |
---|---|---|---|
logcheck
|
V:7, I:9 | 102 | démon pour poster à l’administrateur les anomalies des fichiers journaux du système |
debsums
|
V:5, I:41 | 108 | utilitaire pour vérifier les fichiers des paquets installés d’après leur somme de contrôle MD5 |
chkrootkit
|
V:4, I:20 | 922 | détecteur de rootkit. |
clamav
|
V:10, I:51 | 29115 | utilitaire anti-virus pour UNIX ‑ interface en ligne de commandes. |
tiger
|
V:2, I:2 | 7800 | signale les vulnérabilités du système pour la sécurité |
tripwire
|
V:2, I:3 | 11951 | vérificateur d’intégrité des fichiers et répertoires |
john
|
V:1, I:10 | 471 | outils de casse des mots de passe actifs |
aide
|
V:1, I:1 | 248 | Environnement avancé de détection d’intrusion (« Advanced Intrusion Detection Environment ») — bibliothèque statique |
integrit
|
V:0, I:0 | 324 | programme de vérification de l’intégrité des fichiers |
crack
|
V:0, I:1 | 152 | programme pour deviner les mots de passe |
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 | |
---|---|
Comme le paquet |
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.
You may need to umount
(8) some devices manually from the
command line before operating on them if they are automatically mounted by
the GUI desktop system.
L’utilisation de l’espace disque peut être estimée à l’aide de programmes
fournis par les paquets mount
,
coreutils
et xdu
:
mount
(8) indique tous les systèmes de fichiers (disques)
montés.
df
(1) indique l’espace disque occupé par les systèmes de
fichiers.
du
(1) indique l’espace disque occupé par une arborescence
de répertoires.
Astuce | |
---|---|
La sortie de |
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.
Older PCs use the classic Master Boot Record (MBR) scheme to hold disk partitioning data in the first sector, i.e., LBA sector 0 (512 bytes).
Recent PCs with Unified Extensible Firmware Interface (UEFI), including Intel-based Macs, use GUID Partition Table (GPT) scheme to hold disk partitioning data not in the first sector.
Alors que fdisk
(8) a été l’outil standard de
partitionnement de disque, parted
(8) le remplace
maintenant.
Tableau 9.19. Listes de paquets de gestion de la partition du disque
paquet | popcon | taille | description |
---|---|---|---|
util-linux
|
V:895, I:999 | 4974 | divers utilitaires systèmes dont fdisk (8)
etcfdisk (8) |
parted
|
V:385, I:545 | 122 | programme GNU de redimensionnement des partitions Parted |
gparted
|
V:15, I:111 | 2109 | éditeur de partitions de GNOME basé sur libparted |
gdisk
|
V:358, I:506 | 885 | partition editor for the GPT/MBR hybrid disk |
kpartx
|
V:22, I:35 | 74 | programme pour créer des mappages de périphériques pour les partitions |
Attention | |
---|---|
Bien que |
Note | |
---|---|
De manière à passer de GPT à MBR, il vous faut d’abord effacer les premiers blocs du
disque directement (consultez Section 9.8.6, « Effacer le contenu d’un fichier ») et
utiliser « |
Although reconfiguration of your partition or activation order of removable storage media may yield different names for partitions, you can access them consistently. This is also helpful if you have multiple disks and your BIOS/UEFI doesn't give them consistent device names.
mount
(8) avec l’option
« -U
» peut monter un périphérique en mode bloc
en utilisant l’UUID plutôt que son nom de
fichier de périphérique comme « /dev/sda3
».
« /etc/fstab
» (consultez
fstab
(5)) peut utiliser l’UUID.
Les chargeurs initiaux (Section 3.1.2, « Étage 2 : le chargeur initial ») peuvent aussi utiliser UUID.
Astuce | |
---|---|
Vous pouvez tester l’UUID d’un périphérique
spécial en mode bloc avec You can also probe it and other information with " |
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
debugfs
(8) pour un débogage interactif du système de
fichiers ext4. (Il possède la commande
undel
permettant de récupérer des fichiers effacés.)
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 lié symboliquement à mke2fs
(8)
ete2fsck
(8)).
Des commandes semblables sont disponibles pour chaque système de fichiers pris en charge par Linux.
Tableau 9.20. Liste des paquets de gestion des systèmes de fichiers
paquet | popcon | taille | description |
---|---|---|---|
e2fsprogs
|
V:703, I:999 | 1480 | utilitaires pour les systèmes de fichiers ext2/ext3/ext4 |
btrfs-progs
|
V:43, I:72 | 4281 | utilitaire pour le système de fichiers Btrfs |
reiserfsprogs
|
V:11, I:27 | 1132 | utilitaire pour le système de fichiers Reiserfs |
zfsutils-linux
|
V:27, I:29 | 1610 | utilities for the OpenZFS filesystem |
dosfstools
|
V:149, I:504 | 315 | utilitaire pour le système de fichiers FAT (Microsoft :MS-DOS, Windows) |
exfatprogs
|
V:12, I:214 | 281 | utilities for the exFAT filesystem maintained by Samsung. |
exfat-fuse
|
V:10, I:233 | 75 | read/write exFAT filesystem (Microsoft) driver for FUSE. |
exfat-utils
|
V:9, I:228 | 231 | utilities for the exFAT filesystem maintained by the exfat-fuse author. |
xfsprogs
|
V:23, I:100 | 3444 | utilitaire pour le système de fichiers XFS (SGI : IRIX) |
ntfs-3g
|
V:151, I:488 | 1469 | read/write NTFS filesystem (Microsoft: Windows NT, …) driver for FUSE. |
jfsutils
|
V:0, I:10 | 1577 | utilitaire pour le système de fichiers JFS (IBM : AIX, OS/2) |
reiser4progs
|
V:0, I:3 | 1367 | utilitaire pour le système de fichiers Reiser4 |
hfsprogs
|
V:0, I:6 | 394 | utilitaire pour les systèmes de fichiers HFS et HFS Plus (Apple : Mac OS) |
zerofree
|
V:4, I:128 | 25 | programme pour mettre à zéro les blocs libres des systèmes de fichiers ext2, ext3 et ext4 |
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. Btrfs status can be found at Debian wiki on btrfs and kernel.org wiki on btrfs. It is expected to be the next default filesystem after the ext4 filesystem. Certains outils permettent l’accès au système de fichiers sans prise en charge par le noyau Linux (consultez Section 9.8.2, « Manipulation des fichiers sans monter le disque »). |
La commande mkfs
(8) permet de créer un système de
fichiers sur un système Linux. La commande fsck
(8) permet
de vérifier l’intégrité du système de fichiers et de le réparer sur un
système Linux.
Maintenant, par défaut, Debian n'utilise pas fsck
après
la création d'un système de fichier.
Attention | |
---|---|
En général, il n’est pas sûr de faire tourner |
Astuce | |
---|---|
Vous pouvez exécuter la commande Vous trouverez les résultats de la commande |
La configuration statique de base du système de fichiers est donnée par
« /etc/fstab
». Par exemple,
«file system» «mount point» «type» «options» «dump» «pass» proc /proc proc defaults 0 0 UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 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 | |
---|---|
Un UUID (consultez Section 9.6.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 « |
Since Linux 2.6.30, the kernel defaults to the behavior provided by
"relatime
" option.
See fstab
(5) and mount
(8).
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).
L’exécution de « sudo tune2fs -l /dev/hda1
»
affiche le contenu du superbloc du système de fichiers situé sur
« /dev/hda1
».
L’exécution de « sudo tune2fs -c 50 /dev/hda1
»
modifie la fréquence des vérifications du système de fichiers (exécution de
fsck
lors du démarrage) à 50 démarrages sur
« /dev/hda1
».
L’exécution de la commande « sudo tune2fs -j
/dev/hda1
» ajoute la possibilité de journalisation au
système de fichiers, c’est-à-dire la conversion de système de fichiers de
ext2 vers ext3 sur
« /dev/hda1
» (effectuez cela sur un système de
fichiers non monté).
L’exécution de « sudo tune2fs -O extents,uninit_bg,dir_index
/dev/hda1 && fsck -pf /dev/hda1
» le convertit de
ext3 vers ext4 sur
« /dev/hda1
». (À effectuer sur un système de
fichiers non monté).
Avertissement | |
---|---|
Veuillez vérifier votre matériel et lire la page de manuel
|
Vous pouvez tester la vitesse de lecture d’un disque dur, par exemple
« /dev/hda
» par « hdparm -tT
/dev/hda
». Vous pouvez accélérer certains disques (E)IDE
avec « hdparm -q -c3 -d1 -u1 -m16 /dev/hda
» en
activant la prise en charge des E/S 32 bits (« (E)IDE 32-bit I/O
support »), en positionnant l’indicateur d’utilisation de dma
« using_dma flag », en positionnant l’indicateur de démasquage des
interruptions (« interrupt-unmask flag ») et en positionnant les
E/S multiples sur 15 secteurs (« multiple 16 sector I/O »)
(dangereux !).
Vous pouvez tester la fonctionnalité de cache d’un disque dur, par exemple
« /dev/sda
» par « hdparm -W
/dev/sda
». Vous pouvez désactiver le cache en écriture avec
« hdparm -W 0 /dev/sda
».
Vous pouvez réussir à lire un CD-ROM vraiment mal pressé sur un lecteur de
CD-ROM moderne rapide en le ralentissant avec « setcd -x
2
».
Solid state drive (SSD) is auto detected now.
Reduce unnecessary disk accesses to prevent disk wear out by mounting
"tmpfs
" on volatile data path in
/etc/fstab
.
Vous pouvez surveiller et enregistrer les disques durs conformes à SMART à l’aide du démon smartd
(8).
Installez le paquet smartmontools
.
Identifiez vos disques durs en en affichant la liste avec
df
(1).
Supposons que le disque dur à surveiller soit
« /dev/hda
».
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
».
Autorisez le fonctionnement du démon smartd
(8) par
l’action suivante :
décommentez « start_smartd=yes
» dans le
fichier « /etc/default/smartmontools
» ;
restart the smartd
(8) daemon by "sudo systemctl
restart smartmontools
".
Astuce | |
---|---|
Le démon |
Les applications créent normalement des fichiers temporaires dans le
répertoire de stockage temporaire « /tmp
». Si
« /tmp
» ne fournit pas assez d’espace, vous pouvez
indiquer un autre répertoire de stockage temporaire à l’aide de la variable
$TMPDIR
pour les programmes qui l’intègrent.
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 une partition vide (par exemple
« /dev/sdx
»), vous pouvez la formater avec
mkfs.ext4
(1) et la monter
(« mount
(8) ») sur un répertoire où vous avez
besoin de davantage d’espace (vous devrez copier les données d’origine).
$ sudo mv work-dir old-dir $ sudo mkfs.ext4 /dev/sdx $ sudo mount -t ext4 /dev/sdx work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
Astuce | |
---|---|
Vous pouvez aussi monter un fichier image de disque vide (consultez Section 9.7.5, « Réaliser le fichier image d’un disque vide ») en tant que périphérique de rebouclage (consultez Section 9.7.3, « Monter le fichier image du disque »). L’utilisation réelle du disque croît avec les données réellement enregistrées. |
Si vous avez un répertoire vide (par exemple,
« /chemin/vers/répertoire-temporaire
») sur une
autre partition avec de l’espace disponible, vous pouvez le remonter avec
l’option « --bind
» vers un répertoire (par exemple
« répertoire-travail
») où vous avez besoin de place.
$ sudo mount --bind /path/to/emp-dir work-dir
If you have usable space in another partition (e.g.,
"/path/to/empty
" and "/path/to/work
"),
you can create a directory in it and stack that on to an old directory
(e.g., "/path/to/old
") where you need space using the
OverlayFS for Linux kernel 3.18 or newer
(Debian Stretch 9.0 or newer).
$ sudo mount -t overlay overlay \ -olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work
Here, "/path/to/empty
" and
"/path/to/work
" should be on the RW-enabled partition to
write on "/path/to/old
".
Attention | |
---|---|
This is a deprecated method. Some software may not function well with "symlink to a directory". Instead, use the "mounting" approaches described in the above. |
Si vous avez un répertoire vide (par exemple,
« /chemin/vers/répertoire-temporaire
») sur une
autre partition avec de l’espace disponible, vous pouvez créer un lien
symbolique vers ce répertoire avec ln
(8).
$ sudo mv work-dir old-dir $ sudo mkdir -p /path/to/emp-dir $ sudo ln -sf /path/to/emp-dir work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
Avertissement | |
---|---|
N’utilisez pas de « liens symboliques vers un répertoire » pour un
répertoire géré par le système comme par exemple
« |
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 ou Serial
ATA « /dev/sdb
» peut être créé en utilisant
cp
(1) ou dd
(1) comme suit :
# cp /dev/sdb disk.img # dd if=/dev/sdb of=disk.img
L’image disque du master boot record
(MBR) (secteur principal d’amorçage) (consultez Section 9.6.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
« mbr-part.img
» : table de partition du
MBR seul
Si vous avez un périphérique SCSI ou 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.
Le fichier image du disque « disk.img
» peut
être écrit vers un disque non monté, par exemple le second disque SCSI
« /dev/sdb
» avec la taille correspondante par
ce qui suit :
# dd if=disk.img of=/dev/sdb
De la même manière, le fichier image de la partition du disque,
« partition.img
» peut être écrit sur une
partition non montée, par exemple, la première partition du second disque
SCSI « /dev/sdb1
» avec la taille
correspondante comme suit :
# dd if=partition.img of=/dev/sdb1
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 | |
---|---|
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. |
Un fichier image disque « disk.img
» peut être
nettoyé de tous les fichiers supprimés pour donner une image propre
« new.img
» de la manière suivante :
# mkdir old; mkdir new # mount -t auto -o loop disk.img old # dd bs=1 count=0 if=/dev/zero of=new.img seek=5G # mount -t auto -o loop new.img new # cd old # cp -a --sparse=always ./ ../new/ # cd .. # umount new.img # umount disk.img
Si « disk.img
» est un système de fichiers
ext2, ext3 ou ext4, vous pouvez aussi utiliser
zerofree
(8) du paquet zerofree
de la
manière suivante :
# losetup -f -v disk.img Loop device is /dev/loop3 # zerofree /dev/loop3 # cp --sparse=always disk.img new.img
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
Instead of using dd
(1), specialized
fallocate
(8) may be used here.
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 | |
---|---|
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.7.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 source_directory
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 source_directory
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 | |
---|---|
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. |
Astuce | |
---|---|
Un DVD n’est qu’un gros CD pour |
Vous pouvez rechercher un périphérique utilisable comme suit :
# wodim --devices
Le CD-R vierge est alors inséré dans le graveur de CD et le fichier image
ISO9660 « cd.iso
» est écrit vers le
périphérique, par exemple; « /dev/hda
» en
utilisant wodim
(1) de la manière suivante :
# wodim -v -eject dev=/dev/hda cd.iso
Si un CD-RW est utilisé à la place d’un CD-R, faites alors ce qui suit :
# wodim -v -eject blank=fast dev=/dev/hda cd.iso
Astuce | |
---|---|
Si votre système de bureau monte automatiquement le CD, démontez-le par la
commande « |
Si « cd.iso
» contient une image ISO9660, ce
qui suit permet alors de le monter manuellement sur
« /cdrom
» :
# mount -t iso9660 -o ro,loop cd.iso /cdrom
Astuce | |
---|---|
Les systèmes de bureau modernes peuvent monter automatiquement les supports amovibles tels que les CD formatés en ISO9960 (consultez Section 10.1.7, « Périphériques d’enregistrement amovibles »). |
Nous allons ici discuter de la manipulation directe des données binaires sur le support d’enregistrement.
La méthode la plus basique pour visualiser des données binaires est
d’utiliser la commande « od -t x1
».
Tableau 9.21. Liste des paquets permettant de visualiser et d’éditer des données binaires
paquet | popcon | taille | description |
---|---|---|---|
coreutils
|
V:908, I:999 | 18062 | paquet de base utilisant od (1) pour vider des fichiers
(HEX, ASCII, OCTAL, …) |
bsdmainutils
|
V:19, I:500 | 27 | paquets utilitaires qui utilisent hd (1) pour vider les
fichiers (HEX, ASCII, OCTAL, …) |
hexedit
|
V:1, I:10 | 73 | éditeurs et visualisateurs binaires (HEX, ASCII) |
bless
|
V:0, I:3 | 924 | éditeur hexadécimal complet (GNOME) |
okteta
|
V:1, I:12 | 1580 | éditeur hexadécimal complet (KDE4) |
ncurses-hexedit
|
V:0, I:1 | 132 | éditeur et visualisateur binaire (HEX, ASCII, EBCDIC) |
beav
|
V:0, I:0 | 137 | éditeur et visualisateur binaire (HEX, ASCII, EBCDIC, OCTAL, …) |
Astuce | |
---|---|
HEX est utilisé comme l'acronyme du format hexadécimal en base 16. OCTAL désigne le format octal en base 8. ASCII est employé pour Code américain standard pour l’échange d’informations (« American Standard Code for Information Interchange ») c’est-à-dire le code pour texte normal en anglais. EBCDIC signifie Code d’échange étendu décimal codé binaire (« Extended Binary Coded Decimal Interchange Code »), il est utilisé avec par les systèmes d’exploitation des mainframe IBM. |
Il existe des outils permettant de lire et d’écrire des fichiers sans avoir à monter le disque.
Les systèmes s’appuyant sur le RAID logiciel offert par le noyau Linux permettent une redondance des données au niveau du système de fichiers du noyau afin d’obtenir un haut niveau de fiabilité du système de stockage.
Il existe aussi des outils pour ajouter des données de redondance aux fichiers au niveau du programme applicatif permettant d’obtenir de hauts niveaux de fiabilité de stockage.
Tableau 9.23. Liste d’outils pour ajouter des données de redondance aux fichiers
paquet | popcon | taille | description |
---|---|---|---|
par2
|
V:8, I:67 | 268 | Parity Archive Volume Set, pour vérifier et réparer des fichiers |
dvdisaster
|
V:0, I:1 | 1742 | protection des supports CD et DVD contre les pertes de données, les rayures et le vieillissement |
dvbackup
|
V:0, I:0 | 413 | outil de sauvegarde utilisant des caméscopes MiniDV (fournissant
rsbep (1)) |
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:2, I:32 | 1413 | utilitaires pour l’examen de partitions et la récupération de disque |
magicrescue
|
V:0, I:2 | 255 | utilitaire pour la récupération de fichiers et de recherche des octets magiques |
scalpel
|
V:0, I:3 | 88 | récupérateur de fichiers sobre de haute performance |
myrescue
|
V:0, I:3 | 83 | récupérer des données depuis des disques endommagés |
extundelete
|
V:0, I:9 | 147 | utilitaire pour récupérer des fichiers effacés d’un système de fichiers ext3/4 |
ext4magic
|
V:0, I:4 | 233 | utilitaire pour récupérer des fichiers effacés d’un système de fichiers ext3/4 |
ext3grep
|
V:0, I:2 | 293 | outil pour aider à la récupération de fichiers effacés sur un système de fichiers ext3 |
scrounge-ntfs
|
V:0, I:2 | 50 | programme de récupération de données pour les systèmes de fichiers NTFS |
gzrt
|
V:0, I:0 | 33 | boîte à outils de récupération gzip |
sleuthkit
|
V:2, I:25 | 1607 | outil pour autopsie (« forensics analysis« ». (Sleuthkit) |
autopsy
|
V:0, I:1 | 1027 | interface graphique à SleuthKit |
foremost
|
V:0, I:5 | 102 | application d’autopsie pour la récupération de données |
guymager
|
V:0, I:1 | 1021 | outil de création d’image d’autopsie basée sur Qt |
dcfldd
|
V:0, I:4 | 113 | version améliorée de dd pour les autopsies et la sécurité |
Astuce | |
---|---|
Vous pouvez annuler l'effacement de fichiers sur un système de fichiers ext2
en utilisant les commandes |
Lorsque les données ont un volume trop important pour pouvoir être sauvegardée dans un seul fichier, vous pouvez en sauvegarder le contenu après l’avoir éclaté en morceaux de, par exemple, 2000Mio et réassembler ces morceaux par la suite sous la forme du fichier d’origine.
$ split -b 2000m large_file $ cat x* >large_file
Attention | |
---|---|
Assurez-vous ne pas pas avoir de nom de fichier commençant par
« |
Pour effacer le contenu d’un fichier comme, par exemple, un fichier journal,
n’utilisez pas la commande rm
(1) pour supprimer le
fichier et recréer ensuite un fichier vide parce qu’on peut encore accéder
au fichier dans l’intervalle entre les commandes. Voici la manière sûre
d’effacer le contenu d’un fichier :
$ :>file_to_be_cleared
Les commandes suivantes créent des fichiers factices ou vides.
$ dd if=/dev/zero of=5kb.file bs=1k count=5 $ dd if=/dev/urandom of=7mb.file bs=1M count=7 $ touch zero.file $ : > alwayszero.file
Vous obtiendrez les fichiers suivants :
« 5kb.file
» avec 5K de zéros ;
« 7mb.file
» avec 7Mo de données
aléatoires ;
« zero.file
» devrait être un fichier de 0
octet. S’il existait, son mtime
est mis à jour alors que
son contenu et sa taille sont conservés ;
« alwayszero.file
fait toujours 0 octet. S’il
existait son mtime
est mis à jour et son contenu vidé.
Il existe plusieurs manières d’effacer complètement les données d’un
périphérique semblable à un disque dur, par exemple, une clé USB se trouvant
en « /dev/sda
».
Attention | |
---|---|
Vérifiez d’abord l’emplacement de votre clé USB avec
|
Effacer tout le contenu du disque en réinitialisant toutes les données à 0 avec la commande suivante :
# dd if=/dev/zero of=/dev/sda
Tout effacer en écrasant les données existantes par des données aléatoires par la commande suivante :
# dd if=/dev/urandom of=/dev/sda
Effacer de manière très efficace toutes les données en les écrasant avec des données aléatoires par la commande suivante :
# shred -v -n 1 /dev/sda
You may alternatively use badblocks
(8) with -t
random
option.
Comme dd
(1) est disponible depuis l’interpréteur de
commandes de nombreux CD amorçables de Linux tels que le CD de
l’installateur Debian, vous pouvez effacer complètement votre système
installé en lançant la commande d’effacement du disque dur du système, par
exemple, « /dev/hda
»,
« /dev/sda
», etc. depuis un tel support,
Une zone inutilisée du disque dur (ou d’une clé mémoire USB), par
ex. « /devsdb1
» peut encore contenir les
données effacées elles-mêmes puisqu’elles ne sont que déliées du système de
fichiers. Elles peuvent être nettoyées en les surchargeant.
# mount -t auto /dev/sdb1 /mnt/foo # cd /mnt/foo # dd if=/dev/zero of=junk dd: writing to `junk': No space left on device ... # sync # umount /dev/sdb1
Avertissement | |
---|---|
C’est en général suffisamment bon pour votre clé mémoire USB. Mais ce n’est pas parfait. La plupart des noms des fichiers effacés et leurs attributs peuvent être cachés et rester dans le système de fichiers. |
Même si vous avez accidentellement supprimé un fichier, tant que ce fichier est en cours d’utilisation par une application quelconque, (en mode lecture ou écriture); il est possible de récupérer un tel fichier.
Essayez, par exemple, ce qui suit :
$ echo foo > bar $ less bar $ ps aux | grep ' less[ ]' bozo 4775 0.0 0.0 92200 884 pts/8 S+ 00:18 0:00 less bar $ rm bar $ ls -l /proc/4775/fd | grep bar lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> /home/bozo/bar (deleted) $ cat /proc/4775/fd/4 >bar $ ls -l -rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar $ cat bar foo
Exécutez sur un autre terminal (lorsque vous avez le paquet
lsof
installé) comme suit
$ ls -li bar 2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 bar $ lsof |grep bar|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar $ rm bar $ lsof |grep bar|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar (deleted) $ cat /proc/4775/fd/4 >bar $ ls -li bar 2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 bar $ cat bar foo
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 bar 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 baz 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 foo
« 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 /path/to/mount/point -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.6.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 facilitates automatic data encryption via native Linux kernel modules with minimal user efforts using device-mapper.
Tableau 9.25. Liste d’utilitaires de chiffrement des données
paquet | popcon | taille | description |
---|---|---|---|
cryptsetup
|
V:30, I:77 | 406 | utilitaires pour chiffrer un périphérique en mode bloc (dm-crypt / LUKS) |
cryptmount
|
V:3, I:4 | 231 | utilitaires pour chiffrer un périphérique en mode bloc (dm-crypt / LUKS), l’accent étant mis sur le montage et le démontage par un utilisateur normal |
fscrypt
|
V:0, I:1 | 4447 | utilities for Linux filesystem encryption (fscrypt) |
libpam-fscrypt
|
V:0, I:0 | 3981 | PAM module for Linux filesystem encryption (fscrypt) |
Attention | |
---|---|
Data encryption costs CPU time etc. Encrypted data becomes inaccessible if its password is lost. Please weigh its benefits and costs. |
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 | |
---|---|
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 :
# fdisk /dev/sdx ... "n" "p" "1" "return" "return" "w" # cryptsetup luksFormat /dev/sdx1 ... # cryptsetup open /dev/sdx1 secret ... # ls -l /dev/mapper/ total 0 crw-rw---- 1 root root 10, 60 2021-10-04 18:44 control lrwxrwxrwx 1 root root 7 2021-10-04 23:55 secret -> ../dm-0 # mkfs.vfat /dev/mapper/secret ... # cryptsetup close secret
Then, it can be mounted just like normal one on to
"/media/username/disk_label
", except
for asking password (see Section 10.1.7, « Périphériques d’enregistrement amovibles ») under
modern desktop environment using the udisks2
package.
The difference is that every data written to it is encrypted. The password
entry may be automated using keyring (see Section 10.3.6, « Password keyring »).
You may alternatively format media in different filesystem, e.g., ext4 with
"mkfs.ext4 /dev/mapper/sdx1
". If btrfs is used instead,
the udisks2-btrfs
package needs to be installed. For
these filesystems, the file ownership and permissions may need to be
configured.
For example, an encrypted disk partition created with dm-crypt/LUKS on
"/dev/sdc5
" by Debian Installer can be mounted onto
"/mnt
" as follows:
$ sudo cryptsetup open /dev/sdc5 ninja --type luks Enter passphrase for /dev/sdc5: **** $ sudo lvm lvm> lvscan inactive '/dev/ninja-vg/root' [13.52 GiB] inherit inactive '/dev/ninja-vg/swap_1' [640.00 MiB] inherit ACTIVE '/dev/goofy/root' [180.00 GiB] inherit ACTIVE '/dev/goofy/swap' [9.70 GiB] inherit lvm> lvchange -a y /dev/ninja-vg/root lvm> exit Exiting. $ sudo mount /dev/ninja-vg/root /mnt
Debian distribue des noyaux Linux modulaires sous forme de paquets pour les architectures prises en compte.
If you are reading this documentation, you probably don't need to compile Linux kernel by yourself.
De nombreuses fonctionnalités du noyau peuvent être configurées par l’intermédiaire de paramètres du noyau de la manière suivante :
Paramètres du noyau initialisés par le gestionnaire d’amorçage (consultez Section 3.1.2, « Étage 2 : le chargeur initial »)
Paramètres du noyau modifiés par sysctl
(8) lors du
fonctionnement du système pour ceux auxquels on a accès par l’intermédiaire
de sysfs (consultez Section 1.2.12, « procfs et sysfs »)
Paramètres des modules définis par les paramètres de
modprobe
(8) lors de l’activation d’un module (consultez
Section 9.7.3, « Monter le fichier image du disque »)
See "The Linux kernel user’s and administrator’s guide » The kernel’s command-line parameters" for the detail.
La plupart des programmes normaux n’ont
pas besoin des en-têtes du noyau et peuvent de fait être cassés si vous les
utilisez directement pour la compilation. Ils devront être compilés avec les
en-têtes se trouvant dans
« /usr/include/linux
» et
« /usr/include/asm
» qui sont fournis, sur les
systèmes Debian, par le paquet libc6-dev
(créé à partir
du paquet source glibc
).
Note | |
---|---|
For compiling some kernel-specific programs such as the kernel modules from
the external source and the automounter daemon ( |
Debian a sa propre manière de compiler le noyau et les modules associés.
Tableau 9.26. Liste des paquets-clés à installer pour la compilation du noyau sur un système Debian
paquet | popcon | taille | description |
---|---|---|---|
build-essential
|
I:485 | 20 | paquets essentiels pour la construction de paquets Debian :
make , gcc , … |
bzip2
|
V:161, I:970 | 121 | utilitaires de compression et de décompression des fichiers bz2 |
libncurses5-dev
|
I:93 | 6 | bibliothèques de développement et documentations pour ncurses |
git
|
V:305, I:517 | 44453 | git :: système distribué de contrôle de version utilisé par le noyau de Linux |
fakeroot
|
V:30, I:497 | 208 | fournit l’environnement fakeroot pour construire le paquet sans être administrateur (« root ») |
initramfs-tools
|
V:386, I:990 | 113 | outil pour construire une image mémoire initiale (« initramds ») (spécifique à Debian) |
dkms
|
V:67, I:181 | 183 | prise en charge dynamique des modules du noyau (dynamic kernel module support : DKMS) (générique) |
module-assistant
|
V:1, I:25 | 406 | helper tool to make module package (Debian specific) |
devscripts
|
V:7, I:46 | 2777 | scripts d’assistance pour un responsable de paquet Debian (spécifique à Debian) |
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 | |
---|---|
Ne mettez pas de liens symboliques vers le répertoire de l’arborescence des
source (par exemple « |
Note | |
---|---|
Lors de la compilation du dernier noyau de Linux sous un système Debian
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 est utilisé pour la maintenance de modules hors arborescence. Cela rend aussi très facile la reconstruction des modules après la mise à niveau des noyaux. |
Pour construire des paquets binaires d’un noyau personnalisé à partir des
sources du noyau amont, vous devriez utiliser la cible
« deb-pkg
» fournie pour cela.
$ sudo apt-get build-dep linux $ cd /usr/src $ wget http://www.kernel.org/pub/linux/kernel/v3.11/linux-version.tar.bz2 $ tar -xjvf linux-version.tar.bz2 $ cd linux-version $ cp /boot/config-version .config $ make menuconfig ... $ make deb-pkg
Astuce | |
---|---|
Le paquet linux-source-version fournit les sources du
noyau Linux avec les correctifs Debian en tant que
« |
Pour construire des paquets binaires particuliers à partir du paquet source
Debian, vous devriez utiliser les cibles
« binary-arch_architecture_jeu_de_fonctionnalités_saveur
»
dans « debian/rules.gen
».
$ sudo apt-get build-dep linux $ apt-get source linux $ cd linux-3.* $ fakeroot make -f debian/rules.gen binary-arch_i386_none_686
Consultez les renseignements complémentaires :
wiki Debian : KernelFAQ ;
wiki Debian : DebianKernel ;
Debian Linux Kernel Handbook: https://kernel-handbook.debian.net
The hardware driver is the code running on the main CPUs of the target
system. Most hardware drivers are available as free software now and are
included in the normal Debian kernel packages in the main
area.
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)
The firmware is the code or data loaded on the device attach to the target system (e.g., CPU microcode, rendering code running on GPU, or FPGA / CPLD data, …). Some firmware packages are available as free software but many firmware packages are not available as free software since they contain sourceless binary data. Installing these firmware data is essential for the device to function as expected.
The firmware data packages containing data loaded to the volatile memory on the target device.
firmware-linux-free (main
)
firmware-linux-nonfree (non-free-firmware
)
firmware-linux-* (non-free-firmware
)
*-firmware (non-free-firmware
)
intel-microcode (non-free-firmware
)
amd64-microcode (non-free-firmware
)
The firmware update program packages which update data on the non-volatile memory on the target device.
fwupd (main
): Firmware
update daemon which downloads firmware data from Linux Vendor Firmware Service.
gnome-firmware (main
): GTK front end for fwupd
plasma-discover-backend-fwupd (main
): Qt front end for
fwupd
Please note that access to non-free-firmware
packages are
provided by the official installation media to offer functional installation
experience to the user since Debian 12 Bookworm. The
non-free-firmware
area is described in Section 2.1.4, « Bases concernant l’archive Debian ».
Please also note that the firmware data downloaded by fwupd from Linux Vendor Firmware Service and
loaded to the running Linux kernel may be non-free
.
L’utilisation d’un système virtualisé permet de faire tourner simultanément plusieurs instances du système sur une plateforme unique.
Astuce | |
---|---|
Consultez http://wiki.debian.org/fr/SystemVirtualization . |
There are several virtualization and emulation tool platforms.
Complete hardware emulation packages such as ones installed by the games-emulator metapackage
Mostly CPU level emulation with some I/O device emulations such as QEMU
Mostly CPU level virtualization with some I/O device emulations such as Kernel-based Virtual Machine (KVM)
OS level container virtualization with the kernel level support such as LXC (Linux Containers), Docker, ...
OS level filesystem access virtualization with the system library call override on the file path such as chroot
OS level filesystem access virtualization with the system library call override on the file ownership such as fakeroot
OS API emulation such as Wine
Interpreter level virtualization with its executable selection and run-time library overrides such as virtualenv and venv for Python
The container virtualization uses Section 4.7.4, « Linux security features » and it is the backend technology of Section 7.6, « Sandbox ».
Here are some packages to help you to setup the virtualized system.
Tableau 9.27. Liste des outils de virtualisation
paquet | popcon | taille | description |
---|---|---|---|
schroot
|
V:6, I:8 | 2508 | outil spécialisé pour l’exécution d’un paquet binaire de Debian dans un chroot |
sbuild
|
V:1, I:4 | 242 | outil pour construire des paquets binaires de Debian depuis les sources Debian |
debootstrap
|
V:5, I:59 | 279 | amorcer un système Debian de base (écrit en sh) |
cdebootstrap
|
V:0, I:2 | 111 | amorcer un système Debian (écrit en C) |
virt-manager
|
V:11, I:42 | 2296 | Gestionnaire de machine virtuelle : application du gestionnaire de bureau pour la gestion des machines virtuelles |
libvirt-clients
|
V:43, I:62 | 1311 | programmes pour la bibliothèque libvirt |
games-emulator
|
I:0 | 26 | games-emulator: Debian's emulators for games |
bochs
|
V:0, I:1 | 6956 | Bochs : émulateur PC IA-32 |
qemu
|
I:25 | 97 | QEMU : émulateur de processeur générique rapide |
qemu-system
|
I:21 | 59 | QEMU : binaires pour l’émulation d’un système complet |
qemu-user
|
V:1, I:8 | 100502 | QEMU : binaires pour l’émulation en mode utilisateur |
qemu-utils
|
V:12, I:107 | 6875 | QEMU : utilitaires |
qemu-kvm
|
V:2, I:19 | 107 | KVM : virtualisation complète sur les plateformes x86 ayant une virtualisation assistée par le matériel |
virtualbox
|
V:9, I:11 | 126370 | VirtualBox : solution de virtualisation x86 sur i386 et amd64 |
xen-tools
|
V:0, I:3 | 727 | outils pour gérer le serveur virtuel XEN de Debian |
wine
|
V:13, I:64 | 134 | Wine : implémentation de l’API Windows (suite standard) |
dosbox
|
V:2, I:16 | 2671 | DOSBox : émulateur x86 avec graphisme Tandy/Herc/CGA/EGA/VGA/SVGA, son et DOS |
lxc
|
V:9, I:13 | 25643 | Conteneurs Linux outils de l’espace utilisateur |
python3-venv
|
I:60 | 6 | venv for creating virtual python environments (system library) |
python3-virtualenv
|
V:9, I:53 | 406 | virtualenv for creating isolated virtual python environments |
pipx
|
V:0, I:1 | 887 | pipx for installing python applications in isolated environments |
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 | |
---|---|
Les noyaux par défaut de Debian prennent en charge KVM depuis |
La virtualisation met en œuvre plusieurs étapes :
Créer un système de fichiers vide (une arborescence de fichiers ou une image disque).
L’arborescence de fichiers peut être créée par « mkdir -p
/path/to/chroot
».
L’image disque brute peut être créée à l’aide de dd
(1)
(consultez Section 9.7.1, « Créer le fichier image du disque » et Section 9.7.5, « Réaliser le fichier image d’un disque vide »).
qemu-img
(1) peut être utilisé pour créer et convertir des
fichiers d’image disque pris en charge par QEMU.
Les formats de fichier brut et VMDK peuvent être utilisés en tant que formats courants par les outils de virtualisation.
Monter l’image disque dans le système de fichiers avec
mount
(8) (optionnel).
Pour l’image disque brute, le montage doit être fait avec un périphérique de rebouclage ou des périphériques device mapper (consultez Section 9.7.3, « Monter le fichier image du disque »).
Les images disques prises en charge par QEMU seront montées en tant que périphériques réseau en mode bloc> (consultez Section 9.11.3, « Monter le fichier image du disque virtuel »).
Peupler le système de fichiers cible avec les données requises.
L’utilisation de programmes tels que debootstrap
et
cdebootstrap
facilite ce processus (consultez Section 9.11.4, « Système protégé (chroot) »).
Utiliser les installateurs des systèmes d’exploitation sous l’émulation du système complet.
Lancer un programme dans l’environnement virtualisé.
chroot fournit un environnement virtualisé de base, suffisant pour y compiler des programmes, y faire tourner des applications en mode console et des démons.
QEMU fournit une émulation de processeur interplateformes.
QEMU avec KVM fournit une émulation système complète avec la virtualisation assistée par le matériel.
VirtualBox fournit une émulation du système complet sur i386 amd64 avec ou sans la virtualisation assistée par le matériel.
Pour le fichier image disque brut, consultez Section 8.1, « 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.7.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 | |
---|---|
Vous ne pouvez exporter que la première partition de
« |
If you wish to try a new Debian environment from a terminal console, I
recommend you to use chroot. This enables you
to run console applications of Debian unstable
and
testing
without usual risks associated and without
rebooting. chroot
(8) is the most basic way.
Attention | |
---|---|
Examples below assumes both parent system and chroot system share the same
|
Although you can manually create a chroot
(8) environment
using debootstrap
(1). But this requires non-trivial
efforts.
The sbuild package to build Debian packages
from source uses the chroot environment managed by the schroot package. It comes with helper script
sbuild-createchroot
(1). Let's learn how it works by
running it as follows.
$ sudo mkdir -p /srv/chroot $ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian ...
You see how debootstrap
(8) populates system data for
unstable
environment under
"/srv/chroot/unstable-amd64-sbuild
" for a minimal build
system.
You can login to this environment using schroot
(1).
$ sudo schroot -v -c chroot:unstable-amd64-sbuild
You see how a system shell running under unstable
environment is created.
Note | |
---|---|
The " |
Note | |
---|---|
Some programs under chroot may require access to more files from the parent
system to function than |
Astuce | |
---|---|
The |
If you wish to try a new GUI Desktop environment of any OS, I recommend you
to use QEMU or KVM on
a Debian stable
system to run multiple desktop systems
safely using virtualization. These
enable you to run any desktop applications including ones of Debian
unstable
and testing
without usual
risks associated with them and without rebooting.
Since pure QEMU is very slow, it is recommended to accelerate it with KVM when the host system supports it.
Virtual Machine Manager also
known as virt-manager
is a convenient GUI tool for
managing KVM virtual machines via libvirt.
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 ...
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. |
See more tips at Debian wiki: SystemVirtualization.
[2] More elaborate customization examples: "Vim Galore", "sensible.vim", "#vim Recommendations" ...
[3] vim-pathogen was popular.