Linux Cours
Linux Cours
Linux Cours
Présentation
2
Nordine Sabban
Formateur consultant
Je mets au service des entreprises mon expérience au travers de missions d’accompagnement individuel
ou collectif, de conseil et formation dans les domaines :
nordine.sabban@gmail.com
07.77.83.89.51
Objectifs
3
Objectifs pédagogiques
Acquérir les connaissances de base pour une première prise en main d'un système Linux.
Installer et configurer un serveur Linux.
Créer un compte et son environnement.
Personnaliser votre environnement de travail.
Installer un logiciel à partir de ses sources, d'un package.
Table des matières
4
Programme de la formation
Richard Stallman fonde alors une association, la Free Software Foundation, et écrit le Manifeste
GNU, dans lequel il décrit les quatre libertés fondamentales que doit respecter un logiciel pour
être qualifié de logiciel libre :
La liberté d'exécution : tout le monde a le droit de lancer le programme, quel qu'en soit le
but ;
La liberté de modification : tout le monde a le droit d'étudier le programme et de le
modifier, ce qui implique un accès au code source ;
La liberté de redistribution : tout le monde a le droit de rediffuser le programme,
gratuitement ou non ;
La liberté d'amélioration : tout le monde a le droit de redistribuer une version modifiée du
programme.
Qu’est ce que Linux
11
La licence GPL
Pour donner un cadre juridique aux logiciels du projet GNU, il écrit une licence, la GNU
General Public License alias GPL. Cette licence reprend les quatre libertés fondamentales
citées précédemment et impose pour la liberté d'amélioration que les versions modifiées d'un
logiciel sous licence GPL ne peuvent être redistribuées que sous cette même licence. Richard
Stallman invite alors tous les logiciels libres à adopter la licence GPL.
Très tôt, Linus Torvalds adopte la licence GPL pour son noyau Linux. Aujourd'hui, de très
nombreux logiciels libres sont distribués sous Licence GPL (VLC media player par exemple).
Mais la licence GPL n'est pas la seule licence utilisée pour les logiciels libres. Par exemple, il
existe aussi la licence BSD (Berkeley software distribution license) .
La licence dite BSD a pour particularité d'être extrêmement légère et permissive, à tel point
qu'elle est souvent rapprochée à un abandon au domaine public.
Qu’est ce que Linux
12
Linux
Linux désigne au sens strict un noyau de système d’exploitation. Linux naît 1991 dans la
chambre d’un étudiant finlandais, Linus Torvalds. Il développe un noyau en s’inspirant des
principes d’Unix. Son but initial est de s’amuser et d’apprendre les instructions 386. Quand
son noyau commence à fonctionner, il le met en libre téléchargement en demandant au gens
de l’essayer et de lui dire ce qui ne marche pas chez eux.
Aujourd'hui, le succès de Linux s'explique par la qualité technique du noyau, par la présence
de nombreuses distributions Linux qui facilitent l'installation du système et des programmes,
mais s'explique surtout par son appartenance au monde du Libre qui lui apporte une grande
rapidité et qualité de développement. Le nombre d'utilisateurs de Linux est aujourd'hui estimé
à plusieurs millions !
Qu’est ce que Linux
13
Il y a pléthore de distributions Linux et chacune répond plus ou moins aux diverses exigences
des utilisateurs. La plupart des distributions sont personnalisées pour des groupes d’utilisateurs
spécifiques, comme des professionnels, des passionnés de multimédia, des développeurs de
logiciels ou encore des utilisateurs sans exigences particulières.
Qu’est ce que Linux
16
L’utilisation d’Unix
La philosophie des constructeurs de stations et serveurs Unix a été au départ de développer
un système d'exploitation pour pouvoir vendre leurs machines, en y ajoutant si possible un
petit « plus » pour se démarquer de la concurrence. C'était oublier que les parcs Unix sont le
plus souvent hétérogènes et que toute différence d'une machine à l'autre, même créée avec la
meilleure intention du monde, menace l'interopérabilité donc constitue un risque réel de
contre-productivité car contraignent les informaticiens à de nombreuses manipulations
fastidieuses afin d'interconnecter les systèmes.
L'inconvénient du mode de distribution d'Unix est la divergence des solutions proposées par
les différents fournisseurs. Ainsi, même s'ils exploitent des racines communes, les différentes
améliorations apportées par les distributeurs de systèmes Unix ont aboutis à des systèmes de
moins en moins compatibles.
Qu’est ce que Linux
18
http://linuxfr.org
https://aful.org
http://www.open-source-guide.com
http://lea-linux.org/
https://www.opensourcesummit.paris
https://www.smile.eu
https://www.april.org/
https://framasoft.org
Sommaire
20
Configuration de GRUB
Démarrage d’un système Linux
27
initrd est chargé en mémoire par le chargeur (Grub en pratique) en même temps que le
noyau. C'est une image compressée d'un système de fichier minimal contenant notamment les
modules essentiels au noyau. En particulier, les pilotes importants (comme ceux du disque, du
système de fichiers de la racine, du réseau, de l'écran).
Démarrage d’un système Linux
28
Installation de GRUB
Démarrage d’un système Linux
29
Récapitulatif
Démarrage d’un système Linux
31
er
Après le lancement du 1 processus
Démarrage d’un système Linux
33
Démarrage d’un système Linux
34
RunLevel
Une fois que le chargeur (loader) active le noyau.
er
Le noyau active à son tour le 1 programme : init de PID 1 « le père de tous les processus »,
charge le système de fichier de root et exécute un runlevel.
Le runlevel, ou niveau de fonctionnement, est un chiffre ou une lettre utilisé par le processus
« init » pour déterminer les fonctions activées.
Le runlevel varie généralement de 0 à 6. Chacun correspond à un ensemble d’application à
mettre en marche.
Le fichier /etc/inittab détermine le runlevel par défaut du système au démarrage, ainsi que
les fonctions actives à chaque runlevel via les scripts RC.
Les « Run Command » (RC) sont les scripts de démarrage des services exécutées dans les
runlevels.
Démarrage d’un système Linux
36
Définition de /etc/inittab
Un processus qui correspond au niveau de configuration choisi ne sera effectivement lancé
que s'il satisfait aussi la condition spécifiée au 3ème champ d'inittab.
Démarrage d’un système Linux
38
Définition de /etc/inittab
Démarrage d’un système Linux
39
Le processus Init va alors exécuter en fonction du niveau de démarrage un script situé sous
/etc/init.d/ :
Démarrage d’un système Linux
40
Systemd
systemd (pour « system daemon » : le démon du système) est un ensemble de programmes
destiné à la gestion système, conçu pour le noyau Linux. Il permet le chargement en parallèle
des services au démarrage, gère les services. Son but est de remplacer le démon init System
V, appelé aussi SysVinit.
systemd se manipule grâce à la commande systemctl.
Systemd :
Fournit des capacités poussées de parallélisation
Utilise les sockets et l'activation D-Bus pour démarrer les services
Offre un démarrage à la demande des daemons
Implémente une logique de contrôle transactionnelle des dépendances entre services
Piste les processus en utilisant les cgroups Linux
Supporte les snapshots et leurs restaurations
Maintient les points de montage (montage/démontage)
Démarrage d’un système Linux
43
Systemd crée et gère les sockets utilisés pour la communication entre les composants du
système. Par exemple, il crée d'abord le socket /dev/log puis démarre le démon syslog.
Cette approche présente l’avantage, que les processus communiquant avec syslog via
/dev/log peuvent être démarrés en parallèle.
Démarrage d’un système Linux
45
Les unités
La configuration de Systemd se base sur des unités (units) qui ont un nom et un type. Ainsi, le
fichier NetworkManager.service définira l'unité de type service qui s'occupe de la gestion
réseau ; de même, systemd-shutdownd.socket définira la socket pour l'arrêt.
La commande suivante vous listera les unités disponibles sur votre système : systemctl -t help
Démarrage d’un système Linux
46
Pour recharger les fichiers de configuration d'un service dans le redémarrer (typiquement, le
serveur web Apache) , faites :
systemctl reload application.service
Pour que le service soit lancé au démarrage du système :
systemctl enable application.service
Pour que le service ne soit pas lancé au démarrage du système :
systemctl disable application.service
Pour empêcher l'activation d'un service (par exemple on masquera httpd car on veut utiliser
nginx et donc éviter que l'admin système démarre httpd par inadvertance) :
systemctl mask application.service
Démarrage d’un système Linux
50
Pour avoir une meilleure idée des étapes par lesquelles un service doit passer avant d’être
lancé, on peut utiliser systemd-analyze critical-chain. L’outil systemd-analyze nous permet de
visualiser le chemin parcouru, en terme de dépendances, en gardant les étapes qui ont pris le
plus de temps :
Démarrage d’un système Linux
55
Pour comprendre pourquoi le service réseau prend du temps vous pouvez taper maintenant :
systemd-analyze critical-chain NetworkManager.service
Démarrage d’un système Linux
56
Regardons la liste des services lancés par systemd, triée par temps de démarrage à l’aide
de la commande systemd-analyze blame.
Démarrage d’un système Linux
58
L’environnement de travail
L’éditeur de texte vi
Lorsqu’on administre des serveurs dédiés ou qu’on effectue des tâches de maintenance sur un
système Linux, la plupart du temps l’interface graphique n’est pas disponible et on est obligé
de se débrouiller avec les lignes de commandes. Ce n’est pas plus mal, puisque la console sur
Linux est un outil très puissant.
Pour créer/éditer des fichiers en console, on est obligé d’utiliser des outils à l’apparence
simpliste et pas très « user friendly ».
vi fait partie de ces éditeurs qu’il faut absolument savoir maîtriser, car il est installé par
défaut sur les systèmes Linux.
L’environnement de travail
62
L’environnement de travail
63
L’environnement de travail
64
L’environnement de travail
65
L’environnement de travail
66
L’environnement de travail
67
Fichier de configuration
Pour modifier le comportement de vi, il faut agir sur son fichier de configuration (chaque
utilisateur peut avoir le sien).
Le fichier vimrc global peut se trouver dans /usr/share/vim/vimrc.
L’environnement de travail
68
Au bas de cette fenêtre, vous verrez certains des raccourcis utilisables avec l’éditeur nano. Le
symbole ^ signifie que vous devez appuyer sur CTRL + [Touche] (ou CMD + [Touche] pour les
utilisateurs Mac) pour lancer la commande choisie :
L’environnement de travail
70
L’environnement de travail
71
L’environnement de travail
72
L’environnement de travail
73
La ligne de commande
La ligne de commande est un moyen simple d'interagir avec un ordinateur.
Le shell interprète les commandes tapées au clavier.
Le prompt, ou l'invite de commande, qui se termine par un $ pour un utilisateur standard ou un
# pour l'administrateur du système (désigné root), indique que le shell attend les commandes
de l'utilisateur.
Le shell est également un langage de programmation que l'on peut utiliser pour lancer des
tâches automatiquement.
Les programmes shell sont appelés par des scripts.
L’environnement de travail
74
C'est le programme qui se charge de lire et d'exécuter les commandes que l'utilisateur saisit.
Classiquement, le shell est utilisé de manière interactive, c'est-à-dire que l'utilisateur dialogue
avec le système par l'intermédiaire du shell. Il saisit les commandes, et le shell les exécute et
affiche les résultats. Le shell le plus couramment utilisé sous Linux est sans aucun doute Bash.
Chaque utilisateur possède un shell par défaut, qui sera lancé à l'ouverture d'une invite de
commande. Le shell par défaut est précisé dans le fichier de configuration /etc/passwd dans
le dernier champ de la ligne correspondant à l'utilisateur. Il est possible de changer de shell
dans une session en exécutant tout simplement le fichier exécutable correspondant.
Le shell n'est pas seulement le prompt vous permettant de taper vos commandes, c'est aussi un
puissant langage de commande, vous permettant d'automatiser des tâches, etc. via l'écriture
de scripts shell.
L’environnement de travail
76
Le Bourne-Shell /bin/sh : c’est le premier shell écrit pour Unix par S. R. Bourne, d’où son
nom ! C’est le shell de base d’Unix.
Le C Shell /bin/csh : le C-shell est issu de l’université de Berkeley. Une partie de sa syntaxe
étant influencée par le langage C, à qui il doit son nom, certaines fonctionnalités ont été
ajoutées au Bourne-shell. Il est le précurseur des nouveautés qui ont été ensuite intégrées au
Korn Shell.
Le Korn Shell /bin/ksh : le Korn-shell est un interpréteur de commandes disponible en
standard à partir d’UNIX System V.4. Il est doté d’un langage de programmation.
Le Bash /bin/bash : le « Bourne-Again Shell » est la version GNU du Bourne-shell. Il
incorpore de nombreuses fonctionnalités présentes dans d’autres shells, comme le Korn ou le
C-shell. C’est le shell par défaut de GNU/Linux.
L’environnement de travail
78
Le programme chsh s'appuie sur le fichier /etc/shells pour fournir la liste des interpréteurs à
utiliser.
L’environnement de travail
80
Considérons par exemple le schéma du dessus avec quelques rajouts logiques. Si l’on
souhaite faire référence au fichier de chemin absolu /home/marc/Musique/son.ogg alors
que l’on se situe dans le répertoire /home/marc/Images/, on fera appel au chemin relatif
suivant: ../Musique/son.ogg.
L’environnement de travail
85
Mais … où suis-je ?
Pour connaître à tout moment le chemin absolu du répertoire où l’on se situe, il suffit de saisir
la commande pwd (print working directory).
À savoir que par défaut, le terminal que vous utilisez s’ouvre toujours sur votre répertoire
personnel à son lancement.
Pour se déplacer d’un répertoire à un autre on utilise la commande cd (change directory)
suivie du nom (ou du chemin) du répertoire de destination : cd /home/toto/
Pour vous rendre dans votre répertoire personnel, quel que soit l’endroit où vous vous situez,
vous pouvez saisir simplement : cd ~
Le symbole ~ remplace en effet le chemin absolu vers votre répertoire personnel. Mais on
pourra saisir simplement : cd
Et pour revenir au répertoire précédent, on utilise le tiret, comme ceci : cd – ou cd ..
L’environnement de travail
86
Si seul le début ou la fin d’un fichier vous intéresse, vous pouvez utiliser les commandes
suivantes : head /var/log/messages, (affiche les 10 premières lignes du fichier
/var/log/messages ).
tail /var/log/messages, (affiche les 10 dernières lignes du fichier /var/log/messages).
Dans les deux cas, on peut utiliser l’option -n pour définir un nombre de ligne différent de 10
: tail -n 30 /var/log/messages
Très utile également, l’option -f (follow) qui permet de passer en mode « attente » : tail -f
/var/log/messages
La commande file permet de lire le début d’un fichier pour en déterminer le type de contenu
; elle nécessite bien entendu d’avoir le droit de lecture sur le fichier concerné. file
un_document
L’environnement de travail
91
Pour la comparaison de fichiers, on retiendra les commandes cmp, et diff. La commande cmp
permet de comparer le contenu de deux fichiers en précisant la position de la première
différence relevée :
cmp fichier.txt fichier2.txt
Comme vous vous en doutez, si la commande ne retourne rien, c’est que les deux fichiers sont
rigoureusement identiques.
La commande diff, de son coté, permet de comparer le contenu de deux fichiers ou
répertoires et dresse la liste de toutes les différences relevées. diff fichier1.txt fichier2.txt
Afficher le contenu d'un répertoire : ls -l /home/user
Attention ! Linux est sensible à la casse. Si la commande est en minuscules,
tapez-là en minuscules. Respectez les majuscules et les minuscules dans les
noms de fichiers et de répertoires.
L’environnement de travail
92
Substitution de commande
Les caractères de substitution permettent de remplacer une commande par le résultat de son
exécution.
Par exemple, comment faire pour afficher un message affichant la date du jour.
Les redirections
La redirection est un élément important dans l'utilisation du shell ou dans l'écriture de scripts
sous Linux. Le principe est simple : je redirige le résultat d'une commande ailleurs que là où
elle devrait aller normalement. Si on peut rediriger une sortie il est aussi possible de rediriger
une entrée.
Si par exemple, vous voulez afficher les fichiers et répertoires vous saisissez la commande
« ls ». Le résultat s'affiche à l'écran ce qui est le comportement normal de la commande en
question. Si vous voulez récupérer cette liste dans un fichier vous pourriez ouvrir un éditeur de
texte et saisir les noms des éléments présents dans le dossier en cours. Ou, vous pouvez utiliser
les redirections.
Les redirections se matérialisent par les signes ">", ">>" pour les sorties et "<" et "<<" pour
les entrées.
L’environnement de travail
99
Notez qu'on utilise bien cat sans argument, il utilise donc l'entrée standard.
L’environnement de travail
104
>> ou 1>> redirige la sortie standard stdout en mode ajout dans le fichier list.txt
L’environnement de travail
106
2>> redirige la sortie d’erreur stderr en mode ajout dans le fichier error.log
L’environnement de travail
108
<< EOF lit l’entrée standard jusqu’à la deuxième occurrence du mot clef EOF et redirige le
contenu dans l’entrée standard stdin
L’environnement de travail
110
<< "EOF" lit l’entrée standard jusqu’à la deuxième occurrence du mot clef EOF et redirige
le contenu dans l’entrée standard stdin sans interpréter les variables.
L’environnement de travail
111
Création de canaux
En plus des trois canaux standard, sept autres canaux, numérotés de 3 à 9, peuvent être créés
en entrée ou en sortie. La commande exec permet d’affecter un canal jusqu’à sa fermeture
(exec num_canal<&-).
L’environnement de travail
112
Affecte au canal 3 le fichier d’entrée input.txt. Les commandes pourront dès lors utiliser ce
canal comme entrée standard stdin
Affecte au canal 4 le fichier de sortie file.txt. Dorénavant toute écriture dans le fichier
file.txt pourra ce faire par le biais de ce canal.
L’environnement de travail
113
Redirige la sortie standard stdout vers le canal 4, soit finalement vers le fichier file.txt
Libère le canal 4
L’environnement de travail
114
Redirection de canaux
On peut envisager, dans le cadre de certains traitements, de rediriger un canal dans un autre.
Cela permet de regrouper des informations provenant de plusieurs flux distincts dans un seul
et unique flux.
L’environnement de travail
115
&> redirige la sortie standard stdout ainsi que la sortie d’erreur standard stderr dans le
fichier execution.log
>&2 redirige la sortie standard stdout vers la sortie d’erreur standard stderr
L’environnement de travail
116
n&>m redirige tout ce qui est écrit sur le canal n vers le canal m. De ce fait, 2&>1 redirige
la sortie d’erreur standard stderr vers la sortie standard stdout
> crée le fichier list.txt à l’intérieur duquel sera inscrit le résultat de la redirection de la
sortie d’erreur standard stderr vers la sortie standard stdout
L’environnement de travail
117
Device /dev/null
/dev/null est un périphérique (device) spécial qui rejette toutes les données qui lui sont
transmises. Toute redirection de données dans ce périphérique ne seront pas affichées à
l’écran et seront définitivement perdues. Pour cette raison, il est souvent appelé « trou noir ».
L’environnement de travail
119
Redirige l’erreur standard stderr dans la sortie standard stdout puis redirige cette sortie
combinée dans /dev/null
L’environnement de travail
120
Le pipe
La redirection entre processus avec le pipe (|) permet de créer des « pipelines », c’est à dire
qu’une ligne de commande est constituée d’une succession de commandes dont la sortie de
chacune est redirigée dans l’entrée de la suivante.
Contrairement aux autres opérateurs de redirection, le pipe ne passe pas par un fichier mais
utilise une mémoire tampon (buffer).
L’environnement de travail
121
Liste les fichiers du répertoire courant, les trie par ordre décroissant (du plus gros au plus
petit) puis affiche les 5 premier résultats.
L’environnement de travail
122
| pipe
$ variable
* remplace 0 ou n caractères
! négation d’un test
? remplace 1 caractère
[] test
<> redirection entrée, sorties
$0...$9 variables de position
L’environnement de travail
125
Les guillemets : les guillemets protège tous les caractères spéciaux du shell à l'exception du
dollar $, des quotes inversés ``
L’environnement de travail
127
Le lancement de la commande
Une commande est une instruction qu'un utilisateur envoie au système d'exploitation de son
ordinateur pour lui faire exécuter une tâche.
Dans le shell Bash, on peut distinguer 3 catégories de commandes :
Les commandes définies par une fonction shell ou par un alias.
Les commandes primitives du Bash qu'on peut appeler aussi commandes internes. Un appel
d'une telle commande ne crée pas de processus fils du shell courant.
Les commandes externes qui sont des programmes exécutables stockés dans l'un des
répertoires du PATH (par exemple find qui se trouve dans le répertoire /usr/bin/). Lors de
l'appel de ces commandes, le shell courant crée un processus fils dans lequel la commande
en question sera exécutée.
L’environnement de travail
128
En résumé :
Une commande externe est un fichier présent dans l'arborescence. Quand un utilisateur
exécute la commande ls, le shell demande au noyau Linux d'exécuter le fichier /bin/ls.
Sont considérés comme commandes externes, tous les fichiers au format binaire exécutable
ainsi que tous les fichiers au format texte représentant un script de commandes.
Une commande interne est intégrée au processus shell. Elle n'a aucune correspondance avec
un fichier sur le disque.
La commande type indique si une commande est interne ou externe.
L’environnement de travail
129
Les fonctions, les alias et les commandes internes s'appellent directement par leur nom. Les
commandes externes, quant à elles, peuvent s'appeler par leur nom ou par leur chemin absolu
:
Avec un chemin absolu (ligne 4 dans l'exemple ci-dessus), il n'y a pas d'ambiguïté : on sait
exactement que la commande appelée est une commande externe et on sait aussi où elle se
trouve exactement dans le système de fichiers.
L’environnement de travail
130
Mais comment le nom d'une commande est-il résolu lorsque celle-ci est appelée ainsi ?
Lors de la résolution, Bash est allé jusqu'à l'étape 3. Nous pouvons donc affirmer que echo
n'est ni un alias, ni une fonction shell et que c'est une commande interne : pas de processus fils
créé lors de son appel.
Mais peut-on affirmer que echo n'est pas aussi une commande externe ? Non, nous ne
pouvons pas le savoir en l'état car, lors de l'exécution de type, le shell n'est allé que jusqu'à
l'étape 3.
Peut-être qu'une telle commande existe aussi dans le PATH. Pour le savoir, l'autre commande à
connaître est which : elle effectue l'étape 4 (et uniquement celle-ci), c'est-à-dire une
recherche dans le PATH, et renvoie le résultat s'il y en a un :
La commande Alias
Les alias permettent de définir des raccourcis pour vos commandes saisies dans une console.
Ainsi, une commande fréquente et relativement longue sera rendue accessible en tapant un
simple mot clé.
Retirer un alias :
⇒ unalias nom
Exemple : unalias cls
L’environnement de travail
133
Écrire un script
#!/bin/bash
echo "Mon premier script" # echo permet l’affichage à l’écran
echo "Liste des fichiers"
ls -la
L’environnement de travail
135
Les fonctions
Une fonction permet de regrouper des instructions fréquemment employées dans un ensemble
identifié par un nom.
Syntaxes avec la commande function :
Exemple de fonction :
#!/bin/bash
read -p "quel est votre prénom ? " prenom
reponse() {
echo "merci $prenom"
}
reponse
L’environnement de travail
138
1)
2)
3)
4) A son tour il exécute $HOME/.bashrc dans lequel il est recommandé de placer toutes les
fonctions ou alias personnels (car .bashrc est exécuté dans tout shell).
5) Enfin le précédent script exécute /etc/bash.bashrc, dans lequel on place les alias globaux et
la définition symbolique du prompt $PS1. Ce fichier est chargé par tous utilisateurs au
lancement d'un Bash.
6) Puis le prompt utilisateur s'affiche et le Shell attend une commande.
7) Le script $HOME/bash_logout est exécuté lorsque la session est terminée (exit ou CTL-D).
L’environnement de travail
141
Variables d’environnement
Une variable d'environnement est une variable dynamique utilisée par des processus ou des
applications afin de définir des chemins ou des raccourcis d'information.
Pour créer une variable d'environnement, on exporte la valeur d'une variable avec la
commande export.
Nous pouvons, sous Linux, voir les variables d'environnement qui sont présentes par défaut en
entrant la commande suivante : env
L’environnement de travail
143
L’environnement de travail
144
Les séquences d’échappement pouvant être utilisée pour le prompt sont principalement les
suivantes :
L’environnement de travail
147
Faisons un test :
PS1=youpi
Mais revenons à quelque chose de plus standard :
PS1="\u@\h:\w\$ "
Si vous voulez être avertis par un bip à chaque nouvelle ligne (cela vous indique que la
commande précédente vient de se terminer), précédez le de \a.
PS1="\a\u@\h:\w\$ "
Si vous pensez que votre shell n'est pas assez aéré, ajoutez un retour à la ligne :
PS1="\u@\h:\w\$\n"
Vous pouvez aussi intégrer l'heure à votre prompt, cela peut être utile pour estimer la durée
de vos commandes :
PS1="[\t] \u@\h:\w\$ "
Le caractère e est le caractère d'échappement qui précède un code ANSI. Exemple en vert :
PS1="\u@\h:\e[01;32m\w\e[00m\$ "
L’environnement de travail
148
L’environnement de travail
149
L’environnement graphique
Sans serveur graphique, vous ne pouvez utiliser que des logiciels en ligne de commande mais
vous pouvez faire beaucoup de choses :
Parcourir vos fichiers, les déplacer, les renommer, etc.
Créer des répertoires, en déplacer, en supprimer, etc.
Rédiger, envoyer, recevoir, lire et classer vos emails.
Surfer sur le web (vous ne verrez pas d’images).
Rédiger des textes avec un éditeur de texte ou faire du traitement de texte (avec Latex).
Écouter de la musique.
...
L’environnement graphique
155
Présentation de Xorg
C'est un serveur graphique, c'est lui qui va faire en sorte que l'on dispose d'autre chose que
les ttys sur votre système, il va nous fournir une interface graphique. Seul, il est limité; il
n'affiche en effet que des fenêtres, il faudra recourir à l'utilisation d'un gestionnaire de
fenêtre ou d'un environnement de bureau si on veut un résultat plus agréable à l'oeil.
X.org est un programme basé sur une architecture client/serveur :
Le serveur X est lancé sur une machine possédant un écran, un clavier et une souris (ou
d'autres périphériques).
Le client X se connecte au serveur afin de lui donner ses requêtes, ce sont des applications
graphiques affichées dans une fenêtre du serveur X.
C’est le protocole X qui permet l'échange de données entre le serveur et le client.
Vous l'aurez compris, sans serveur graphique, impossible d'avoir un rendu autre que celui de
la console.
L’environnement graphique
156
Généralité
Aujourd’hui, le serveur X se configure automatiquement au démarrage.
Le fichier /etc/X11/xorg.conf qui sert à paramétrer le serveur X est donc quasiment vide
voire inexistant sur les dernières versions d'Ubuntu.
Cependant, dans certains cas, la détection automatique ne fonctionne pas. Il faut donc
paramétrer manuellement ce fichier xorg.conf. Plusieurs cas peuvent en être la cause :
Deux cartes graphiques dans l'ordinateur (le serveur X ne parvient pas à localiser la carte
sur laquelle l'écran principal est branché.)
Certains modèles d'écrans et de cartes graphiques sont mal détectés (cela empêche le
démarrage du serveur X)
...
Dans ces cas, il est possible que le serveur X renvoie un message de ce type : « No screens
found » .
Avant de commencer toute manipulation, il peut être intéressant de connaître sa version
d'Xorg avec celle du noyau Linux correspondant.
⇒ Xorg -version
L’environnement graphique
157
Comme vous le voyez, le fichier est composée de plusieurs sections, chacune définissant les
paramètres pour une partie du système. On rencontre ainsi la section qui permet de
configurer la carte graphique, celle qui permet de configurer le clavier/la souris, ou encore
celle qui gère l'écran. Chaque section admet la syntaxe suivante :
L’environnement graphique
159
Section Device : cette partie contient les informations matérielles de la carte graphique. Tout
comme la section InputDevice, elle nécessite au moins deux entrées: Identifier et Driver, les
autres entrées sont aussi optionnelles.
Section Screen : cette section est définie par un moniteur et une carte graphique, afin de
pouvoir permettre l'affichage, c'est aussi ici que le mode vidéo utilisé est choisi parmi les
modes que l'ordinateur peut gérer. Elle possède deux entrées obligatoires : Identifier et
Device. Elle est souvent composée d'une sous-section Display possédant au moins une entrée
Depth, informant sur la profondeur des couleurs à utiliser.
Voici un exemple de section Screen :
L’environnement graphique
161
Un même ServerLayout peut avoir plusieurs écrans, ou bien utiliser plusieurs cartes
graphiques, il est donc possible que vous ayez plusieurs sections Device et/ou Monitor. De
plus, il est possible de trouver plusieurs ServerLayout au sein de xorg.conf, car plusieurs
serveurs X peuvent être lancés simultanément sur une même machine (Par exemple en passant
en console tty à l'aide de Ctrl+Alt+F1).
Si on doit tout configurer soi-même, ça devient vite assez pénible, sans compter la probabilité
élevée de faire une erreur, compromettant ainsi notre belle interface graphique. Il existe des
scripts qui génèrent un xorg.conf valide.
L’environnement graphique
164
GDM - Gnome Display Manager - est conçu pour une utilisation avec Gnome 3. Il prend en
charge les thèmes, la connexion automatique et la détection automatique ainsi que l'utilisation
de multiples environnements de bureau. Plus spécifiquement, pour ceux qui utilisent Gnome 3,
une application de configuration est également disponible afin de pouvoir facilement
personnaliser l'écran de connexion et activer la connexion automatique sans avoir à modifier
les fichiers de configuration.
L’environnement graphique
167
L’environnement graphique
168
KDM - le KDE Display Manager - est conçu pour être utilisé avec KDE. Il prend en charge les
thèmes, la connexion automatique ainsi que la détection automatique et l'utilisation de
multiples environnements de bureau. Si l'environnement de bureau KDE complet a été installé,
KDM devrait alors déjà être disponible pour activation.
L’environnement graphique
169
L’environnement graphique
170
SLiM - the Simple Login Manager - est conçu pour être utilisé avec n'importe quel
environnement de bureau. Populaire auprès des utilisateurs d'Arch, il prend en charge la
gestion des thèmes, la connexion automatique, ainsi que l'utilisation de multiples
environnements de bureau. Cependant, SLiM n'est pas recommandé pour les utilisateurs
inexpérimentés car il ne détecte pas automatiquement les environnements de bureau installés,
et il est donc nécessaire de modifier manuellement certains fichiers de configuration pour le
faire fonctionner.
L’environnement graphique
171
L’environnement graphique
172
Mate est un fork de GNOME 2 destiné à maintenir une interface proche des métaphores de
bureaux traditionnelles. Constamment amélioré enrichi en fonctionnalités sans pour autant
perdre son avantage : une faible consommation de ressources (mémoire et CPU).
Xfce est l'environnement de Xubuntu. Complet et puissant, il est généralement très apprécié
pour sa légèreté et sa simplicité.
LXDE est un environnement encore plus léger que XFCE, à la base de la variante Lubuntu,
très adaptée aux vieux ordinateurs.
L’environnement graphique
179
KDE
C’est l'acronyme de : K Desktop Environment. Cet environnement se veut complet, rapide et
très ergonomique. Il est créé en 1996. Cet environnement est, contrairement aux rumeurs, un
environnement plus rapide que Gnome car il charge a chaque démarrage les bibliothèques
nécessaires en mémoire. Elle ne sont donc chargées qu'une seule fois, à la différence des
bibliothèques GTK, chargées au fur et à mesure de la demande.
Depuis ses début, KDE utilise Qt comme bibliothèque à outils graphiques. Qt n'était pas libre
au début, ce qui avait conduit à la création d'un environnement graphique concurrent en
1997, le projet Gnome. En 2000, Qt 2.2 est passé sous licence GPL.
Les applications KDE ont la particularité de toutes (ou presque) contenir un « K » dans leur
nom.
Les applications de KDE sont écrites en langage C++.
L’environnement graphique
182
Les partitions
Les partitions principales.
Au maximum de 4.
Accepte tout type de système de fichiers.
Les partitions étendues.
Destinées à contenir des partitions logiques.
Nécessitent au moins une partition principale.
Les partitions logiques.
Contenues dans une partition étendue.
Accepte tout type de système de fichiers.
Exemple permettant d’installer plusieurs systèmes d’exploitation.
Gestion des fichiers
194
er
Le Master Boot Record est situé dans les 1 secteurs du disque.
Il est constitué de 2 parties :
La table des partitions qui est un index qui recense les différentes partitions sur un disque
dur.
Le programme d’amorçage qui charge le noyau du système.
Plusieurs types de partitions.
Principale.
Etendu.
Logique.
Swap.
Gestion des fichiers
195
Mode de transfert
Les modes de transfert des fichiers périphériques sont de type bloc ou de type caractère.
Le mode bloc se caractérise par un accès aléatoire, c'est-à-dire que les enregistrements et les
consultations peuvent survenir à n'importe quel moment. Le mode bloc est le mode privilégié
pour tous les périphériques de grande capacité et les transferts s'effectuent par bloc entier de
données (disque dur, swap, etc...).
Le mode caractère se caractérise par un accès séquentiel, c'est-à-dire qu'une connexion est
établie avec le périphérique, et pendant toute la durée de la connexion, le périphérique est
en attente de transfert, et les échanges se font dans les deux sens et les caractères sont
transmis les uns après les autres (octet par octet). Le mode caractère est le mode privilégié
pour les périphériques qui exigent des réponses rapides et qui établissent des échanges dans
les deux sens. Les imprimantes sont des périphériques de type caractère.
Gestion des fichiers
198
Utilité de la partition
Protection des données.
Si une partition est corrompue, ce n’est pas tout le disque qui est touché.
Améliorer l’utilisation de l’espace disque.
Avoir des systèmes de fichiers et des tailles de blocs adaptés à un certain usage.
Limiter l’expansion des données.
Si un processus occupe trop d’espace disque, il sera limité à la partition et d’autres processus
utilisant d’autres partitions ne sont pas impactés.
Gestion des fichiers
199
Avantages
Mettre à l’abri certaines données stratégiques comme /home.
La défaillance du disque hdb n’entraîne pas une réinstallation totale.
Gestion des fichiers
202
Pour visualiser l'utilisation de l'espace disque d'un système de fichiers, il faut utiliser df.
df [options] [files...]
Principales options:
-a : tous les système de fichiers avec 0 blocs.
-t : limite l'affichage des données à un type de système de fichiers particulier.
-l : local.
-h : human readable format. (1K, 20M,…)
Gestion des fichiers
209
user@ubuntu:~$ pwd
/home/user
user@ubuntu:~$ cd .
user@ubuntu:~$ pwd
/home/user
user@ubuntu:~$ cd ..
user@ubuntu:/home$ pwd
/home
user@ubuntu:~$
user@ubuntu:/bin$ cd ~
user@ubuntu:~$
Gestion des fichiers
216
La commande pour lister les fichiers contenus dans le répertoire courant est ls.
ls [options] [filenames]
Principales options :
-l : affiche la sortie au format long.
-f : ajoute un caractère de signalisation de type (répertoire, binaire, etc.).
-a : tous les fichiers, même cachés.
-R : liste les sous répertoires récursivement.
-d : pour ne pas descendre dans les sousrépertoires.
Exemple :
Pour lister le contenu du répertoire courant :
user@ubuntu:~$ ls
user@ubuntu:~$
Gestion des fichiers
217
Pour lister le répertoire courant avec les fichiers cachés (fichiers dont le premier caractère est
un point) :
user@ubuntu:~$ ls a
.
..
.bash_history
.bash_logout
.bash_profile
.bashrc
Desktop
[...]
user@ubuntu:~$
Gestion des fichiers
218
Pour seulement lister les répertoires d'un autre répertoire (/home par exemple) utiliser d et */
:
user@ubuntu:~$ cd /home
user@ubuntu:~$ ls -d */
user/ user1/ user2/ share/ test/
Gestion des fichiers
219
Exemple :
[root@test ] /# mkdir -m 0700 bin
[root@test ] /# mkdir -p bin/system/x86
Gestion des fichiers
220
Exemple :
[root@test ] /# rmdir tmp
[root@test ] /# rmdir -p bin/system/x86
Gestion des fichiers
221
La manipulation est simple mais utilise les droits 'root'. Pour automatiser le montage, nous
pouvons utiliser l’outil : fstab
Gestion des fichiers
228
De cette façon, toute clé usb formatée en vfat (la majorité) sera accessible par le dossier
/media/usbdisk-1. Si vous insérez une seconde clé, elle sera accessible depuis
/media/usbdisk-2 … et ainsi de suite pour tous vos ports usb disponibles.
Gestion des fichiers
229
Vous remarquez l’uuid associée à /dev/sdb1, c’est celui de votre clé usb.
Déclarer votre clé dans fstab
Et ajouter la ligne suivante (à adapter selon votre uuid).
Gestion des fichiers
230
Ces droits n’ont pas la même signification pour un fichier que pour un répertoire.
Pour un fichier :
r : lecture (afficher).
w : écriture (modification).
x : exécution (exécution d’un script).
Pour un répertoire :
r : lire le contenu, lister les fichiers (avec ls par exemple).
w : modifier le contenu, créer et supprimer des fichiers (avec les commandes « cp », « mv
», « rm »).
x : accéder aux fichiers du répertoire. Mais aussi de naviguer dans les sous-répertoires
(avec « cd »).
Gestion des fichiers
236
Le super utilisateur
Le compte « root » possède tous les droits.
Celui qui possède le mot de passe root peut tout faire.
La plupart des distributions récentes désactivent le compte root.
Certains utilisateurs peuvent endosser temporairement le rôle du super-utilisateur, avec la
commande « sudo » (Super User Do).
La commande qui suit le « sudo » sera exécutée en tant que « root ».
Gestion des fichiers
240
D'après cet exemple, tout nouveau fichier aura les droits 740 (rwxr-----) car le masque de
protection vaudra 037 (----wxrwx).
Pour connaître la valeur du masque de protection, tapez umask sans attribut.
Gestion des fichiers
242
Pour ajouter un droit SUID à un programme, utiliser la commande chmod de la même manière
que vous procéderiez pour un droit normal.
Notation symbolique :
Syntaxe : chmod u+s fichier-exécutable
Notation numérique :
La valeur numérique d'un SIUD est 4000 et s'ajoute à la valeur de la série numérique
globale.
Syntaxe : chmod 4+droits fichier-exécutable
Exemple : chmod 4755 monprog
Dans cet exemple on donne les droits rwsr-xr-x au fichier monprog. Ne pas oublier que
le droit SUID s'affiche à la place du droit en exécution du propriétaire sans que ce
dernier soit supprimé !
La présence du droit SUID suppose la présence du droit en exécution qui permet de
lancer le fichier exécutable.
Gestion des fichiers
244
La valeur numérique du droit SGID est 2000, il est symbolisé par la lettre s et est affiché à la
place du droit d'exécution du groupe.
Notation symbolique :
Syntaxe : chmod g+s fichier-exécutable|répertoire
Notation numérique :
La valeur numérique d'un SGID est 2000 et s'ajoute à la valeur de la série numérique
globale.
Syntaxe : chmod 2+droits fichier-exécutable|répertoire
Exemple : chmod 2755 monprog
Dans cet exemple on donne les droits rwxr-sr-x au fichier monprog. Ne pas oublier que
le droit SGID s'affiche à la place du droit en exécution du groupe sans que ce dernier soit
supprimé !
Gestion des fichiers
246
Mode symbolique :
Basé sur des symboles (ugoa) et des opérateurs (+,-,=)
u (user), g (group), o (others), a (all users)
+ (Ajouter le droit), - (Retirer le droit), = (Ajouter le droit et retirer tous les autres)
Exemple (Ajoute le droit d’exécution au propriétaire) :
Gestion des fichiers
248
Exemple d’utilisation :
Retirer le droit d’écriture au propriétaire et au groupe.
⇒ chmod u-w,g-w /home/paul/secret.txt
Positionner les droits en « rwx r-w --- ».
⇒ chmod 750 /home/paul/secret.txt
Ajouter le droit de lecture aux autres de tous les fichiers.
⇒ chmod -R o+r /home/paul/*
Retirer le droit d’écriture au groupe propriétaire.
⇒ chmod -R g-w /home/paul/*
Gestion des fichiers
249
Les travaux qui sont lancés en même temps sont en compétition pour obtenir du temps
processeur. C'est l'ordonnanceur qui gère l'activité des différents processus selon l'ordre de
priorité qui leur ont été respectivement attribué. L'ordre de priorité est un numéro qui peut
varier de +19 (la plus basse priorité) à -20 (la plus haute priorité). La valeur par défaut est
+10, et seul le super utilisateur peut attribuer des valeurs négatives. c'est la commande "nice"
qui permet de changer la priorité d'un processus. Plus le nombre est bas, plus la priorité est
élevée.
nice -n -20 [command]
nice -n +19 [command]
Pour modifier une commande en cours d'exécution, il faut utiliser renice.
renice [+|-] nicenumber [option] targets
Principales options:
-u : interprète les cibles comme des noms d'utilisateurs.
-p : par défaut : interprète les cibles comme des PID.
Exemple :
[root@test ] /# renice 20 501
Gérer les processus
254
Syntaxe :
-l : affichage long
-u : (utilisateur) présente le nom de l'utilisateur et l'heure de lancement.
-a : (autres) présente également les processus des autres utilisateurs.
-x : affiche les processus qui n'ont pas de terminal de contrôle.
Gérer les processus
258
La commande TOP
La commande top permet de connaître les caractéristiques de l'ensemble des processus qui
tournent sur votre machine.
Gérer les processus
259
La commande htop
htop est un utilitaire similaire à la commande top de Linux, mais beaucoup plus pratique.
Présentation :
Permet d'utiliser la souris pour choisir un des process affiché, et d'entreprendre une action
dessus (changement de priorité, tuer, …).
Permet également de faire des sélections de process par filtre.
Le scrolling sur les lignes permet de voir la ligne de commande complète d'un processus.
htop utilise moins de mémoire que la commande top.
htop se lance plus rapidement, et n'a pas de temps d'attente avant d'afficher la liste des
process.
Gérer les processus
261
Gérer les processus
262
La commande kill
La commande "kill" permet d'envoyer un signal à un processus en cours afin de l'arrêter.
Qu'est ce qu'un signal ?
Les signaux offrent un mécanisme permettant d'envoyer un message à un processus en cours
d'exécution. On se sert généralement des signaux pour terminer un processus, lui indiquer de
relire sa configuration, etc.
Les signaux les plus connus sont les cinq suivants :
SIGHUP (signal n°1) : pour beaucoup de services réseaux, la réception du signal n°1 lui
indique de lire sa configuration.
SIGKILL (signal n°9) : termine un processus (arrêt brutal). Utile lorsque le SIGTERM ne
marche pas (processus planté).
SIGTERM (signal n°15) : demande au processus de s'arrêter (arrêt propre).
SIGSTOP (signal n°17) : pour arrêter un processus.
SIGCONT (signal n°19) : pour redémarrer un processus arrêté.
Gérer les processus
263
nohup est une commande qui permet de lancer un processus qui restera actif même après la
déconnexion de l'utilisateur.
Cette dernière peut s'avérer très utile si on la combine au « & » qui permet de lancer un
processus en arrière plan.
Ctrl-Z, stoppe le processus en cours, celui qui a été lancé par la dernière commande, mais ne
le détruit pas : il reste en attente. Pour le mettre en tâche de fond (il continue à s'exécuter,
mais vous pouvez continuer à taper des commandes), tapez bg. Pour le faire revenir en avant,
taper fg.
La commande bg ( background ) permet d’exécuter une commande, qui est en pause avec
CTRL+Z, en arrière-plan.
Contrairement à bg, la commande fg (foreground) reprend un processus, lancé en arrière-
plan, au premier-plan.
jobs permet de connaître les processus qui tournent en arrière-plan.
Gérer les processus
266
Historique
Différents systèmes de gestion des services sont utilisés par les distributions GNU/Linux. Par
exemple :
SysVinit (init System V) standard sur la plupart des distributions Linux.
UpStart développé par Ubuntu depuis 2006.
Systemd initié par Lennart Poettering en 2010.
Gérer les processus
267
Commandes
Syntaxe :
⇒ chkconfig -l NomService : liste les niveaux de démarrage du service.
⇒ chkconfig ––level 2345 NomService on
⇒ chkconfig –-level 016 Nomservice off
⇒ update-rc.d Nomservice defaults : remet les liens par défaut tel que définis dans les
entêtes LSB des scripts sous /etc/init.d
⇒ update-rc.d NomService start NumBoot 2 3 4 5
⇒ update-rc.d NomService stop NumBoot 0 1 6
⇒ update-rc.d NomService enable 2
⇒ update-rc.d NomService disable 3 4 5
⇒ update-rc.d NomService remove : efface tous les liens des rcx.d
⇒ update-rc.d -f Nom_du_service remove, l’option -f permet de forcer la suppression des
liens même si /etc/init.d/nom_du_service existe encore.
Gérer les processus
269
Commandes
Dans les grandes lignes on voit :
Required-Start : les services qui doivent être lancés AVANT qu’Exim démarre.
Required-Stop : même chose pour l’arrêt.
Should-Start : les services qui DEVRAIENT démarrer en même temps qu’Exim.
Default-Start : les runlevels de démarrage.
Default-Stop : les runlevels d’arrêt.
Donc pour chaque script on indique dans son en-tête LSB ses contraintes de démarrage et
d’arrêt.
Pour appliquer les règles, il suffit d’invoquer update-rc.d avec les options par défaut. Il ira
lire la configuration LSB et appliquera les paramètres en conséquences.
Gérer les processus
271
Un target est une unité particulière, elle permet de regrouper d'autres unités. Les targets
viennent en remplacement des runlevels. Son nom de fichier prend le suffixe .target.
Gérer les processus
275
Gérer les processus
277
Commandes
systemd fournit un large panel de commande qui vous permettent d'avoir des informations ou
de modifier l'état de votre système. Sans être exhaustif, voici les plus importantes :
systemctl : contrôle systemd et gère les unités.
journalctl : consultation du journal de systemd.
loginctl : contrôle des sessions utilisateurs (systemd-logind).
Au niveau système :
Redémarrer : systemctl reboot
Arrêter : systemctl powerof
Mettre en veille : systemctl suspend
Hibernation : systemctl hibernate
Gérer les processus
278
Démarrer un service :
⇒ systemctl start nom_du_service.service
Arrêter un service :
⇒ systemctl stop nom_du_service.service
Redémarrer un service :
⇒ systemctl restart nom_du_service.service
Recharger la configuration un service :
⇒ systemctl reload nom_du_service.service
Gérer les processus
280
Pour comprendre pourquoi le service réseau prend du temps vous pouvez taper maintenant :
⇒ systemd-analyze critical-chain network-up.service
Analyser le chemin critique :
⇒ systemd-analyze critical-chain
Gérer les processus
282
/etc/protocols
Le fichier protocols effectue le mapping entre les noms des protocoles et leurs numéros
véhiculés par les datagrammes.
/etc/networks
Le fichier networks effectue le mapping entre un NOM de réseau et une adresse de réseau ;
il n’est pas obligatoire.
Il permet, lors de commande d'administration (netstat –r), d'afficher le nom de réseau au
lieu de son numéro.
Linux en réseau et cohabitation avec Windows
286
Étant donné qu’il est impossible de maîtriser l’ensemble des infrastructures physiques situées
entre l’utilisateur et la machine distante. Internet étant par définition un réseau (ouvert), la
seule solution est de recourir à une sécurité au niveau logique (au niveau des données).
Le protocole SSH (Secure Shell) répond à cette problématique en permettant à des
utilisateurs (ou bien des services IP) d’accéder à une machine à travers une communication
chiffrée (appelée tunnel).
Les données circulant entre le client et le serveur sont chiffrées, ce qui garantit leur
confidentialité (personne d’autre que le serveur ou le client ne peut lire les informations
transitant sur le réseau). Il n’est donc pas possible d’écouter le réseau à l’aide d’un analyseur
de trames. Le client et le serveur s’authentifient mutuellement afin d’assurer que les deux
machines qui communiquent sont bien celles que chacune des parties croit être. Il n’est donc
plus possible pour un pirate d’usurper l’identité du client ou du serveur (spoofing).
Linux en réseau et cohabitation avec Windows
297
Telnet
Telnet est un protocole permettant d'émuler un terminal à distance, cela signifie qu'il permet
d'exécuter des commandes saisies au clavier sur une machine distante.
Telnet fonctionne dans un environnement client/serveur, c'est-à-dire que la machine distante
est configurée en serveur et par conséquent attend qu'une machine lui demande un service.
Ainsi, étant donné que la machine distante envoie les données à afficher, l'utilisateur a
l'impression de travailler directement sur la machine distante.
Telnet utilise le port 23.
Le démon Telnet s'appelle Telnetd.
La commande pour initier une session Telnet est la suivante :
⇒ telnet nom_du_serveur
Il est également possible de préciser le port à utiliser en faisant suivre l’adresse IP ou le nom
du serveur par le numéro de port :
⇒ telnet nom_du_serveur n°de port
Linux en réseau et cohabitation avec Windows
298
SSH
Historique
Le protocole SSH (Secure Shell) a été mis au point en 1995 par le Finlandais Tatu Ylönen. Il
s’agit d’un protocole permettant à un client (un utilisateur ou bien même une machine) d’ouvrir
une session interactive sur une machine distante (serveur) afin d’envoyer des commandes ou
des fichiers de manière sécurisée.
La version 1 du protocole (SSH1) proposée dès 1995 avait pour but de servir d’alternative
aux sessions interactives (shells) telles que Telnet, rsh, rlogin et rexec. Ce protocole possédait
toutefois une faille permettant à un pirate d’insérer des données dans le flux chiffré. C’est la
raison pour laquelle en 1997 la version 2 du protocole (SSH2) a été mise en place.
Linux en réseau et cohabitation avec Windows
300
Pourquoi SSH ?
Combattre trois maux
Linux en réseau et cohabitation avec Windows
301
Architecture
SSH appartient au produit openssh.
C’est un service standalone qui est activé implicitement.
Le script de mise en œuvre du service se trouve sous /etc[/rc.d]/init.d/sshd.
Mise en œuvre :
⇒ service sshd status ou /etc/init.d/sshd status
⇒ service sshd start ou /etc/init.d/sshd start
⇒ service sshd reload ou /etc/init.d/sshd reload
⇒ service sshd restart ou /etc/init.d/sshd restart
⇒ service sshd stop ou /etc/init.d/sshd stop
Fichiers de configuration :
Client : /etc/ssh/ssh_config
Serveur : /etc/ssh/sshd_config
Linux en réseau et cohabitation avec Windows
303
Serveur SSH
Le serveur SSH répond aux requêtes des clients ssh ( sftp, scp, ssh...).
Il se configure dans le fichier : /etc/ssh/sshd_config.
L’installation se fait à l’aide du paquet openssh-server :
⇒ apt-get install openssh-server
Vérification de la version :
⇒ ssh -V
Le serveur SSH fonctionne en tant que service qui après l'installation sera lancé par défaut au
démarrage de la machine.
Linux en réseau et cohabitation avec Windows
304
Principe de fonctionnement
Deux étapes :
Authentification par chiffrement asymétrique (RSA, DSA).
Utilisation de clés publiques et privées.
Confidentialité par chiffrement symétrique (3DES, Blowfish).
Utilisation d’une clé secrète dite de session ; cette clé est unique.
Dès l’installation, une clé publique et une clé privée sont attribuées au serveur SSH. Une clé
est une suite de nombres générés par un algorithme mathématique (DSA ou RSA).
La clé privée du serveur se situe dans : /etc/ssh/ssh_host_rsa_key pour RSA,
/etc/ssh/ssh_host_dsa_key pour DSA.
La clé publique associée se situe dans /etc/ssh/ssh_host_rsa_key.pub et
/etc/ssh/ssh_host_dsa_key.pub. La clé publique du serveur, envoyée au client, servira à
celui-ci pour chiffrer ce qu’il envoie.
La clé privée, restée sur le serveur servira à celui-ci à déchiffrer ce qu’il reçoit.
Linux en réseau et cohabitation avec Windows
307
Le chiffrement asymétrique prend trop de ressources pour être utilisé lors des communications.
En effet, il utilise des clés différentes : une paire composée d'une clé publique, servant au
chiffrement, et d'une clé privée, servant à déchiffrer.
Le chiffrement symétrique est beaucoup moins gourmand en ressources. Ce chiffrement
n’utilise qu’une seule et unique clé qui permet le chiffrement et le déchiffrement.
Une fois l’échange de clés asymétriques terminé, la machine client génère une clé (symétrique)
et la transmet au serveur. Cette clé se nomme clé secrète ou clé de session. Cette transaction
est sécurisée par le chiffrement asymétrique dans le but de protéger la clé qui va permettre
les échanges entre les deux machines sans coûter trop de ressources systèmes (CPU,
mémoire...).
Toutes les données échangées à partir de ce moment, seront chiffrées grâce à la clé de
session :
Le client chiffre le premier paquet de données avec la clé de session.
Le serveur accepte ce premier paquet chiffré (après déchiffrement de celui-ci avec la clé de
session).
Linux en réseau et cohabitation avec Windows
308
Le générateur de clés va en générer deux, une clé publique et une clé privée. Il va placer la
clé privée (sous forme chiffrée) dans un endroit qui, par défaut, est $HOME/.ssh/id_rsa.
Appuyez sur Enter pour accepter la localisation de la clé (il est plus simple d'accepter la
localisation proposée). ssh-keygen vous demande ensuite une « passphrase » (équivalent
d'un mot de passe, mais sous forme de phrase). Cette phrase sert à fortifier la clé pour la
rendre plus difficilement cassable.
Linux en réseau et cohabitation avec Windows
310
Utilisation de ssh-agent
Lors de sa connexion à SSH, le client devra fournir la passphrase mémorisée afin d’obtenir la
connexion sécurisée.
A chaque connexion à ssh avec authentification par clé publique, le client doit entrer la
phrase d’authentification.
Afin d’éviter cette saisie, on peut utiliser l’agent ssh qui fournira la passphrase à chaque
demande d’authentification.
L’agent ssh est activé automatiquement au lancement de l’interface graphique lors de la
connexion d’un utilisateur.
En cas de connexion ou en cas de changement d’utilisateur (su - ), il est nécessaire de lancer
l’agent ssh, grâce à la commande : ssh-agent
Pour ce type de connexion, on peut activer l’agent ssh automatiquement, en insérant la
commande ssh-agent dans le fichier $HOME/.bash_profile
Prévoir l’arrêt du programme dans le fichier de déconnexion $HOME/.bash_logout, grâce à
la commande : ssh-agent –k
Linux en réseau et cohabitation avec Windows
312
Pour faire connaître la clé privée à l’agent ssh, utilisez la commande : ⇒ ssh-add
Après lui avoir fourni la passphrase, l’agent ssh déchiffre la clé privée et la stocke en
mémoire, elle y restera jusqu’à votre déconnexion et vous pourrez vous connecter au serveur
ssh sans avoir à fournir votre phrase d’authentification.
Vous disposez d'autres options de ssh-add :
ssh-add -l visualisation des clés que l’agent contient à un instant donné.
ssh-add -d nom-fichier-clé suppression d’une clé de l’agent.
ssh-add -D suppression de toutes les clés de l'agent.
Linux en réseau et cohabitation avec Windows
313
SFTP
SFTP (Secure File Transfert Protocol ou SSH File Transfer Protocol) est un protocole de
transfert de fichiers similaire à FTP à la différence que celui-ci va utiliser le protocole SSH.
Il est possible de se connecter via un navigateur avec la syntaxe abrégée.
⇒ sftp://user@mon-site.domaine
Il est possible de se connecter via une interface graphique.
Exemple : FileZilla
Il est possible de se connecter en ligne de commande via une console.
⇒ sftp adresse IP <port>
Linux en réseau et cohabitation avec Windows
317
RCP
La commande rcp copie les fichiers ou les répertoires entre un système local et un système
distant ou entre deux systèmes distants. Vous pouvez utiliser cette commande à partir d'un
système distant (après la connexion avec la commande rlogin) ou à partir du système local
(sans vous connecter à un système distant).
Pour pouvoir utiliser la commande rcp, les deux ordinateurs ont besoin d'un fichier « .rhosts »
dans le répertoire personnel de l'utilisateur, qui contiendrait les noms de tous les ordinateurs
autorisés à accéder à cet ordinateur, ainsi que le nom d'utilisateur.
« rcp » ne demande pas de mot de passe
La syntaxe :
⇒ rcp user1@serveur1:/dir1/fichier1 user2@serveur2:/dir2/fichier2
Autre syntaxe
⇒ rcp -p -r serveur01:/dir serveur02:/dir
L'option -r permet de faire une copie récursive
L'option -p conserve les dates d’accès et les permissions
Linux en réseau et cohabitation avec Windows
319
Serveur DHCP
Principe de fonctionnement
DHCP est un protocole niveau applicatif, qui permet la configuration réseau dynamique d’une
station à son démarrage.
Les informations concernant la configuration du système (@ IP, passerelle par défaut, @
serveur DNS, nom de domaine) sont connues d’un serveur DHCP qui les transmet, à la
demande de la station cliente.
Linux en réseau et cohabitation avec Windows
320
A chaque démarrage d'un client DHCP, celui-ci demande des informations d'adressage IP au
serveur DHCP.
Le client émet et écoute sur le port UDP 68, le serveur émet et écoute sur le port UDP 67.
L’attribution d’une configuration attribuée par DHCP est limitée dans le temps, pour un bail.
Linux en réseau et cohabitation avec Windows
321
Les échanges
DHCPDISCOVER
Adresse IP source = 0.0.0.0
Adresse IP destination = 255.255.255.255
Adresse matérielle = 080038xxxxxx
DHCPOFFER
Adresse IP source = 129.181.176.10
Adresse IP destination = 255.255.255.255
Adresse IP proposée = 129.181.176.11
Adresse matérielle du client = 080038xxxxxx
Masque de sous réseau = 255.255.254.0
Durée du bail = 96 Heures
Identificateur du serveur = 129.181.176.10
Linux en réseau et cohabitation avec Windows
325
Renouvellement de bail :
Adresse IP source = 129.181.176.10
Adresse IP destination = 129.181.176.11
Adresse IP demandée = 129.181.176.11
Adresse matérielle du client = 080038xxxx
Le renouvellement se fait généralement à la moitié du bail. Tous les serveurs peuvent
répondre. Si aucun ne répond, la procédure reprend au début avec un DHCPDISCOVER.
Linux en réseau et cohabitation avec Windows
327
DHCPACK
Adresse IP source = 129.181.176.10
Adresse IP destination = 129.181.176.11
Adresse IP proposée = 129.181.176.11
Adresse matérielle du client = 080038xxxxxx
Masque de sous réseau = 255.255.254.0
Durée du bail = 96 Heures
Identificateur du serveur = 129.181.176.10
Option DHCP : Routeur = 129.181.176.1
Le client est complètement initialisé et peut communiquer sur TCP/IP.
Linux en réseau et cohabitation avec Windows
328
Le fichier dhcpd.conf
Il contient la configuration du serveur et est constitué de plusieurs paragraphes :
Les paramètres globaux, situés en début de fichier, s’appliqueront à tous les paragraphes
qui suivent, à moins qu’ils ne soient modifiés à un niveau inférieur :
max-lease-time <secondes>
default- lease-time <secondes>
option domain-name < «nom de domaine»>
option domain-name-servers <liste d’adresses de serveurs DNS>
option subnet-mask <masque réseau>
Linux en réseau et cohabitation avec Windows
332
Le paragraphe shared-network est utilisé pour informer le serveur DHCP que certains sous-
réseaux IP partagent en réalité le même réseau physique.
Dans un réseau partagé, les adresses disponibles dans chaque sous-réseau pour l’allocation
dynamique sont mises en commun.
Linux en réseau et cohabitation avec Windows
333
Serveur DNS
Principe de fonctionnement
La résolution de noms consiste à assurer la correspondance entre un nom de machine
(hostname) et une adresse IP. Son fonctionnement s'appuie sur une résolution locale ou/et sur
une résolution distante, serveur DNS (Domain Name System). Pour que ce système fonctionne, il
faut impérativement qu'il y ait au plus une adresse IP qui corresponde au nom d'une machine.
Historique de la gestion des hostnames
A l'origine de TCP/IP très peu de machines étaient connectées. Les administrateurs de ces
machines géraient des tables de conversion manuelle. Ces tables, sous forme de fichiers ASCII
sont encore utilisées (voir fichier /etc/hosts). Le format de ce fichier est relativement simple :
"une adresse " "un nom de machine" "alias" "autre alias"...
Linux en réseau et cohabitation avec Windows
339
Exemple :
172.26.3.23 alma ALMA
172.26.3.23 server.test.fr server
Cette méthode est applicable pour un réseau sur lequel il y a très peu de machines. Chaque
machine doit disposer en local de cette base. Cependant, lorsque qu'un administrateur décide
de changer l'adresse d'une de ces machines, il doit mettre à jour les tables sur toutes les
machines de son réseau. Plus le nombre de machines est grand sur le réseau et plus ce
système devient lourd à gérer. Sur des réseaux constitués de plusieurs dizaines de machines,
ce système n'est plus envisageable, car beaucoup trop lourd à maintenir.
Sun, a intégré dans sons système NIS (Network Informations Services) une base de données
unique (éventuellement dupliquée sur d'autre machine). Chaque client qui veut connaître
l'adresse d'une machine doit donc la demander au serveur NIS. Cette méthode présente
l'avantage d'une grande souplesse mais a aussi des limites en nombres de machines gérables.
Linux en réseau et cohabitation avec Windows
340
Sur un réseau constitué de plusieurs centaines de machines voir de plusieurs millions (cas de
l'Internet) ce système ne convient plus, car il est très difficile d'obtenir des noms différents
pour chacune des machines.
Ce système suppose qu'il y ait au moins une personne (physique ou morale) qui enregistre
l'unicité du nom. Sur un réseau tel que l'Internet, vu le nombre de machines qui sont connectées,
un système avec une autorité centrale ne peut plus être envisagé. Il a fallut créer un processus
qui délègue une partie de la responsabilité de cette gestion. La mise en place de ce système
est connue sous le nom de DNS (Domaine Name System) ou de Système de Nom de domaine.
Linux en réseau et cohabitation avec Windows
341
Le DNS
Le système de nom de domaine est un système de noms hiérarchisés par opposition à un
système de noms à plats.
Linux en réseau et cohabitation avec Windows
342
Le nom qualifié ou complet (FQDN) d'une machine se lit en partant du client final et en
remontant dans l'arbre hiérarchique. Chaque niveau est séparé par un « . » .
Par exemple : impots.gouv.fr.
Le domaine racine n'a pas de nom et par convention est appelé « . » . Chaque niveau de
l'arborescence garantie que les noms de ces fils sont uniques. La machine qui s'appelle
nextcloud.velivol.fr est donc différente d'une machine qui pourrait s'appeler mail.velivol.fr.
Un nom de domaine est constitué par une suite de noms séparés par des points. Le système
DNS ne fait pas de différence dans sa notation entre une machine (nextcloud.velivol.fr) et un
domaine (velivol.fr).
Pour chaque domaine et sous domaine (.com, .edu..., .fr...) un responsable est désigné. C'est à
ce responsable d'assurer l'unicité des noms du domaine qu'il gère. Ce système est distribué,
car à aucun endroit de l'Internet il n'existe une base de données complète du système de nom.
Linux en réseau et cohabitation avec Windows
343
Lorsqu'un applicatif veut connaître l'adresse IP d'une machine, il doit demander au résolveur
de lui la donner.
Le fonctionnement du résolveur est basé sur le modèle client serveur. Dans chaque domaine, il
y a une (ou plusieurs) machine qui connaît l'adresse de toutes les machines de son domaine et
les adresses des serveurs de ses sous-domaines.
Le résolveur va donc remonter les différents niveaux de sous domaines et domaines jusqu’à
ce qu'il est l'information attendue.
Linux en réseau et cohabitation avec Windows
344
Installation du service
On va utiliser le paquet bind9 :
⇒ apt-get install bind9
Le paquet dnsutils fournit des outils très pratique pour tester et débugger le service DNS.
⇒ apt-get install dnsutils
Et puis si vous voulez installer en plus la documentation, (très utile) :
⇒ apt-get install bind9-doc
Le premier fichier à modifier est /etc/named.conf.
Linux en réseau et cohabitation avec Windows
345
Scénarios de configuration
BIND9 peut être utilisé de différentes manières. Les configurations les plus fréquentes sont :
Serveur cache : dans cette configuration, BIND9 va effectuer les requêtes DNS et se
rappeler de la réponse pour la prochaine requête. Cette méthode peut être utile pour une
connexion internet lente. En mettant les réponses DNS en cache, on diminue l'utilisation de la
bande passante et (encore plus important) on réduit également le temps de latence.
Serveur maître : utilisé pour contenir les enregistrements DNS d'un nom de domaine
enregistré. Un ensemble d'enregistrements DNS pour un nom de domaine est appelé une
« zone » .
Serveur esclave : un serveur esclave est utilisé en complément à un serveur maître, en
servant de copie à la ou les zones configurées sur le serveur principal. Les serveurs
secondaires sont recommandés sur des gros réseaux. Ceux-ci assurent la disponibilité de la
zone DNS, même si le serveur maître est hors ligne.
Linux en réseau et cohabitation avec Windows
346
Enregistrement AAA
Variante de l’enregistrement A, il fait correspondre une adresse IPv6 à un nom d’hôte.
www IN AAAA ::A
Enregistrement TXT
Il permet de définir un enregistrement contenant un texte libre. Cet enregistrement est
notamment utilisé pour confirmer le détenteur du domaine pour pouvoir utiliser certains
services externes tel que Google Webmaster tools ou encore un service d’envoi de mails.
domain.tld. IN TXT "text"
Configuration
Les fichiers de configuration de BIND9 sont stockés dans /etc/bind
La configuration principale de BIND s'effectue à l'aide du fichier /etc/bind/named.conf.
L'ajout de vos propres zones est possible via le fichier : /etc/bind/named.conf.local.
Les fichiers des zones sont là pour lister les différentes ressources d'un domaine, comme les
serveurs de mails (MX), les serveurs de noms (NS), ou les enregistrements machine/IP (A) et
redirections sous-domaine / autre sous-domaine (CNAME).
Dans ce fichier, on définit un certains nombre de zones. Une zone correspond, soit à une plage
d'adresses IP soit à un nom de domaine.
Le fait de définir ces deux zones qui correspondent à la plage IP permet d'effectuer la
correspondance IP<->nom d'hôte dans les deux sens. Cela veut dire que l'on pourra obtenir
une IP en fonction du nom d'hôte mais aussi un nom d'hôte à partir d'une IP.
Linux en réseau et cohabitation avec Windows
350
Viennent ensuite les enregistrements de machines, ici deux serveurs de noms, ns1 et ns2. Puis
deux serveurs de mail, mx1 et mx2. Les 10 et 20 devant les FQDN des serveurs de noms
indiquent la priorité de chacun des serveurs. Plus la valeur est faible, plus la priorité est
élevée.
Et pour finir, on trouve toutes les autres machines du réseau, voici une petite liste des
principaux types d'enregistrements :
NS : déclare un serveur DNS pour la zone.
@ IN NS ns1.domaine.tld.
MX : déclare un serveur mail pour la zone.
@ IN MX 10 mx1.domaine.tld.
A : réalise le lien entre le nom d'une machine et son adresse IP.
www A 10.50.2.53
AAAA : comme A, mais pour IPv6.
ns1 AAAA 2004:5d0:8fff:fffb::522f
Linux en réseau et cohabitation avec Windows
356
PTR : réalise le lien entre l'IP d'une machine et son nom. Utilisé pour le fichier "reverse".
2 IN PTR www
CNAME : c'est l'alias, permettant de définir un nom par rapport à un autre nom.
php IN CNAME www
TXT : permet d'insérer du texte. Utilisé par exemple pour les SPF Record. Ce champ est
également de plus en plus utilisé pour valider un site dans GoogleWebmasterTools.
wmin TXT "Interface Administration WebMin"
domaine.tld. IN TXT "v=spf1 ip4:10.50.2.60 ~all"
SRV : Très présent dans Active Directory, utilisé pour par exemple enregistrer un serveur
Jabber.
_xmpp-server._tcp 18000 IN SRV 0 0 5269 domaine.tld.
_xmpp-client._tcp 18000 IN SRV 0 0 5222 domaine.tld.
RP : Champ facultatif, qui donne des informations sur le responsable de la zone.
Linux en réseau et cohabitation avec Windows
357
Linux en réseau et cohabitation avec Windows
358
Le fichier « reverse » est sensiblement identique au premier fichier de zone. Seule la ligne
« $ORIGIN », qui indique la zone traitée change, tout comme la forme des enregistrements.
Ces enregistrements sont de la forme :
dernier-bloc-de-l'adresse-IP IN PTR FQDN
Par exemple pour une machine d'IP 10.25.77.33 nommée phplist dans le domaine velivol.fr
:
33 IP PTR phplist.velivol.fr.
Linux en réseau et cohabitation avec Windows
359
Outil de diagnostique
Généralité nslookup
Syntaxe :
nslookup [options] [ nom | - ] [ serveur ]
nslookup (Name System Look Up) est un outil de vérification de fonctionnement du
service DNS.
Il permet d'interroger un serveur de noms afin d'obtenir les informations concernant un
domaine ou un hôte et permet ainsi de diagnostiquer les éventuels problèmes de
configuration du DNS.
Cette commande peut être utilisée aussi bien de manière interactive qu’en ligne de
commande dans un script.
Linux en réseau et cohabitation avec Windows
360
Exemples :
Linux en réseau et cohabitation avec Windows
364
Linux en réseau et cohabitation avec Windows
365
S’il n’y a pas de messages d’erreurs cela signifie qu’il n’y a pas d’erreurs de syntaxe.
Linux en réseau et cohabitation avec Windows
366
Serveur NFS
Principe
Créer un système de fichiers répartis permettant, à des sites clients d'accéder de façon
TRANSPARENTE à des fichiers partagés sur un site serveur distant.
Un site serveur autorise l'accès à tout ou partie de ses systèmes de fichiers.
Les systèmes de fichiers accessibles du serveur sont montés par les sites clients comme des
systèmes de fichiers locaux…
Une machine peut être simultanément client et serveur.
NFS n'est pas sécurisé, il possède une sécurité par hôte, c'est-à-dire que n'importe qui arrivant
à se faire passer pour la machine autorisé (en changeant son IP) peut monter les «export»
NFS sans mot de passe.
Aucun mot de passe n'est requis, juste une IP et un UID/GID.
Linux en réseau et cohabitation avec Windows
368
Fonctionnement NFS
L'accès transparent aux fichiers d'un site serveur demande un montage préalable.
Le protocole NFS se compose en réalité de 5 protocoles qui tous, reposent sur les Remote
Procedure Calls (RPC) et donc le démon portmap (aussi appelé rpc.portmap).
Le démon portmap a pour rôle de convertir les numéros de programmes RPC en numéros de
ports :
Quand un serveur RPC démarre, il va préciser à portmap quel port il utilisera et les numéros
de programmes RPC qu'il gère.
Lors de son lancement portmap scrute le fichier /etc/rpc lui permettant de connaître les
serveurs faisant appel à son service de traduction.
Quand un client souhaite envoyer une requête RPC vers un numéro de programme donné, il
contacte d'abord le serveur portmap pour obtenir le numéro de port sur lequel tourne le
programme souhaité. Ensuite, il adresse les paquets RPC au port correspondant.
Linux en réseau et cohabitation avec Windows
369
Linux en réseau et cohabitation avec Windows
370
quotad : géré par rpc.quotad, il permet de gérer les quotas pour les utilisateurs ayant fait
des montages.
Linux en réseau et cohabitation avec Windows
372
Partage de dossiers
Fichier de configuration /etc/exports
Définit la liste des systèmes de fichiers pouvant être montés par des sites clients distants.
Pour chaque système de fichier exportable, des droits d'accès spécifiques peuvent être
associés.
Ce fichier est scruté par le serveur /usr/sbin/rpc.mountd à chaque requête de montage
provenant du réseau.
Linux en réseau et cohabitation avec Windows
375
Exemple :
Linux en réseau et cohabitation avec Windows
376
rw = read write.
ro = read only (défaut).
sync = les fichiers sont m.a.j. sur disque avant la réponse du serveur.
async = les fichiers sont m.a.j. sur disque indépendamment de la réponse faite par le
serveur (défaut).
all_squash = les uid et gid du client sont positionnés à l’uid et gid anonyme.
root_squash = une requête avec uid et gid 0 (root) sont positionnés à l’uid et gid anonymes
(défaut).
no_root_squash = on laisse l’uid et le gid à 0; un administrateur root distant aura les
prérogatives de l’administrateur du serveur.
Linux en réseau et cohabitation avec Windows
377
Le démon NFSD
Sur un serveur, nfsd traite les demandes clientes.
Sur un client, il permet de traiter les transferts blocs entre caches avec le serveur.
Démarrage de nfsd :
⇒ /etc/init.d/nfs start (ou stop, status, restart)
Linux en réseau et cohabitation avec Windows
378
Le process portmap
Serveur de traduction n° programme RPC <--> n° port Internet.
Service déclaré en /etc/services toujours sur le port n° 111.
Lors de son lancement portmap scrute le fichier /etc/rpc lui permettant de connaître les
serveurs faisant appel à son service de traduction.
Démarrage de portmap :
⇒ /etc/init.d/portmap start (ou stop, restart)
Linux en réseau et cohabitation avec Windows
379
La commande rpcinfo
rpcinfo donne des informations sur les RPC en faisant appel à un serveur « portmap » local
ou distant.
Permet de vérifier qu'un service est disponible en RPC.
Exemple :
Linux en réseau et cohabitation avec Windows
382
La commande nfsstat
Affichage d’informations statistiques relatives aux interfaces RPC et NFS
Syntaxe :
nfsstat [ - c s n r z ]
- c client
- s serveur
- n nfs client et serveur
- r rpc client et serveur
- z raz statistiques
Linux en réseau et cohabitation avec Windows
383
Serveur SAMBA
Principe
Samba est une implémentation open-source de SMB (Server Message Block) et de CIFS
(Common Internet File System) utilisée pour le partage de ressources sur les réseaux
Microsoft.
Des clients Windows peuvent ainsi accéder à des partages de fichiers ou d'imprimantes sur un
serveur Linux. Et réciproquement, Samba dispose d'un client pour que les stations Linux
puissent accéder à des ressources sur des serveurs Windows.
Linux en réseau et cohabitation avec Windows
384
Configuration Samba
Pour la configuration de ce service le principal fichier à modifier est /etc/samba/smb.conf.
Voici quelques options utilisables :
workgroup = le nom du groupe de travail. Les ordinateurs du même groupe de travail se
retrouvent côte à côte dans le voisinnage réseau de Windows.
server string = la description du serveur, qui apparaitra à coté de son nom dans
l'explorateur Windows. Si la description contient le terme %h, il sera remplacé par le nom
d'hôte de la machine.
encrypt passwords = détermine si les mots de passe doivent être chiffrés avant d'être
transmis. C'est fortement recommandé et tous les systèmes Windows à partir de 98 et NT4
SP3 utilisent cette fonctionnalité par défaut.
log file = le nom du fichier qui contiendra le journal des activités du serveur. On peut avoir
un journal par machine client en utilisant %m dans le nom du fichier. Le %m sera remplacé
par le nom de la machine client.
Linux en réseau et cohabitation avec Windows
385
Partage d’imprimantes
Dans la section [printers], vous avez quasiment les mêmes directives que le partage de
fichiers. Nous avons en plus printable pour permettre l'impression ou non.
Dans un premier temps, vous ajoutez une imprimante locale ou réseau au serveur Linux.
Ensuite, paramétrez la section ainsi :
Rechargez la configuration :
Linux en réseau et cohabitation avec Windows
389
Commande mount
Samba n'est plus compilé avec le support de smbfs, aujourd'hui l'option cifs est utilisée :
Le paquet cifs-utils fournit des utilitaires pour gérer les montages des systèmes de fichiers en
réseaux CIFS.
⇒ apt-get install cifs-utils
Syntaxe :
⇒ mount -t cifs //<addresse_IP>/<partage> /mnt/<dossier>
Exemple :
Pour monter le partage data du serveur srv01 dans le point de montage /mnt/srv01 avec
le compte administrateur :
⇒ mount -t cifs //srv01/data /mnt/srv01-data -o user=administrateur
Linux en réseau et cohabitation avec Windows
391
Méthode d’authentification
Les utilisateurs créés avec la commande useradd doivent être ajoutés dans la base de
données samba avec la commande smbpasswd.
Nous pouvons ajouter les utilisateurs samba dans un groupe smbusers. Les dossiers partagés
peuvent avoir ce dernier comme propriétaire.
Exemple :
Linux en réseau et cohabitation avec Windows
392
Linux en réseau et cohabitation avec Windows
394
Linux en réseau et cohabitation avec Windows
396
Outils de diagnostique
La commande «testparm» permet de tester la syntaxe des éléments contenus dans le
smb.conf.
La commande smbstatus affiche les connexions en cours sur le serveur où la commande est
exécutée.
La commande smbtree affiche le voisinage réseau.
Linux en réseau et cohabitation avec Windows
397
Options
Linux en réseau et cohabitation avec Windows
399
Dump
prend la valeur 1 pour les partitions visées par une sauvegarde au moyen de l’utilitaire
dump ou 0 pour les autres.
Pass
0 si la partition ne doit pas être vérifiée par fsck (NTFS par exemple).
1 pour la partition racine.
2 pour les autres partitions Unix.
Linux en réseau et cohabitation avec Windows
400
Maintenant que nous avons terminé la configuration de l'interface réseau, nous pouvons
redémarrer les interfaces réseaux. Pour ce faire, exécutez la commande suivante:
⇒ /etc/init.d/networking restart
Linux en réseau et cohabitation avec Windows
403
Configuration WIFI
Le WIFI est la technologie sans fil utilisée pour se connecter à un réseau informatique (internet
- intranet - local).
L'avantage de ce type de connexion est de s'affranchir du câble souvent contraignant. Le
WIFI permet donc un meilleur confort de l'utilisation du réseau.
La prise en charge du matériel WIFI par Linux est relativement bonne et elle s'améliore sans
cesse.
Linux en réseau et cohabitation avec Windows
404
Pour trouver des infos sur le module du noyau en charge d’activer la carte, tapez la
commande suivante :
⇒ lspci -k | grep -i network -A 2
Les 2 lignes extraites qui nous intéressent ici sont :
Linux en réseau et cohabitation avec Windows
406
Si les commandes lsusb et lspci ne donnent aucune information sur le chipset, tapez la
commande suivante : lshw
Vous obtiendrez plus d'informations, notamment le nom du chipset.
Linux en réseau et cohabitation avec Windows
407
Connexion lente
Si vous remarquez que votre connexion WIFI est anormalement lente et que cela ne vient pas
de votre matériel (carte ou AP) et avant de réinstaller, recompiler…d'autres pilotes :
Vérifiez le Bit Rate de la carte :
⇒ iwconfig wlan0 | iw dev wlan0 link
Si vous voyez Bit Rate=1Mb/s alors tapez :
⇒ ifdown wlan0
⇒ iwconfig wlan0 rate 54M
⇒ ifup wlan0
Linux en réseau et cohabitation avec Windows
410
Installer Linux
Avant d’installer une distribution, faite un test avec Live CD afin de s’assurer que tous les
composants de la machine sont bien reconnus. La plupart des projets de distributions Linux
indiquent sur leur site les matériels certifiés fonctionnant avec leur système (pour Ubuntu, voir la
page http://www.ubuntu.com/certification/catalog/)
Installer Linux
419
Sur un serveur avec beaucoup d'utilisateurs, il est généralement intéressant d'avoir une
grande partition distincte pour /home.
La méthode de partitionnement varie d'un ordinateur à l'autre, en fonction de son usage.
Le swap sous Linux est nécessaire pour faire fonctionner son système de manière optimale,
même avec beaucoup de mémoire. L’espace de swap permet au système d’y inscrire toutes
les données temporaires nécessaires aux fonctionnement des programmes en cours d’exécution
: en gros, on y trouve tout ce qui est utilisé pour la mémoire virtuelle.
Par convention, il est recommandé que la taille de swap fasse entre x1,5 à x2 de la mémoire
RAM disponible sur la machine.
Ainsi, pour 1024 Mo (1Go) de RAM, il est recommandé de réserver 2048 Mo (2Go) de
swap.
Bien sûr, on peut se passer de swap mais si la mémoire physique (RAM) arrive à saturation, le
système risque de se bloquer complètement.
Installer Linux
421
x
Installer Linux
434
Installer Linux
435
BootLoader
Le choix du BootLoader dépend de votre configuration (en terme d'OS installés) et surtout de
vos goûts personnels.
NTLDR (NT LoaDeR) : il permet de gérer seulement les OS Windows. Il a pour fichier de
configuration BOOT.INI qui se trouve à la racine de la partition système.
LILO (LInux Loader) : c’est un chargeur de systèmes d'exploitation spécialement conçu pour
démarrer Linux, mais il est capable de démarrer presque tout type de système
d'exploitation. Il a pour fichier de configuration /etc/lilo.conf.
GRUB (GRand Unified Bootloader) : c’est un chargeur de démarrage à l'instar de LILO. il
est extrêmement flexible et peut charger un système sans enregistrer la position physique du
noyau sur le disque. Toute modification du fichier de configuration /boot/grub/menu.lst est
immédiatement prise en compte.
Installer Linux
437
BIOS
C’est le premier programme qui est exécuté lorsque vous allumez votre ordinateur.
Il est stocké dans la mémoire morte (ROM) de la carte mère de l’ordinateur.
Il exécute et charge tous les périphériques de base, le chargeur d’amorçage et l’ordre
d’amorçage afin de charger le système d’exploitation.
Il exige que votre disque dur utilise la table de partitionnement MBR (Master Boot Record).
Installer Linux
439
UEFI
C’est un programme stocké dans la mémoire flash de la carte mère.
Il permet :
La gestion des disques de plus de 2,2 To.
La prise en charge de fonctionnalités réseaux.
La gestion des architectures 64 bits.
Un démarrage plus rapide de l’ordinateur.
Il exige que votre disque dur utilise la table de partitionnement GPT (GUID Partition Table).
Il peut prendre en charge des fonctionnalités réseau, permettant le dépannage et la
configuration à distance.
Installer Linux
440
Secure boot
Secure boot est le protocole décrit dans les spécifications UEFI qui est chargé d’ajouter le
support de la sécurité. Il a pour but d’assurer l’authenticité et l’intégrité de l’ensemble du
code exécuté pendant la séquence de démarrage par le biais de signatures crytographiques.
Si le démarrage Secure Boot est activé, les fonctions UEFI de chargement de code activent la
validation d'une signature, contenue dans chaque fichier. Sans la signature, ou en cas de
problème de validation, l'UEFI peut bloquer le chargement de tous les programmes et de tous
les pilotes, y compris les systèmes d'exploitation.
Installer Linux
443
Complément d’administration
Installation
Pour installer Webmin sur un serveur Ubuntu 16.04, on commence par installer quelques
dépendances :
⇒ apt-get install -y perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime
libio-pty-perl apt-show-versions python libwww-perl liblwp-protocol-https-perl
On ajoute la clef pour vérifier l’intégrité des paquets du dépôts de Webmin:
⇒ wget -O- http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
On ajoute les dépôts à la fin du fichier sources.list :
⇒ vi /etc/apt/sources.list
Il ne reste plus qu’a mettre à jour la liste des paquets : apt-get update
Et à l’installer : apt-get install webmin
La fin de l’installation détaille la façon de se connecter sur l’interface Webmin, c’est à dire de
se connecter en https://127.0.0.1:10000
Complément d’administration
454
Complément d’administration
455
Cockpit
Cockpit est un gestionnaire de serveur qui facilite l'administration de vos serveurs GNU /
Linux via un navigateur Web. Il permet de découvrir Linux, ce qui permet aux administrateurs
système d’effectuer facilement des tâches telles que le démarrage de conteneurs,
l’administration du stockage, la configuration réseau, l’inspection des journaux, etc.
Cockpit permet de basculer facilement entre le terminal et l’outil Web. Un service démarré
via Cockpit peut être arrêté via le terminal. De même, si une erreur se produit dans le
terminal, elle est visible dans l’interface du journal Cockpit. Cockpit vous permet de surveiller
et d’administrer plusieurs serveurs simultanément. Ajoutez-le simplement et votre serveur
s'occupera de ses amis.
Cockpit est publié sous la licence LGPL v2.1 + et est disponible pour Redhat, CentOS, Debian,
Ubuntu, Atomic et Arch Linux.
Complément d’administration
456
Installation
Le cockpit est inclus dans Ubuntu, vous pouvez donc utiliser la commande apt pour l'installer.
Mise à jour :
⇒ apt-get update
Installer le paquetage Cockpit :
⇒ apt-get install cockpit
Démarrer et activer le cockpit :
⇒ systemctl start cockpit.socket
⇒ systemctl enable cockpit.socket
Pour se connecter à l’interface :
http://127.0.0.1:9090
Complément d’administration
457
Complément d’administration
458
Complément d’administration
459
Network-Manager
C‘est un outil ayant pour but de simplifier l'utilisation d'un ou de plusieurs réseaux sur
GNU/Linux.
Il cherche à garder toujours disponible une connexion réseau active.
Son utilité est la création et la configuration des accès à divers types de réseaux (Internet,
réseau local [LAN], réseau privé virtuel [VPN]…).
Network-Manager peut prendre en charge de nombreux types de connexions (réseau filaire,
réseau sans-fil [Wi-Fi], modem téléphonique, réseau mobile, réseau privé virtuel…).
Network-Manager peut aussi être utilisé pour partager une connexion réseau (généralement
Internet) à d'autres ordinateurs de votre réseau local.
Complément d’administration
460
Installation
Ce paquet permet aux utilisateurs de configurer les cartes réseau câbles ou Wifi facilement.
⇒ apt-get install network-manager
Les outils graphiques de configuration pour Gnome et KDE pourraient aussi être installés.
⇒ apt-get install network-manager-gnome
⇒ apt-get install network-manager-kde
Vérifiez son état d’exécution par la commande :
⇒ service network-manager status
Complément d’administration
461
GParted
Gparted est l'acronyme de « GNOME Partition Editor » (éditeur de partition GNOME)
destiné à créer, réorganiser, modifier et supprimer des partitions de disques. GParted gère la
réorganisation des partitions en préservant leur contenu.
Il supporte de nombreux systèmes de fichiers, y compris btrfs, ext2/ext3/ext4, FAT16/FAT32,
LVM 2, ntfs, xfs, etc.
Installation
Sous Ubuntu tapez :
⇒ apt-get install gparted
Complément d’administration
464
Complément d’administration
465
chown
Changer le propriétaire et/ou le groupe d'un fichier.
Changer le propriétaire d'un fichier.
⇒ chown toto fichier
Changer le groupe d'un fichier (équivalent à chgrp).
⇒ chown :toto fichier
Changer le propriétaire et le groupe d'un fichier.
⇒ chown toto:audio fichier
Comme d'habitude l'option -R permet de traiter récursivement la commande.
Changer l'appartenance d'un répertoire et de tous les fichiers qu'il contient :
⇒ chown -R toto:audio /home/toto/repertoire
Complément d’administration
472
deluser
Supprimer un utilisateur, ou retirer un utilisateur d'un groupe.
Supprimer l'utilisateur toto (son répertoire n'est pas supprimé).
⇒ deluser toto
⇒ deluser toto audio
delgroup
Supprimer le groupe audio
⇒ delgroup audio
Complément d’administration
473
groupadd
Création de groupe avec les options de la commande plus celles par défaut du système.
⇒ groupadd toto
groupdel
Supprimer un groupe.
Le groupe est supprimé du fichier /etc/group.
⇒ groupdel toto
groupmod
Modification des propriétés d'un groupe du système. Les options sont modification de l'ID, du
mot de passe, du nom du groupe.
Modification du GID du groupe scanner.
⇒ groupmod -g 4713 scanner
Modification du nom du groupe1 pour groupe2.
⇒ groupmod groupe2 groupe1
Complément d’administration
474
id
Permet de faire afficher le numéro - uid (comme user id) de l'utilisateur, son groupe principal -
gid, et de quels autres groupes l'utilisateur fait aussi partie.
Exemple :
⇒ id toto
uid=1000(toto) gid=1000(toto)
groupes=1000(toto),20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),
110(netdev)
Complément d’administration
475
passwd
La commande passwd permet de changer son mot de passe. Ou, en root, changer le mot de
passe d'un utilisateur (l'ancien mot de passe est alors demandé).
Elle demande :
1) le mot de passe actuel (Current),
2) le nouveau (New),
3) puis la confirmation du nouveau (New again), afin d'éviter les erreurs.
Remarque : un mot de passe n'est jamais affiché et ne doit jamais l'être.
⇒ passwd
⇒ passwd toto
Complément d’administration
476
useradd
Créer un nouvel utilisateur ou mettre à jour l'information par défaut sur un nouvel utilisateur.
Le résultat est le même que pour la commande adduser, mais la syntaxe est différente.
adduser est une commande interactive : elle pose des questions, il faut y répondre. useradd
est une commande non interactive, il est possible de s'en servir pas exemple dans un script. Le
script adduser en est d'ailleurs un exemple puisqu'il utilise la commande useradd.
Une nouvelle entrée dans les 2 fichiers fondamentaux /etc/passwd et /etc/group.
Ajouter un nouvel utilisateur (Attention, le mot de passe doit être crypté)
⇒ useradd -m -p MotDePasse login
Complément d’administration
477
usermod
La commande usermod modifie les fichiers d’administration des comptes du système selon les
modifications qui ont été indiquées sur la ligne de commande.
Ajouter l'utilisateur toto au groupe audio sans supprimer toto de son groupe originel.
⇒ usermod -aG audio toto
Renommer le répertoire utilisateur et changer son nom. Pratique lorsque le pc change de
mains. (Changer l'utilisateur toto en titi et changer son /home/toto en /home/titi).
⇒ usermod -d /home/titi -m -l titi toto
Complément d’administration
478
userdel
Effacer un compte utilisateur et les fichiers associés. La commande userdel modifie les fichiers
des comptes du système, en supprimant toutes les entrées qui se réfèrent à login. L'utilisateur
nommé doit exister. L'utilisateur ne doit pas être connecté...
Option : -r Les fichiers présents dans le répertoire personnel de l'utilisateur seront supprimés
en même temps que le répertoire lui-même. Les fichiers situés dans d'autres systèmes de
fichiers devront être recherchés et éliminés manuellement.
La commande supprime toute trace de l'utilisateur dans le fichier de configuration :
/etc/passwd y compris dans les groupes d'utilisateurs.
Effacer l'utilisateur "toto" et ses fichiers dans /home/toto
⇒ userdel -r toto
Complément d’administration
479
Struture de /etc/passwd
Complément d’administration
481
Struture de /etc/group
Complément d’administration
482
Struture de /etc/shadow
Complément d’administration
483
Vérification : Cette option permet de comparer les différences entre le package installé et
le package tel qu'il devrait être. Les commandes sont:
Pour vérifier vis-à-vis d'un fichier particulier :
⇒ rpm -Vf NomDuFichier
Pour vérifier tous les packages :
⇒ rpm -Va
Pour vérifier un package particulier :
⇒ rpm -Vp NomDuPackage
Complément d’administration
489
Lorsqu'il n'y a pas d'erreur, le système n'affiche rien. Si par contre une erreur a été détectée
dans le package installé, le système renvoie une chaîne de huit caractères indiquant le type
d'erreur. Voici la signification des caractères :
D: Périphérique
G: Groupe
L: Lien symbolique
M: Mode (Permissions)
T: Date du fichier
S: Taille du fichier
U: Utilisateur
Complément d’administration
490
Désinstaller un paquet :
⇒ yum remove paquet
Si on souhaite désinstaller aussi les dépendances non utilisés :
⇒ yum autoremove paquet
Réinstaller un paquet :
⇒ yum reinstall paquet
Recherche de paquets :
⇒ yum list paquet
Mise à jour des packages : La mise à jour des packages eux-mêmes se fait grâce à la
commande suivante :
⇒ apt-get upgrade
Il est conseillé de lancer cette commande avec le commutateur -u afin de connaître la liste
exacte des paquetages qui vont être mis à jour :
⇒ apt-get -u upgrade
La commande suivant permet également de mettre à jour les paquets en préservant
mieux les dépendances afin de conserver un système plus cohérent :
⇒ apt-get dist-upgrade
Complément d’administration
497
Bzip2 : les fichiers compressés en Bzip2 possèdent l’extension .bz2 pour décompresser ces
fichiers il faut taper en ligne de commande :
⇒ bzip2 -d nom_du_fichier.bz2
Compiler le programme
Lorsque le programme est une archive (et non un RPM ou .DEB) il est généralement nécessaire
de compiler les sources. Bien que la compilation se fasse pratiquement toujours de la même
façon pour la majorité des applications, il est vivement conseillé de lire le fichier INSTALL ou
README pour connaître exactement les commandes nécessaires à la compilation du
programme.
Complément d’administration
503