Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Linux Cours

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 505

Nordine Sabban

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 :

 De l’intégration de solution Open Source


 La haute disponibilité
 L’automatisation d’infrastructure
 La sécurité

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

Qu'est-ce que Linux ?...………………………………………………………p.5 à p.19


Démarrage d’un système Linux………………………………………………p.20 à p.58
L’environnement de travail....…………………………………………………p.60 à p.149
L’environnement graphique...…………………………………………………p.151 à p.187
Gestion des fichiers.………………………………………………………….p.188 à p.249
Gérer les processus.………………………………………………………….p.251 à p.282
Linux en réseau et cohabitation avec Windows……………………….……..p.283 à p.413
Installer Linux...………………………………………………………………p.415 à p.449
Complément d’administration..………………………………………………p.451 à p.504
Sommaire
5

 Qu’est ce que Linux ?

 Les architectures supportant Linux.


 Les logiciels libres, la licence GPL, GNU et Linux.
 Pourquoi tant de distributions Linux ? Et Unix ?
 Où trouver les bonnes sources d'information sur Linux ? La documentation en ligne, les Howto,
les FAQ.
 Sites Web, newsgroups, forums.
Qu’est ce que Linux
6

 Les architectures supportant Linux


 Linux supporte un nombre relativement important d’architecture de processeur.
 Afin de s’y retrouver voici la liste de tous les types d'architecture disponibles sous Linux et
BSD, ainsi que leur signification :
 x86, i386, i486, i586, i686 : Pentium II, Pentium III, Pentium IV, Athlon XP Intel
compatibles PC.
 x86_64, AMD 64 : Intel Core ou ayant emt64 et amd64 pour plateforme AMD
émulant le 64 bits.
 ppc, powerpc : plateforme Apple PowerPC, incluant les systèmes PowerPC
d'origine, G3, G4 et G5.
 sparc : systèmes basés sur les Sparc 32 bits de Sun. L'architecture SPARC est
répandue sur le matériel hébergeant le système d'exploitation UNIX.
Qu’est ce que Linux
7

 sparc64 : systèmes basés sur les UltraSparc 64 bits.


 ia64 : plateforme Intel Itanium 64 bits. Lancée début 2001, les processeurs
Itanium ont toujours souffert de la comparaison avec les autres puces pour Unix et
ont été incapables de suivre la montée en performances des processeurs Xeon du
même Intel.
 hppa: systèmes HP PA-RSIC.
 mips : processeur dédié à l’informatique embarqué, mais également pour les
supercalculateurs.
 arm : processeur dédié à l’informatique embarqué, en particulier sur les mobiles
et tablettes (les puces ARM consomment très peu et qu’elles n’ont aucun besoin de
ventilateur pour se refroidir).
Qu’est ce que Linux
8

 Les logiciels libres


 Un logiciel libre est un logiciel qui est fourni avec l'autorisation pour quiconque de l'utiliser, de
le copier et/ou de le distribuer, sous une forme conforme à l'original ou avec des
modifications, gratuitement ou contre paiement. Ceci veut dire en particulier que son code
source doit être disponible. « S'il n'y a pas de sources, ce n'est pas du logiciel. »
 Mozilla Firefox, Mozilla Thunderbird et LibreOffice sont des exemples de logiciels libres
célèbres.
 La grande majorité des logiciels vendus dans le commerce sont des logiciels propriétaires,
qui sont distribués en version « exécutable », alors que les logiciels libres sont fournis avec
leur « code source ».
 Les logiciels libres sont distribués sous ces deux formes (code source et exécutable), tandis que
Microsoft ou Adobe ne vendent que le code « exécutable » et cachent le reste.
 A la tête de chaque projet de logiciel libre il y a une structure plus ou moins formelle qui est
composée de simples particuliers et/ou d'entreprises.
Qu’est ce que Linux
9

 GNU (GNU’s Not Unix)


 Scandalisé par les restrictions imposées par les logiciels propriétaires, Richard Stallman
lance, en 1983, le projet GNU, qui a pour but de développer un système d'exploitation libre
complet et inspiré d’Unix, afin de contrer le développement croissant des logiciels
propriétaires. L'histoire raconte que c'est une histoire de pilote d'imprimante qui lui a fait
prendre conscience du danger de la logique propriétaire.
 Richard Stallman est considéré par tous comme le père des logiciels libres.
 Richard Stallman est en outre un programmeur de talent, et l'auteur de nombreux logiciels
libres dont l'éditeur GNU Emacs, le compilateur GCC, le débuggeur GDB et participe
activement au développement d'autres logiciels libres.
Qu’est ce que Linux
10

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

 Une distribution GNU/Linux


 Linux ne se suffit pas à lui-même. Avec un simple noyau, on ne peut rien faire. Le noyau Linux
est donc fourni à l'intérieur de distributions.
 Une distribution GNU/Linux, c'est un ensemble cohérent de plusieurs choses :
 Un noyau Linux ;
 Un ensemble de logiciels de base issus du projet GNU ;
 D'autres programmes, en libres (un navigateur Web, un lecteur de courrier, un serveur FTP,
etc…), issus d'autres projets ;
 Éventuellement, quelques logiciels propriétaires ;
 Une méthode pour installer et désinstaller facilement ces programmes ;
 Un programme d'installation du système d'exploitation.
Qu’est ce que Linux
14

 Pourquoi tant de distribution Linux ? Et Unix ?


 GNU/Linux étant gratuit, différentes sociétés l'on reprit et complété afin de distribuer un
système d'exploitation à leur goût. C'est ce qu'on appelle les distributions.
 Parmi les plus connues, citons RedHat, Fedora, Mandriva, Debian, Suse, Slackware, Gentoo,
Ubuntu, CentOS...
Qu’est ce que Linux
15

 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

 Quelle différence entre ces distributions ?


 L'orientation : par exemple, les RedHat sont très orientées serveurs d'entreprise
(bases de données, serveurs web...), Mandriva et Ubuntu sont plus orientées vers les
utilisateurs de bureautique et les internautes, Flonix est conçue pour démarrer
directement à partir d'une clé USB, etc.
 La façon dont elles sont "fabriquées" : par exemple, la RedHat est conçue par une
grosse entreprise, alors que la Debian est conçue de façon plus démocratique
(participation des internautes).
 Le prix : certaines sont payantes (RedHat, Mandriva...), d'autres gratuites (Fedora,
Debian...). Notez qu'il arrive de devoir payer pour les distributions gratuites, mais le
prix ne sert qu'à couvrir le support (CD), les frais d'envoi et d'éventuels manuels
papier. Rien ne vous empêche de les télécharger et les graver vous-même.
Qu’est ce que Linux
17

 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

 Ainsi deux branches de développement des sources virent le jour :


 La branche d'AT&T qui allait devenir System V de UNIX.
 BSD (Berkeley Software Developpement) développé par l'Université de Californie.
 En 1977 AT&T mit les sources d'UNIX à la disposition des autres entreprises, si bien qu'un
grand nombre d'UNIX-like furent développés :
 AIX, Unix commercial basé sur System V développé en février 1990 par IBM.
 Sun Solaris, Unix commercial basé sur System V et BSD développé par SUN Microsystems.
 HP-UX, Unix commercial basé sur BSD développé à partir de 1986 par Hewlett Packard.
 Ultrix, Unix commercial développé par DEC.
 Unixware, Unix commercial développé par Novell.
 Unix SCO, Unix commercial basé sur System V développé dès 1979 par Santa Cruz
Operations et Hewlett Packard.
 Tru64 UNIX, Unix commercial développé par Compaq.

Qu’est ce que Linux
19

 Où trouver les bonnes sources d’informations sur Linux ?

 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

 Le démarrage d’un système Linux

 Le boot, démarrage du noyau.


 Les fichiers sollicités et leurs rôles (grub, lilo, inittab).
 La philosophie des runlevels.
Démarrage d’un système Linux
21

 Le boot, démarrage du noyau


Démarrage d’un système Linux
22

 La séquence de Boot : BIOS

 Le power-on self-test (POST, l’auto-test au démarrage) désigne la première étape du processus


plus générale appelé amorçage. Lors de cette étape, le programme intégré à la carte-mère
(le BIOS pour Basic Input/Output System) teste la présence des divers périphériques et tente
de leur attribuer les ressources nécessaires à un fonctionnement sans conflit. Le POST terminé, le
contrôle sera cédé au système d’exploitation, qui éventuellement corrigera ou affinera les
réglages du BIOS.
Démarrage d’un système Linux
23

 La séquence de Boot : MBR


Démarrage d’un système Linux
24

 La séquence de Boot : Boot Loader


Démarrage d’un système Linux
25

 Chargeur de noyau : LILO et GRUB


Démarrage d’un système Linux
26

 Configuration de GRUB
Démarrage d’un système Linux
27

 Exemple de fichier grub.cfg

 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

 Exemple de fichier LILO


Démarrage d’un système Linux
30

 Récapitulatif
Démarrage d’un système Linux
31

 La philosophie des runlevels


 Démarrage du premier processus
Démarrage d’un système Linux
32

er
 Après le lancement du 1 processus
Démarrage d’un système Linux
33
Démarrage d’un système Linux
34

 Mécanisme historique « System V »


Démarrage d’un système Linux
35

 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

 Les scripts de démarrage Runlevel Changes


 Un script RC permet le démarrage et l’arrêt d’un service.
 Les scripts commençant par S = démarrage auto au boot du système.
 Les scripts commençant par K = arrêt auto au l’arrêt du système.
 Les scripts doivent être dans le bon répertoire /etc/rc.d/rcX.d ou X représente le runlevel
 Dans ces répertoires, on trouve des liens symboliques vers des scripts du dossier /etc/init.d/.
Ce dernier dossier contient les scripts de démarrage des services. Cela permet de n'avoir
qu'une seule copie d'un script de démarrage.
 On trouve donc dans les répertoires /etc/rc.d/rcX.d deux types de scripts : ceux commençant
par «S» et ceux commençant par «K». Seuls les scripts commençant par S sont exécutés au
démarrage.
Démarrage d’un système Linux
37

 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

 Exemple de fichier /etc/inittab


Démarrage d’un système Linux
41

 Conclusion sur System V


Démarrage d’un système Linux
42

 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 s'exécute comme démon en tant que PID 1.


 systemd se manipule grâce à la commande systemctl.
 Les taches de systemd sont organisées en tant qu'unités. Les unités les plus courantes sont les
services (.services), les points de montage (.mount), les périphériques (.device), les sockets
(.socket) ou les minuteurs (.timer). Par exemple, le démarrage du démon shell sécurisé est
effectué par l'unité ssh.service.
 Systemd place chaque service dans un groupe de contrôle (cgroup) dédié au service. Les
noyaux modernes prennent en charge l'isolation des processus et l'allocation des ressources en
fonction des groupes de contrôle.
 Les cibles (targets) sont des groupes d'unités. Les cibles appellent les unités pour assembler le
système. Par exemple, graphical.target appelle toutes les unités nécessaires pour démarrer un
poste de travail avec une interface utilisateur graphique. Les cibles peuvent se superposer ou
dépendre d'autres cibles. Au démarrage, systemd active la cible default.target qui est un
alias pour une autre cible telle que graphic.target.
Démarrage d’un système Linux
44

 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

 Les principaux différents types sont :


 service : pour un service système ;
 socket : pour une socket de communication entre processus (de tous types : UNIX, Internet,
fichier etc.) ;
 busname : pour les logiciels de communication inter-processus (par exemple dbus) ;
 target : macro-unité qui permet de grouper plusieurs unités (exemple : multi-user.target pour
définir une cible) ;
 path : pour l'activation d'un service basée sur la modification de fichiers ou de répertoires
(typiquement pour les files d'attente lors de l'impression) ;
 mount : pour un système de fichiers (exemple : home.mount), tout en utilisant /etc/fstab ;
 automount : pour un système de fichiers monté à la demande ;
 swap : pour les partitions de swap ;
 device : pour un périphérique ;
Démarrage d’un système Linux
47

 timer : pour l'activation basée sur une date ;


 slice : sert pour la gestion des cgroups, une fonctionnalité du noyau Linux pour limiter,
compter et isoler l'utilisation des ressources ;
 scope : utilisé par systemd lui-même pour gérer des groupes de processus, typiquement, par
session utilisateurs ;
 snapshot : unités utilisées pour sauvegarder l’état actuel des services et les restaurer
ensuite, par exemple avant de passer en veille.
Démarrage d’un système Linux
48

 Gestion des services


 Un démon est un petit programme qui a pour but d'assurer une tâche particulière.
 Pour faire une action sur un service, c'est facile, on fera :
 systemctl <action> <nom_du_service>.service.
 Par exemple pour le service NetworkManager, on fera des commandes du type :
 systemctl start NetworkManager.service
 Pour démarrer le service :
 systemctl start application.service
 Pour arrêter le service :
 systemctl stop application.service
 Pour redémarrer un service qui est lancé, faites :
 sudo systemctl restart application.service
Démarrage d’un système Linux
49

 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

 Information sur un service


 Pour voir tous les services disponibles et leur statut, y compris les services de statut inactif :
 systemctl list-unit-files --type=service --all
 Pour vérifier si le service est démarré, arrêté, afficher des informations pour le niveau
d'exécution en cours :
 systemctl status application.service
 Pour voir si le service est actuellement démarré :
 systemctl is-active application.service
 Pour vérifier si le service sera démarré au démarrage du système :
 systemctl is-enabled application.service
 Pou vérifier qu'il y a eu un problème lors du démarrage d'un service :
 systemctl is-failed application.service
 Pour voir tous les services qui ont un problème :
 systemctl --failed --type=service
Démarrage d’un système Linux
51

 Les niveaux d'exécution


 Une cible systemd est un mode de fonctionnement du système (mode graphique, non
graphique etc.) qui correspond à un démarrage d'un certain nombre de services.
 Les alias commençant par « runlevel » sont là pour les gens qui ont l'habitude de SysVinit.
Démarrage d’un système Linux
52

 Pour savoir dans quel cible on se trouve, on fera :


 systemctl get-default
 Pour changer la cible d'exécution définitivement, afin que cela soit pris en compte au
démarrage du système, on utilisera set-default. Ainsi, pour passer en mode utilisateur unique
(mode non graphique), on fera :
 systemctl set-default multi-user.target
 De même, pour être en mode multi-utilisateur graphique par défaut :
 systemctl set-default graphical.target
 Pour changer la cible d'exécution temporairement, on fera la commande systemctl isolate
<cible>.target. Par exemple, pour passer en mode utilisateur unique (mode non graphique),
on fera :
 systemctl isolate multi-user.target
 ou
 systemctl isolate runlevel3.target
Démarrage d’un système Linux
53

 Pour passer mode maintenance avec un système de fichier local monté :


 systemctl rescue
 Passer en mode maintenance avec seulement /root monté :
 systemctl emergency
Démarrage d’un système Linux
54

 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

 On peut connaître le temps de démarrage global grâce à systemd-analyze time :


Démarrage d’un système Linux
57

 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

 Pour Analyser le démarrage en format graphique


 systemd-analyze plot > boot.svg
Travaux pratiques
59

 Le démarrage commenté d’un système Linux en


mode « pas à pas ».
Sommaire
60

 L’environnement de travail

 L'éditeur de texte vi.


 L’éditeur de texte nano.
 La ligne de commande (bash).
 Le décodage d'une ligne de commande : $,*,',",`, etc.
 Les redirections et les pipes (>,|).
 Les caractères spéciaux (synthèse).
 Le lancement de la commande (alias, fonction, commande interne, PATH).
 L'environnement texte : les fichiers bashrc, .bash_profile, .bash_history…
 Les principales variables du bash (PS1, HOME, PATH...).
L’environnement de travail
61

 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

 L’éditeur de texte nano


 La commande principale pour ouvrir l’éditeur est : nano fichier
 Après avoir exécuté la commande, vous serez dirigé vers la fenêtre de l’éditeur, où vous
pourrez maintenant utiliser et éditer votre texte avec l’éditeur de texte nano. Utilisez les
touches fléchées de votre clavier pour déplacer le curseur.
L’environnement de travail
69

 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

 Le shell principe de base


 Le shell (qui signifie coquille en anglais) est un programme qui sert d'interface en mode texte
entre le noyau et l'utilisateur.
 Le shell est une interface en mode texte dont le clavier est l'entrée et l'écran la sortie. Le shell
de connexion est le premier shell dont l'utilisateur dispose.
 A l'époque des terminaux, les shells étaient la seule manière d'accéder au système.
Aujourd'hui, les shells ouverts dans une fenêtre de terminal restent l'interface préférée des
administrateurs systèmes, notamment pour écrire des scripts shell.
 Pour accéder à la ligne de commande, il nous faut un terminal.
L’environnement de travail
75

 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

 Les différents types de shell


 Il peut-être plus pratique pour telle ou telle tâche d’utiliser un shell en particulier, comme il
peut-être préférable dans certaines circonstances d’utiliser un langage de programmation
plutôt qu’un autre.
 Pour ce faire, il est bon de les connaître. Ici nous allons plutôt nous attacher à la description
de Bash qui contient les bases qui vous permettront de facilement appréhender les autres
interprètes.
L’environnement de travail
77

 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

 Modifier l’interpréteur de commande d’un utilisateur


 Le fichier /etc/shells contient une liste des shells de connexion sur le système. Les applications
utilisent ce fichier pour déterminer si un shell est valide. Pour chaque shell, une ligne devrait
être utilisée, consistant dans le chemin du shell, lié à la racine de la structure du répertoire (/).
 Mettre par défaut l'interpréteur de commande BASH pour l'utilisateur toto.

 L'option -s permet d'indiquer l'interpréteur de son choix.


L’environnement de travail
79

 Le programme chsh s'appuie sur le fichier /etc/shells pour fournir la liste des interpréteurs à
utiliser.
L’environnement de travail
80

 Les atouts de la ligne de commande


 Rapidité : il est toujours plus rapide d’utiliser la ligne de commande qu’une interface
graphique.
 Expressivité : la ligne de commande permet d’exprimer efficacement des idées
complexes de manière compacte.
 Automatisation : si l’on sait effectuer une opération une fois, il est très simple de la
réaliser un grand nombre de fois. C’est l’ordinateur qui doit travailler à notre place et
non l’inverse.
 Personnalisation : il est très facile de créer des raccourcis pour les opérations que l’on
effectue couramment.
 Puissance : la ligne de commande permet de combiner efficacement des opérations
élémentaires pour réaliser des opérations complexes.
 Rentabilité : l’apprentissage de la ligne de commande est un investissement pour gagner
du temps par la suite.
L’environnement de travail
81

 Le décodage d’une ligne de commande


 Lorsque l’on s’initie à la ligne de commandes, il est nécessaire de commencer par les
commandes incontournables, à savoir celles qui sont liées à des tâches courantes comme la
création de fichiers ou de répertoires, la copie ou la suppression de fichiers, l’accès au
contenu d’un fichier, mais aussi toutes les commandes qui permettent de se déplacer
rapidement dans l’arborescence de votre système.
 Pour se familiariser avec la ligne de commandes, rien de tel que d’effectuer quelques
opérations simples sur les fichiers et répertoires, histoire de bien maîtriser son environnement,
de pouvoir se balader dans son système de fichiers et d’organiser ses documents en toute
facilité.
 Toutes les lignes de commande ont cette syntaxe :
 command [options] [arguments]
L’environnement de travail
82

 Naviguer parmi ses fichiers


L’environnement de travail
83

 Chemin absolu ou relatif ?


 Pour indiquer un fichier au shell, sachez que son nom seul ne suffit pas. À moins de se trouver
dans le même répertoire que le fichier en question.
 La référence exacte à un fichier est appelée « chemin » (c’est en quelque sorte son adresse,
son emplacement dans le système) ; il indique précisément dans quel répertoire se trouve le
fichier. Sous Linux, les noms des répertoires et des fichiers au sein d’un chemin sont séparés
par un slash / (contrairement aux systèmes Windows, où le séparateur est un anti-slash \).
 Notez que plusieurs fichiers peuvent porter le même nom, du moment qu’ils ne se situent pas à
la même adresse (même répertoire donc).
L’environnement de travail
84

 On distingue ainsi deux types de chemins :


 Un chemin absolu prend pour référence le début de l’arborescence de fichiers, à savoir la
racine ; il commence donc toujours par le symbole /.
 Un chemin relatif dépend du répertoire courant où se trouve l’utilisateur au moment où il fait
référence au fichier.

 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

 Créer et supprimer un répertoire


 La création d’un répertoire se fait avec la commande mkdir (make directory), suivie du nom
du répertoire à créer. Le répertoire est alors crée dans le répertoire courant : mkdir Dossier
 Pour créer un répertoire et son sous-répertoires simultanément, on ajoute l’option -p : mkdir -p
Dossier/SousDossier1/sousdossier2
 La suppression d’un répertoire vide s’effectue avec la commande rmdir (remove directory). Si
le répertoire n’est pas vide, le système refuse de vous obéir : rmdir tests/
 L’option -p permet de supprimer le répertoire ciblé, ainsi que son (ou ses) répertoire(s)
parent(s). rmdir -p Dossier/tests, va supprimer non seulement le répertoire tests/ mais aussi le
répertoire Dossier/ par la même occasion.
 La commande rm, qui permet de supprimer des fichiers utilisée avec l’option -r permet
également de supprimer un répertoire et son contenu de façon récursive, autrement dit la
suppression concerne également les sous-répertoires : rm -r tmp/
 Si vous ajoutez l’option -f, les fichiers protégés en écriture seront également
supprimés, sans vous demandez la moindre confirmation : rm -rf tmp/
L’environnement de travail
87

 Créer, dépalcer et supprimer des fichiers


 La copie des fichiers s’effectue via la commande cp (copy). On l’utilise en respectant la
syntaxe suivante :
⇒ cp <fichier(s)_à_copier> <répertoire_de_destination>
 Il est possible de copier tout un répertoire de façon récursive en ajoutant l’option -r :
⇒ cp -r <répertoire(s)_à_copier> <répertoire_de_destination>
 Le déplacement de fichiers et de répertoires s’effectue avec la commande mv (move) :
⇒ mv <fichier/répertoire_à_déplacer> <répertoire_de_destination>
 mv peut également être utilisé pour renommer un fichier ; dans ce cas, elle prend en
paramètre le nom du fichier en question, suivi de son nouveau nom :
⇒ mv document.txt contrat.txt
L’environnement de travail
88

 Pour supprimer un fichier, on utilise la commande rm (remove) suivie du nom du fichier


concerné : rm <fichier_à_supprimer>
 L’option -f permet de supprimer les fichiers protégés en écriture sans pour autant avoir à
confirmer cette action.
 Et pour supprimer tout le contenu d’un répertoire (fichiers et sous- répertoires y compris), on
se positionne dans ledit répertoire et on exécute : rm -rf *
L’environnement de travail
89

 Lire ou étudier le contenu d’un fichier


 Pour simplement visualiser le contenu d’un fichier sans possibilité d’édition, trois commandes
sont à retenir : cat, more et less .Il suffit de les faire suivre du nom (ou du chemin) du fichier
qui vous intéresse.
 cat : affiche tout le contenu du fichier dans le terminal et vous rend la main immédiatement;
 more : permet de visualiser le contenu du fichier page-par-page; on passe d’une page à
l’autre à l’aide de la touche [Espace];
 less : à la différence de more, ne charge pas le fichier dans son intégralité avant de
commencer à l’afficher ; c’est pourquoi il est préférable d’utiliser less plutôt que more dans
le cas de gros fichiers.
L’environnement de travail
90

 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

 Utilisation des jokers


 Il est fréquent qu'une commande fasse référence à un fichier, ou utilise, un fichier. On peut
toutefois vouloir appliquer une commande à plusieurs fichiers, parfois en très grand nombre :
le fait de retaper la commande pour chaque fichier peut devenir rapidement fastidieux.
 C'est pourquoi il existe les caractères jokers : leur rôle est de remplacer une ou plusieurs
lettres dans un nom de fichier, de la même manière que le joker d'un jeu de cartes remplace
la carte manquante.
 Ce sont des caractères spéciaux qui sont interprétés.
L’environnement de travail
93
L’environnement de travail
94
L’environnement de travail
95
L’environnement de travail
96
L’environnement de travail
97

 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.

 Il suffit d'entourer la commande avec les caractères de substitution :


 Les quotes inversés `commande`
 $(commande)
L’environnement de travail
98

 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

 Les entrées/sorties des processus


 Chaque processus possède 3 flux standards qu'il utilise pour communiquer en général avec
l'utilisateur :
 stdin, appelé entrée standard, dans lequel le processus va lire les données d'entrée. Par
défaut stdin correspond au clavier. STDIN est identifié par le numéro 0.
 stdout, appelé sortie standard, dans lequel le processus va écrire les données de sortie. Par
défaut stdout correspond à l'écran. STDOUT est identifié par le numéro 1.
 stderr, appelé erreur standard, dans lequel le processus va écrire les messages d'erreur. Par
défaut stderr correspond à l'écran. STDERR est identifié par le numéro 2
 Le flux est le canal par lequel vont transiter les données entre les espaces, internes et
externes, du programme.
 Ces flux peuvent être redirigés afin que le processus interagisse avec un autre au lieu
d'interagir avec l'utilisateur.
L’environnement de travail
100
L’environnement de travail
101

 Les redirections de base


 Commençons par quelques redirections de base, celles qu'il faut connaître et qui sont
employées systématiquement.
 Pour nous exercer, nous allons utiliser principalement deux commandes :
 echo : permet d'écrire un message spécifié en tant qu'argument sur sa sortie standard.
 cat : permet d'afficher le contenu d'un fichier passé en argument sur sa sortie standard ou
de répéter son entrée standard sur sa sortie standard.
 Rappelez vous que par défaut, la sortie standard est affichée dans le terminal et l'entrée
standard est le clavier de l'utilisateur.
L’environnement de travail
102

 Les redirections de sortie >


 Ce type de redirection permet d'indiquer à un processus que tout ce qui devrait aller sur la
sortie standard (par défaut, le terminal), doit plutôt être stocké dans un fichier.
 Pour ça, on utilise la syntaxe > [fichier] :
L’environnement de travail
103

 Les redirections d’entrée <


 À l'inverse, on peut aussi spécifier à un programme qu'il doit utiliser un fichier comme son
entrée standard, à la place du clavier de l'utilisateur.
 En réutilisant notre fichier message, on peut par exemple faire :

 Notez qu'on utilise bien cat sans argument, il utilise donc l'entrée standard.
L’environnement de travail
104

 Sortie standard : sdtout


 L’opérateur de redirection > redirige la sortie standard stdout (canal 1), qui est l’écran par
défaut, vers un fichier. Si ce dernier n’existe pas un nouveau fichier est alors créé, sinon il est
écrasé.
 Ceci peut être gênant dans le cas où le contenu du fichier doit être conservé. Dans cette
situation, l’utilisation de l’opérateur de redirection >> est privilégié. Avec cet opérateur, si le
fichier n’existe pas un nouveau est créé, sinon les données sont ajoutées à la fin du fichier.
L’environnement de travail
105

 > ou 1> redirige la sortie standard stdout dans le fichier list.txt

 >> ou 1>> redirige la sortie standard stdout en mode ajout dans le fichier list.txt
L’environnement de travail
106

 Sortie d’erreur standard : sdterr


 La redirection de la sortie d’erreur standard stderr (canal 2) est régie par les mêmes règles
que la redirection de la sortie standard stdout à la différence que le numéro de canal doit
être mentionné avant l’opérateur de redirection > ou >>.
L’environnement de travail
107

 2> redirige la sortie d’erreur stderr dans le fichier error.log

 2>> redirige la sortie d’erreur stderr en mode ajout dans le fichier error.log
L’environnement de travail
108

 Entrée standard : sdtin


 La redirection de l’entrée standard stdin (canal 0), par défaut le clavier, est moins courante
que la redirection des sorties. Néanmoins, utilisée à bon escient, elle peut être d’une grande
utilité. Pour interagir avec les flux d’entrée, deux opérateurs sont disponibles. L’opérateur <
permet d’utiliser des données provenant d’un fichier au lieu du clavier. L’opérateur << token,
lit l’entrée standard jusqu’à la première occurrence de mot clef « token ». Par défaut, les
variables et commandes entre backticks (`) sont évaluées et les caractères spéciaux devront
être verrouillés par des backslash (\). Ceci peut-être évité en mettant le mot clef de
l’opérateur entre apostrophes (') ou entre guillemets (").
L’environnement de travail
109

 < redirige le fichier inputFile.txt dans l’entrée standard stdin

 << 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

 L’ordre d’utilisation des redirections est important.


 La commande suivante ajoute « Bonjour » au fichier hello.txt.

 Alors que la commande suivante affiche « Bonjour » sur stdout.


L’environnement de travail
118

 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’entrée standard stdout dans /dev/null

 Redirige l’erreur standard stderr dans /dev/null

 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

 Redirige la sortie standard stdout de la commande ls dans l’entrée standard stdin de la


commande less.

 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

 Les caractères spéciaux du shell


 Les caractères spéciaux du shell sont des caractères qui, sauf indications contraires, sont
interprétés par le shell pour exécuter certaines opérations.
L’environnement de travail
123

 Liste des caractères spéciaux

 & processus en arrière en plan


 ~ home directory
 ; séparateur de commandes
 \ annulation d’un caractère spéciale
 ‘’ double quotes encadre une chaîne de caractères et annule la signification de $, \ et '
 ` back quotes : substitution de commandes
 '' simples quotes : encadre une chaîne de caractères et annule la signification de tous les
caractères spéciaux
 # commentaire
 () exécution d’un shell fils
L’environnement de travail
124

 | 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 caractères de protection


 Les caractères de protection servent à utiliser les caractères spéciaux du shell comme
n'importe quels caractères.
 Les simples quotes : les simples quotes désactivent tous les caractères spéciaux du shell. Ils
doivent être utilisés en nombre pair sur une ligne de commande.
L’environnement de travail
126

 L'antislash '\' : l'antislash désactive la fonctionnalité du caractère qui le suit.

 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 ?

 Dans ce cas, la résolution se fait en plusieurs étapes, dans cet ordre :


 Le shell courant regarde dans la liste des alias, puis dans la liste des mots clé si
ma_commande existe, s'il ne trouve rien il passe à l'étape suivante;
 Le shell courant regarde dans la liste des fonctions shell si ma_commande existe, s'il ne
trouve rien il passe à l'étape suivante;
 Le shell courant regarde dans la liste des commandes internes si ma_commande existe, s'il
ne trouve rien il passe à l'étape suivante;
 Le shell courant regarde dans le PATH si ma_commande correspond à un programme, s'il
ne trouve rien il passe à l'étape suivante;
 Le shell provoque une erreur du genre "ma_commande: commande introuvable".
L’environnement de travail
131

 Essayons de résoudre la commande echo :

 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 echo correspond aussi à une commande externe.


L’environnement de travail
132

 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é.

 Ajout d'un alias :


⇒ alias nom='commande -arguments'
 Exemple : alias cls='clear'

 Retirer un alias :
⇒ unalias nom
 Exemple : unalias cls
L’environnement de travail
133

 Introduction aux scripts shell


 Un script shell permet d'automatiser une série d'opérations. Il se présente sous la forme d'un
fichier contenant une ou plusieurs commandes qui seront exécutées de manière séquentielle.
 Un script commence par une ligne de commentaire contenant le nom du langage à utiliser
pour interpréter ce script, soit dans notre cas : /bin/sh (on parle alors de "script shell")
 Le shebang, représenté par #!, est un en-tête d'un fichier texte qui indique au système
d'exploitation que ce fichier n'est pas un fichier binaire mais un script (ensemble de
commandes); sur la même ligne est précisé l'interpréteur permettant d'exécuter ce script. Pour
indiquer au système qu’il s’agit d’un script qui sera interprété par Bash on placera le
shebang sur la première ligne : #!/bin/bash
L’environnement de travail
134

 É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

 Pour exécuter un script


 Il faut le rendre exécutable avec la commande chmod. Pour ceci tapez la commande qui suit :
chmod +x nom_du_script
 Puis vous pouvez exécuter le script en faisant : ./nom_du_script
 Mais pourquoi le ./ ?
 Il peut être intéressant d'ajouter un répertoire au « PATH » pour pouvoir exécuter ses scripts
sans avoir à se placer dans le bon dossier. Je m'explique, quand vous tapez une commande
(« ls » par exemple), le shell regarde dans le PATH qui lui indique où chercher le code de la
commande.
 Pour voir à quoi ressemble votre PATH, tapez dans votre console :
 echo $PATH
 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 C'est à dire que le shell va aller voir si la définition de la commande tapée (« ls » pour
continuer sur le même exemple) se trouve dans /usr/local/bin puis dans /usr/bin... jusqu'à ce
qu'il la trouve.
L’environnement de travail
136

 Ajouter un répertoire au PATH


 Pour pouvoir utiliser mes scripts en tapant directement leur nom (sans le « ./ ») depuis
n'importe quel répertoire de mon ordinateur, il suffit d'indiquer au shell de chercher aussi
dans le nouveau dossier en l'ajoutant au PATH. Dans notre exemple, si votre répertoire
personnel est /home/toto, ce répertoire sera donc /home/toto/bin. Pour ceci, il suffit de faire
:
export PATH=$PATH:/$HOME/bin
 Tapez la commande echo $PATH

 On peut lancer le script appelé « monScript » situé dans « /home/toto/bin » en tapant


directement : monScript
L’environnement de travail
137

 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

 L’environnement texte : les fichiers bashrc, .bash_profile,


.bash_history,…
 Initiation du shell
 A chaque démarrage du shell, celui-ci exécute un certain nombre de fichiers exécutables
avant de présenter l'invite de commande.
 Le shell interactif invoqué après la connexion est le shell spécifié dans le dernier champ de
l'entrée de l'utilisateur, tel qu'indiqué dans le fichier /etc/passwd.
L’environnement de travail
139

 Les scripts de connexion


1) Le script global /etc/profile est exécuté par tous les usagers y compris root. Ce fichier est
chargé quel que soit le shell utilisé (en particulier Bash) et quel que soit l'utilisateur. Il ne doit
pas contenir d'instruction spécifiques à Bash, car sinon cela risque de perturber les autres
shells.
2) Celui-ci cherche à exécuter tous les scripts /etc/profile.d/*.sh.
3) Puis il y a exécution du script personnel $HOME/.bash_profile (la variable $HOME contient
le chemin vers le répertoire personnel). Il s'agit ainsi d'un fichier de démarrage personnel et
paramétrable. Si .bash_profile n’existe pas alors il cherche à exécuter .bash_login. Ce
fichier est spécifique à un utilisateur (en tant que fichier situé dans son home directory) quand
il se loggue. Ce fichier n'existe pas forcément, donc si vous en avez besoin n'hésitez pas à le
créer. Si .bash_login n’existe pas à son tour alors il cherche à exécuter .profile.
L’environnement de travail
140

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

 Personnalisation des commandes Bash


 /etc/bash.bashrc étant le dernier script d'initialisation du Shell Bash, root peut y définir des
alias globaux pour tous les usagers.
 Chaque utilisateur peut ajouter des commandes Shell au fichier de profil personnel,
~/.bash_profile ou ~/.bashrc. Voici un exemple :

 L'historique des commandes tapées est dans le fichier : .bash_history


L’environnement de travail
142

 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

 Supprimer une variable d’environnement


 La suppression d'une variable peut se faire avec la commande « unset » qui est faite pour
effacer complètement une variable d'environnement (pour la session en cours !) : unset $VAR
 On pourra ensuite vérifier que la variable a été correctement supprimée avec la commande
d'affichage des variables d'environnement : env
L’environnement de travail
145

 Quelques variables d’environnement


L’environnement de travail
146

 Invite de commande le prompt


 Le prompt est la première source d’information transmise à l’utilisateur ou à l’administrateur.
 La variable de personnalisation du prompt sous Bash est $PS1.
 L’utilisateur désireux de modifier l’affichage de son prompt définira ses nouveaux paramètres
dans « ~/.bashrc » ou « ~/.bash_profile ».
 L'invite de commande se décompose ainsi :

 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

 Certaines variables ont un sens spéciale


Travaux pratiques
150

 Personnalisation de son environnement de travail


(prompt, alias, PATH, .bashrc…).
Sommaire
151

 L’environnement graphique

 Rôle et paramétrage du serveur X (xorg.conf, gdm.conf, DISPLAY...).


 Travailler sous GNOME ou KDE (librairies concernées, applications spécifiques) ?
 Les applications graphiques utiles.
 Les navigateurs, mails, gestionnaire de fichiers, traitements de texte, bookmarks
déportés.
 Les antivirus multi-plateformes sous Linux, gravure, multimédia…
 Tout faire avec un navigateur (usermin).
L’environnement graphique
152

 Rôle et paramétrage du serveur X


 A quoi sert le serveur graphique ?
 Le serveur graphique donne la possibilité d’afficher une interface graphique dans
GNU/Linux. Une interface graphique est un ensemble de fenêtres avec barres, boutons et
décorations. L’interface graphique permet l’usage de la souris. En anglais on dit GUI (=
graphical user interface). Dans GNU/Linux, le serveur graphique s’appelle X mais on dit aussi
X window (attention, pas de s final, rien à voir avec le système, ou OS M$Windows).
 En fait, quand votre GNU/Linux démarre, le serveur graphique ne se met en route que
tardivement, au moment où apparaît l’écran de login. Ce dernier vous donne accès au bureau
si vous y mettez votre nom d’utilisateur et votre mot de passe.
 Pour que le serveur graphique fonctionne, il faut qu’il y ait une carte graphique dans votre
UC et qu’elle soit reconnue par le noyau Linux.
L’environnement graphique
153

 Sans serveur graphique ?


 Le serveur graphique n’est pas indispensable dans GNU/Linux. Il est très possible de ne pas
l’installer car GNU/Linux fonctionne très bien sans bureau, sans fenêtres, sans décorations et
sans souris. À ce moment-là, GNU/Linux démarre normalement mais ensuite votre écran reste
noir. Juste quelques phrases affichées en blanc vous invitent à mettre votre nom d’utilisateur et
votre mot de passe pour commencer à travailler.
 Votre écran tout entier est le terminal, le vrai, pas comme le petit terminal (qui est en fait un
émulateur, faisant semblant d’en être un vrai).
 En fait, par défaut, il y a 6 terminaux et vous pouvez passer au tty2 avec la combinaison de
touches [Ctrl-Alt-F2] et ainsi de suite. Depuis le terminal, il est possible d’installer le serveur
graphique et de le démarrer pour accéder au bureau (grâce à la commande startx).
 Depuis le bureau, il est aussi possible de passer derrière le serveur graphique dans n’importe
quelle distribution GNU/Linux.
L’environnement graphique
154

 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

 Structure du fichier xorg.conf


 Toute la configuration de Xorg se passe au niveau de son fichier de configuration, le
xorg.conf. Ce fichier est par défaut situé dans /etc/X11/xorg.conf.
L’environnement graphique
158

 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

 Détail des différentes sections


 Section ServerLayout : dans cette section, on liste tout ce qui est périphérique d'entrée,
comme la souris ou le clavier, ainsi que les écrans. Cette section doit au minimum comporter les
entrées Identifier et Screen.
 Section InputDevice : dans cette section, on précise les périphériques d'entrées, le clavier et
la souris. On les renseigne en même temps que les pilotes à utiliser. Seules les entrées
Identifier et Driver sont obligatoires, le reste est optionnel.
 Section Monitor : cette section contient la description et les options spécifiques à un moniteur,
ainsi que les informations sur le mode vidéo. Elle possède une seule entrée obligatoire:
Identifier, afin de pouvoir la nommer.
L’environnement graphique
160

 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

 Lien entre les différentes sections


 Beaucoup de sections sont optionnelles, mais certaines sont obligatoires et nécessaires au bon
fonctionnement de notre serveur graphique. Imaginons un système tout simple, uniquement
constitué d'un écran, d'un clavier et d'une souris.
 L'écran Screen sera défini par une carte graphique : Device et un moniteur : Monitor. Le
clavier et la souris seront chacun défini par une section InputDevice. La combinaison de la
section Screen et des InputDevice forme un ServerLayout. On peut représenter ceci par un
arbre.
L’environnement graphique
162
L’environnement graphique
163

 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

 Script de configuration générique


 On va parler des scripts de configuration du serveur X. Notez que si vous disposez d'une
carte graphique nVidia ou ATI, il y a des scripts plus adaptés à votre cas.
 La façon la plus courante de générer son xorg.conf est de lancer le script X -configure.
Loggez-vous en root, et lancez donc la commande suivante : X -configure
 Si cette commande n'est pas reconnue, essayez avec : Xorg -configure
 S'assurer de la présence du fichier par la commande suivante :
⇒ ls -l /etc/X11
 Doit apparaître le fichier nouvellement généré xorg.conf.new
 Testez la configuration générée au moyen de la commande suivante (ctrl+alt+backscape
pour tuer le serveur graphique) :
⇒ X -config /root/xorg.conf.new
 Si cette configuration vous convient, déplacez donc le fichier créé dans le répertoire
personnel de l'utilisateur root à l'endroit approprié.
⇒ mv /root/xorg.conf.new /etc/X11/xorg.conf
L’environnement graphique
165

 Les gestionnaires de connexion


 Les gestionnaires de connexion servent à fournir des écrans de connexion (login), permettant
ainsi d'empêcher tout accès non autorisé à votre système. De la même façon que pour des
environnements de bureau différents, ils diffèrent par les ressources système utilisées et
procurent leurs propres styles, interfaces et fonctionnalités.
 Il est possible d'installer en parallèle plusieurs gestionnaire de connexion sur le même système.
L’environnement graphique
166

 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

 Changer de gestionnaire de connexion


 Installation du Gestionnaire de connexion
L’environnement graphique
173

 Choix du gestionnaire de connexion


 Pour se faire, il faut reconfigurer l’un des trois :
 Ici on va reconfigurer le gestionnaire MDM
⇒ dpkg-reconfigure mdm

 Puis finir par un reboot système


L’environnement graphique
174

 Les gestionnaires de fenêtres


 Les window manager (ou gestionnaire de fenêtres) sont en quelque sorte une surcouche de
l'interface graphique, puisqu'ils dialoguent directement avec le serveur X.
 Un gestionnaire de fenêtres est un programme qui se charge d'organiser l'agencement des
fenêtres sur votre écran.
 Un gestionnaire de fenêtres n'est pas à un environnement de bureau.
 Les tâches du gestionnaire de fenêtres sont :
 Créer un cadre autour des programmes contenant un titre et une bordure; c'est ce que l'on
appelle une fenêtre.
 Gérer la position de ces fenêtres sur votre écran, de même que d'en gérer la taille et
l'ordre d'affichage (la superposition des fenêtres).
 Gérer les apparences et effets graphiques qui se rattachent aux fenêtres (miniaturisation,
ombrages, transparence, icônification, etc.).
L’environnement graphique
175

 Les gestionnaires de fenêtres courants


 Compiz est un gestionnaire de fenêtres. Il est inclus de base dans Unity et d'autres
environnements utilisant l’accélération 3D. Toujours en développement, utilise des effets
graphiques tridimensionnels et visuels qui exploitent toutes les capacités de l'ordinateur du
XXIe siècle. C'est ce gestionnaire de fenêtres qui est utilisé lorsque vous activez les effets du
bureau.
 Metacity est le gestionnaire de fenêtres inclus de base entre autre dans l'environnement de
bureau GNOME classique. Metacity peut être utilisé séparément ou dans un autre
environnement de bureau.
 Mutter, évolution de Metacity, est un gestionnaire de fenêtres léger utilisant Clutter. Il est le
gestionnaire de fenêtres par défaut de Gnome Shell. Gnome Shell est très lié à Mutter et est
donc quasi impossible à remplacer.
 Kwin est le gestionnaire de fenêtres inclus de base avec l'environnement de bureau KDE.
Kwin peut être utilisé séparément ou dans un autre environnement de bureau.
L’environnement graphique
176

 Les gestionnaires de bureau


 Un environnement de bureau est un ensemble d'outils vous permettant d'exploiter les
caractéristiques graphiques de votre ordinateur.
 Il est constitué de plusieurs éléments :
 Le bureau, en arrière-plan de votre écran, qui affiche une image d'arrière-plan et un
ensemble d'icônes.
 Le gestionnaire de fenêtres qui crée les cadres entourant les fenêtres, zones d'échange entre
vous et votre ordinateur.
 Les barres de menus et les panneaux associés qui vous permettent d'accéder à vos logiciels,
d'afficher l'heure, de lister vos fenêtres ouvertes, etc...
 Le gestionnaire de sessions qui gère vos sessions.
 Des outils graphiques qui vous permettent de contrôler votre ordinateur, de le configurer et
de l'exploiter.
L’environnement graphique
177

 Les environnements de bureau


 Unity est l'environnement par défaut de Ubuntu. Initialement destinée aux netbooks et aux
écrans de petite taille, cette interface est désormais adaptée aux postes de travail. Elle
s'appuie sur le gestionnaire de fenêtres Compiz, ce qui lui permet de mettre en œuvre des
effets graphiques intéressants.
 GNOME Shell est l'interface officielle conçue par le projet GNOME pour l'environnement de
bureau GNOME 3. Son but est de repenser l'interaction entre l'utilisateur et la machine en
proposant une interface épurée et moderne centrée autour des tâches courantes effectuées
par l'utilisateur. Auparavant environnement de la variante Ubuntu GNOME, GNOME Shell
est devenu, depuis la version 17.10, l'environnement par défaut (à la place d'Unity).
 Plasma Desktop est, depuis la version 4 de KDE, l'environnement de bureau pour ordinateurs
du projet KDE. Il s'agit de l'interface de la variante Kubuntu. Généralement apprécié pour
sa modularité et sa simplicité, il offre de très nombreux effets visuels et possibilités de
personnalisation. Certains lui reprochent parfois une certaine lourdeur (surtout graphique),
alors que d'autres apprécient son ergonomie proche de l'interface de Microsoft Windows.
L’environnement graphique
178

 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

 Travailler sous GNOME ou KDE


 Gnome
 C’est l'acronyme de : GNU Network Object Model Environment. C'est un environnement de
bureau, se voulant simple et fonctionnel. Il est crée en 1997 et fonctionne sur une majorité de
système de types Unix (ou GNU). Son principal atout est d'être un bureau léger, sans
fioritures comportant uniquement les fonctions de base demandées par les utilisateurs.
 L'environnement graphique de GNOME a été développé en langage C et repose
principalement sur la bibliothèque GTK+, développée originellement pour l'excellent logiciel
de traitement d'images GIMP.
 Les applications GNOME contiennent souvent la lettre « G » dans leur nom.
L’environnement graphique
180

 Voici quelques applications officielles GNOME parmi les plus populaires :


 Nautilus : explorateur de fichiers ;
 Evolution : client de messagerie électronique ;
 Ekiga : logiciel de téléphonie et de vidéo-conférence ;
 Evince : lecteur de fichiers PDF ;
 Gphoto : importation et gestion de photos numériques ;
 Gedit : éditeur de texte ;
 Grip : rippeur de CD/DVD ;
 Totem : lecteur multimédia .
L’environnement graphique
181

 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

 Kontact est le gestionnaire d'informations personnelles (PIM). Il contient notamment :


 Kmail : client de courrier électronique ;
 Kaddressbook : carnet d'adresse ;
 Korganizer : agenda ;
 Akregator : agrégateur de flux RSS.
 Calligra (appelée KOffice jusque décembre 2010) est la suite bureautique de KDE, elle
contient notamment :
 Words (ex-KWord), traitement de texte ;
 Tables (ex-KSpread), tableur ;
 Stage (ex-KPresenter), logiciel de présentation ;
 Kexi, outil de gestion de données ;
 Flow (ex-Kivio), éditeur de diagramme ;
 Krita, éditeur d'image bitmap ;
 Karbon, logiciel de dessin vectoriel ;
 Plan (ex-KPlato), logiciel de gestion de projet.
L’environnement graphique
183

 Voici quelques applications KDE parmi les plus populaires :


 Konqueror : navigateur web et explorateur de fichiers ;
 Dolphin : gestionnaire de fichiers par défaut de KDE4 ;
 Kopete : client de messagerie instantanée (Jabber, MSN, ICQ etc.) ;
 K3b : logiciel de gravure de CD, DVD etc. ;
 Kwrite : éditeur de texte ;
 AmaroK : lecteur audio ;
 Kaffeine : lecteur multimédia (front-end de Xine) ;
 Ktorrent : client bittorent ;
 Kdevelop : environnement de développement intégré ;
 Quanta Plus : logiciel de développement web (HTML, CSS, PHP etc.) ;
 KGhostView et KPDF : lecteurs de fichiers PDF ;
 DigiKam : importation et gestion de photos numériques.
L’environnement graphique
184

 Les applications graphiques utiles


 Navigateurs : Firefox et Chrome
 Messagerie : Thunderbird
 Téléchargements de fichiers : Transmission
 Client FTP : Filezilla
 Suite bureautique : LibreOffice
 Gestion d’image : XnView
 Retouche d'image : Gimp
 Écouter sa musique : Rhythmbox
 Lecteur vidéo : VLC
 Graver des CD / DVD : Brasero
 Gérer ses mots de passe : KeePass
 Anti-virus: ClamAV (version graphique ClamTK)
 Sauvegarde : Backintime
 Prise en main à distance : TeamViewer
L’environnement graphique
185

 Tout faire avec un navigateur (usermin)


 Usermin peut être considéré comme un Webmin simplifié, issu des mêmes développeurs. Il
permet aux utilisateurs la gestion graphique de tâches simplifiées à travers une interface
Web (lecture/envoi de messages, filtrage spam, gestion mots de passe, édition de fichiers).
 Installation :
 Faire la mise à jour système : apt-get update && apt-get upgrade
 Installation des dépendances : apt-get -y install python apt-show-versions libapt-pkg-perl
libauthen-pam-perl libio-pty-perl libnet-ssleay-perl
 Téléchargement de la dernière version : curl -L -O
http://www.webmin.com/download/deb/usermin-current.deb
 Installation du binaire : dpkg -i usermin-current.deb
 Modification du fichier de configuration : vi /etc/usermin/miniserv.conf
 On ajoute à la fin du fichier : allow=127.0.0.1 10.0.0.0/24 et denyusers=root
 On redémarre le service : systemctl restart usermin
L’environnement graphique
186

 Lancer Usermin dans un navigateur Web avec l'URL suivante https://localhost:20000


L’environnement graphique
187
Sommaire
188

 Gestion des fichiers

 Partitions et filesystems : intérêt de partitionner son disque. Notion de montage des


filesystems (ext2, ext3...).
 Contenu des répertoires standard (/bin, /home, /usr...).
 Notion de filesystem (mount, df...).
 Les commandes de base : mkdir, cd, pwd, ls, rm, file, cat…
 Gérer correctement les permissions d'accès aux fichiers (umask, chmod...).
 Les liens symboliques.
 Les périphériques amovibles (CDROM, clés USB).
Gestion des fichiers
189

 Partitions et filesystems : intérêt de partitionner son disque. Notion de


montage des filesystems
 Quelques infos sur les disques durs
Gestion des fichiers
190

 Le disque dur est constitué d’un ou de plusieurs plateaux.


 Chaque plateau est divisé en pistes.
 Chaque piste est divisée en secteurs.
 Le cylindre est formé par les pistes de même rayon sur chaque plateau.
 Le formatage est effectué à 2 niveaux :
 En usine : le formatage bas niveau des pistes et secteurs.
 Par l’utilisateur : effacement ou réécriture des données (lors de l’installation du système
d’exploitation par exemple).
 La capacité d’un disque dépend :
 De la taille des secteurs.
 Du nombre de cylindres et donc du nombre de plateaux.
Gestion des fichiers
191
Gestion des fichiers
192

 Depuis l'avènement du SSD, la donne a un peu changé...


 Ce que l'on appelait autrefois disque dur (Hard Drive) et réservé aux disques mécaniques à
supports magnétiques à rotation rapide.
 Un solid-state drive, abrégé en SSD, est un matériel informatique permettant le stockage de
données sur de la mémoire flash.
 Les disque durs/SSD peuvent disposer de différentes interfaces (qui permettent de les
connecter à la carte mère). Les plus courantes actuellement sont :
 SATA (Serial Advanced Technology Attachment)

 IDE (Integrated Drive Electronics)

 SCSI (Small Computer System Interface)


Gestion des fichiers
193

 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

 Organisation typique du poste de travail

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

 Nommage des périphériques sous Linux


 Dans les systèmes Unix, les périphériques, les disques durs et les partitions sont gérées sous
forme de fichiers contenus dans le répertoire /dev : chaque fichier du répertoire /dev
correspond à une sorte de driver.
 On distingue deux types de disques : les IDE et les SCSI/USB/SATA. Ils sont nommés
respectivement « hd » et « sd » suivit d'une lettre et d'un chiffre. La lettre représente la
position du disque sur le bus et le chiffre représente l'une des partitions de ce disque.
 Ainsi /dev/hda correspond au premier disque dur IDE, /dev/hda1 à la première partition du
disque dur IDE, /dev/hda2 à la seconde partition, /dev/hdb au second disque dur IDE,
/dev/hdb1 à la première partition du second disque dur, etc..
 Les partitions logiques sont numérotées à partir de 5. Donc, la première partition logique sur
ce même disque est /dev/hda5. Cela s'applique aussi bien aux disques IDE qu'aux disques
SCSI. Ce même s'il n'y a pas 4 partitions primaires.
 La partition Swap n’est pas une partition de données mais possède un numéro de partition.
Gestion des fichiers
196
Gestion des fichiers
197

 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

 Les formats des systèmes de fichier


 À chaque système est associé un format.
 Définit la structure des données sur le support.
 Sous Linux.
 ext2, ext3, ext4, xfs...
 ext4 est le plus courant pour Linux.
 Sous Windows.
 fat, fat32, ntfs.
 ntfs est le plus utilisé.
 Toujours préférer un système de fichier « journalisé ».
 Chaque séquence de lecture/écriture est d’abord inscrite dans un journal avant d’être
effectuée. Si le système se bloque pendant la séquence, elle sera achevée après le
redémarrage.
 On évite les erreurs dans le système de fichiers.
Gestion des fichiers
200

 Le format « swap » est utilisé comme « mémoire virtuelle ».


 Dans le cas où la mémoire vive est saturée.
 Par le système pour améliorer les performances.
 La taille du « swap » est fixée au double de la mémoire vive.
 Si 512Mo de mémoire vive -> 1024Mo de swap.
 Avant d’être utilisé, un disque doit être partitionné.
 A l’aide de la commande « fdisk » si Linux est déjà installé.
 Par le programme d’installation sinon (dépend de la distribution).
 Il faut ensuite créer un système de fichier.
 Avec l’utilitaire générique « mkfs »
 mkfs.ext2, mkfs.ext3, mkfs.xfs, ...
 Lors d'une installation, au minimum deux partitions doivent être créées sur le disque :
 / ("slash", root, racine) : ce répertoire contient la distribution Linux.
 swap : cette partition permet au noyau de gérer plus de processus que ne le permet la
mémoire RAM.
Gestion des fichiers
201

 Les points de montage


 Sous Linux, « Tout est fichier ».
 L’arborescence est construite à partir de « points de montage ».
 Un point de montage est une association avec une partition.

 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

 Tant qu’ils ne sont pas effectués, le système de fichiers est inaccessible .


 Ils sont réalisés automatiquement au démarrage du système.
 Seulement ceux qui figurent dans le fichier « /etc/fstab ».
 Il est possible de créer un point de montage manuellement.
 Pour les clés USB ou le CDROM par exemple.
 En utilisant la commande « mount ».
 Et « umount » pour supprimer le point de montage.
Gestion des fichiers
203

 Mise en place d’un nouveau disque


 3 étapes sont nécessaires :
 Création d’une partition : fdisk
 Initialisation du système de fichiers : mkfs
 Création d’un point de montage : mount
1) Création d’une partition
 Partition principale de 100Mo avec « fdisk » sur /dev/sda
Gestion des fichiers
204

 Vérification de la partition sous « fdisk ».

2) Initialisation du système de fichiers.


 Avec la commande « mkfs ».
Gestion des fichiers
205

3) Création du point de montage.


 De type ext3.
 Avec la commande « mount ».

 Le répertoire « /mnt/toto » doit déjà exister.


 Vérification du point de montage avec la commande « df ».
Gestion des fichiers
206

 Vérification d’un système de fichier


 Si le doute s’installe quant à l’intégrité du système de fichiers.
 Une vérification s’impose.
 Il faut « démonter » le système en préalable à la vérification.
 Utilisation de la commande générique « fsck ».
 fsck.ext3, fsck.vfat, fsck.ext2, fsck.nfs, ...
 Exemple :
 Supprimer d’abord le montage avec « umount ».

 Effectuer le montage après vérification pour accéder au système de fichiers.


Gestion des fichiers
207

 Contrôle de l'utilisation des disques


 Pour visualiser l'utilisation d'un disque, il faut utiliser du.
 du [options] [files...]
 Principales options:
 -a : tous les fichiers, pas uniquement les répertoires.
 -b : pour afficher la taille en octets.
 -c : total.
 -h : human readable format. (1K, 20M,…)
 -s : afficher un résumé.
Gestion des fichiers
208

 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

 Contrôle des systèmes de fichiers


 Pour contrôler les caractéristiques d'un système de fichiers, il faut utiliser fsck.
 fsck [options] t [fstype] device [fsckoptions]
 Principales options:
 -A : utilise le fichier /etc/fstab et essaie de contrôler tous les systèmes de fichiers. En général
utilisé au boot par un script.
 -t fslist : spécifie le type de système de fichiers à contrôler. Avec l'option A, seuls les
systèmes de fichiers qui correspondent à la liste dans fslist sont contrôlés.
 -c : affiche la barre de progression.
 Principales options:
 -a : réparation automatique.
 -r : réparation interactive.
Gestion des fichiers
210

 Contenu des répertoires standard


 Contrairement au système de fichiers Windows, il n'existe pas de lecteurs A:, C:, etc... L'entrée
du système de fichier se situe à la racine, notée / .
 Linux possède de nombreux répertoires, et ils ont chacun leur rôle.
 D'une distribution à l'autre, ces répertoires peuvent être différents.
Gestion des fichiers
211
Gestion des fichiers
212
Gestion des fichiers
213

 Les commandes de base


Gestion des fichiers
214

 Lister les noms de fichiers et les informations


 La commande pour afficher le répertoire courant est pwd :
 Exemple :
user@ubuntu:~$ pwd
/home/user
user@ubuntu:~$

 Pour changer le répertoire courant, utiliser cd :


 Exemple :
user@ubuntu:~$ cd /bin
user@ubuntu:/bin$
 Il y a un tilde (~) dans l'invite qui signifie « le répertoire personnel de l'utilisateur ». Le point
(.) représente le répertoire courant. Deux points (..) représentent le répertoire parent au
répertoire courant :
Gestion des fichiers
215

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

 Exemples de format long :


user@ubuntu:~$ ls -l /bin/ls
-rwxr-xr-x 1 user user 46784 mar 23 2002 /bin/ls
user@ubuntu:~$ ls -ld /bin
drwxr-xr-x 2 user user 2144 nov 5 11:55 /bin

 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

 Créer et supprimer des répertoires


 Pour créer un répertoire, utilisez mkdir.
 mkdir [options] dir
 Principales options:
 - m mode : met en place le mode de permission. Par défaut, il est défini par le umask.
 - p parent : crée si nécessaire un répertoire parent.

 Exemple :
[root@test ] /# mkdir -m 0700 bin
[root@test ] /# mkdir -p bin/system/x86
Gestion des fichiers
220

 Pour supprimer un répertoire vide, utilisez rmdir.


 rmdir [options] dir
 Principales options:
 - p parent : efface les répertoires parents vides.

 Exemple :
[root@test ] /# rmdir tmp
[root@test ] /# rmdir -p bin/system/x86
Gestion des fichiers
221

 Copier des fichiers et des répertoires


 Pour copier un fichier dans un autre fichier ou dans un répertoire, utilisez cp.
 cp [options] source target
 Source et target peuvent être soit un fichier, soit un répertoire.
 Principales options:
 - i interactif : demande l'autorisation d'écraser.
 -r récursif : copie les sous répertoires et leur contenu.
 -f force : ne demande pas de confirmation avant d'écraser.
 Exemple :
[root@test ] /# cp *.[a-z] /tmp
[root@test ] /# cp readme readme.orig
[root@test ] /# cp ls /bin
[root@test ] /# cp -ri bin/* /bin
Gestion des fichiers
222

 Supprimer des fichiers ou des répertoires


 Pour supprimer des fichiers ou des répertoires, il faut utiliser rm.
 rm [options] files
 Files peut être un fichier ou un répertoire.
 Principales options:
 -i interactive : affiche un prompte avant chaque suppression.
 - f force : ne demande pas de confirmation et ne prévient pas en cas d'échec.
 -r récursive : efface les sousrépertoires et leur contenu.
 Exemple :
[root@test ] /# rm *.[a-z]
[root@test ] /# rm readme readme.orig
[root@test ] /# rm ls /bin
[root@test ] /# rm -rfi /bin
[root@test ] /# cd; rm -rf * .*
Gestion des fichiers
223

 Lister des fichiers dans un sous répertoire


 Pour chercher un fichier dans un sous répertoire, il faut utiliser find.
 find [subtrees] [conditions] [actions]
 La commande peut contenir plusieurs conditions et chercher récursivement dans les sous -
répertoires.
 Parmi les conditions, il peut y avoir :
 -name [FNG] : recherche les noms de FNG.
 -type c : type de fichier [bcdfl].
 -size [+]# : à une taille de + en blocks (c:octets,k:kilo).
 -user [name] : propriété de l'utilisateur.
 -atime [+]# : date d'accession aux fichiers: +n appelle les fichiers qui n'ont pas été ouverts
les n derniers jours, n appelle les fichiers qui ont été accédés les n derniers jours.
 -inum N : fichiers avec un nombre inode N.
Gestion des fichiers
224
Gestion des fichiers
225

 Parmi les actions possibles à exécuter pour chaque fichier trouvé :


 -print : donne le chemin d'accès.
 exec cmd {} \; : exécute cmd avec le nom du fichier en argument.
 ok cmd {} \; : pareil que exec.
 Quand le nom du fichier trouvé par find doit être utilisé en argument de la commande, on
utilise l'expression « {} ». La fin de la commande est définie par la séquence suivante « \; ».
 Exemple :
 Supprime (après confirmation) tous les fichiers et répertoires de « /tmp » n’ayant pas été
utilisés depuis plus de 5 jours.
 find /tmp -atime +5 -exec rm -ri {} \;
 La commande ci-dessous recherche l’ensemble des ressources dont le nom est .htaccess dans
le répertoire /var/www/
 find /var/www -name ".htaccess"
Gestion des fichiers
226

 Déplacer et renommer des fichiers


 Pour déplacer ou renommer un fichier ou un répertoire, il faut utiliser la commande : mv.
 mv [options] source target
 Source et Target peuvent être un fichier ou un répertoire.
 Principales options:
 -i interactive : affiche un prompte à chaque action.
 - f force : force pour écraser.
 -v : verbose.
 Exemple :
[root@test ] /# mv *.[a-z] /tmp
[root@test ] /# mv readme readme.orig
[root@test ] /# mv ls /bin
[root@test ] /# mv -fi bin/* /bin
Gestion des fichiers
227

 Les périphériques amovibles (cdrom, clé USB)


 Dans un environnement de bureau classique, le montage des disques externes est assuré par
l'environnement lui-même (Gnome/KDE/XFCE…) par le biais d'outils intégrés.
 Dans un environnement minimal, le montage des disques externes se fait à la ligne de
commande. Pour une clé usb partitionnée en fat32 :

 La manipulation est simple mais utilise les droits 'root'. Pour automatiser le montage, nous
pouvons utiliser l’outil : fstab
Gestion des fichiers
228

 Montage automatique avec fstab


 /etc/fstab est le fichier qui regroupe les points de montage du système.
 Création des points de montage : autant que de ports usb disponibles…

 Déclaration des points de montages dans fstab : ouvrir fstab

 Et ajouter les lignes correspondantes (une par point de montage).

 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

 Montage de clé identifiée


 Si vous utilisez toujours les mêmes clés , vous pouvez définir des points de montage spécifiques
:
 Création du point de montage spécifique :
 Récupérer l’uuid du disque usb à monter : brancher votre clé usb puis lister les disques
disponibles.

 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

 Montage d’un lecteur cdrom


 Pour monter :
⇒ mount -t iso9660 /dev/cdrom /mnt/cdrom
 Pour démonter :
⇒ umount /mnt/cdrom
 Pour que le montage soit automatique au démarrage, ne pas oublier de configurer le fichier
/etc/fstab.
Gestion des fichiers
231

 Les liens symboliques


 Les liens durs et lien symoliques
 Qu’est ce qu’un lien?
 Un lien est un fichier. C’est une référence à un autre fichier créé par la commande ln. De
façon intuitive, les liens donnent plusieurs noms à un même fichier permettant à ces fichiers
d’être à la fois dans deux ou plusieurs endroits différents.
 Cela évite de stocker plusieurs fois le même fichier dans des répertoires différents.
 Il existe deux sortes de liens. Les liens symboliques et les liens durs.
Gestion des fichiers
232

 Quelles différences entre un lien dur et un lien symbolique


Gestion des fichiers
233

 Comment créer un lien ?


 Pour créer un lien dur on utilise la commande suivante : ⇒ ln
mon_fichier mon_lienDur
 Si vous supprimez le fichier original, le lien dur fonctionnera très bien.
 Le lien dur est tout simplement un second nom du fichier original. Les deux fichiers (lien et
fichier original) sont en fait un et un seul fichier sur le disque dur. Ils pointent sur le même
inode.
 Il est possible de voir le fichier sur lequel pointe un lien symbolique avec la commande ls -
l.
 Pour créer un lien symbolique, on utilise la commande ln avec l’option -s : ⇒ ln -s
mon_fichier mon_lienSymbolique
 Si l’on supprime le fichier original, le lien symbolique ne fonctionnera plus. On dira dans
ce cas qu’il est cassé.
 Le lien symbolique quant à lui se réfère à un autre fichier grâce au chemin de ce dernier,
un peu comme les raccourcis sous Windows.
Gestion des fichiers
234

 Gérer correctement le permissions d’accès aux fichiers


 Linux est un système multi-utilisateurs.
 Plusieurs utilisateurs se partagent l’espace disque.
 Les fichiers et répertoires d’un utilisateur ne doivent pas être accessibles par les autres.
 Les fichiers de configuration du système doivent être protégés.
 Nécessité de spécifier des droits pour chaque fichier/répertoire.
 Plusieurs types de droits : Lecture (R), écriture (W), exécution (X)
 Ces droits s’appliquent pour 3 groupes d’utilisateurs :
 Le propriétaire (user) du fichier.
 Le groupe (group) propriétaire (tous les utilisateurs membre du groupe).
 Les autres (others). Désigne tous les utilisateurs non membres des 2 précédents.
Gestion des fichiers
235

 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

 La commande « ls -l» permet d’afficher les droits qui s’appliquent.

 Signification des différents champs :


Gestion des fichiers
237

 Représentation des droits d’accès


Gestion des fichiers
238

 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 ».

 En règle générale, on utilise « sudo » que temporairement.


 Pour des tâches administrative.
 Accéder à l’ensemble du système de fichiers.
 Gérer les utilisateurs.
 ...
Gestion des fichiers
239

 Usurper l’identité d’un utilisateur


 Parfois, le super-utilisateur doit endosser un autre rôle afin d’effectuer une tâche.
 Que se passe t-il si le super-utilisateur crée un fichier ?
 Ce fichier lui appartient.
 Selon les droits qui s’appliquent, les autres utilisateur ne peuvent pas y accéder.
 Que faire alors ?
 Se faire momentanément passer pour un autre utilisateur.
 Avec la commande « su ».


Gestion des fichiers
240

 Le masque de protection : umask


 Le masque de protection de fichier permet de définir les droits par défaut de tout fichier
créé.
 Ce masque se comporte comme un filtre et utilise la notation numérique. On parle de filtre car
il ne contient pas la série des 3 chiffres octaux correspondants aux droits à allouer aux
fichiers, mais celle correspondant aux droits à ne pas allouer.
 Le système Unix affecte à un fichier les droits globaux résultant de la soustraction des droits
maximaux 777 par le masque de protection.
 Exemple : si le masque de protection vaut 037 alors 740 (=777-037) seront les droits alloués
à tout nouveau fichier.
 La commande permettant de définir un nouveau masque de protection est umask.
Gestion des fichiers
241

 Syntaxe : umask droits

777 = rwx rwx rwx


-
037 = --- -wx rwx
=
740 = rwx r-- ---

 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

 Les droits étendus : le SUID


 Permet de bénéficier de droits supplémentaires lors de l’exécution d’une commande.
 Un utilisateur quelconque peut alors avoir des droits supplémentaires seulement s’il exécute
la commande ayant le SUID.
 Exemple de la commande « passwd ».
 Elle permet de modifier son mot de passe.
 « passwd » doit écrire dans le fichier « /etc/shadow » et pourtant :
Gestion des fichiers
243

 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

 Les droits étendus : le SGID


 Identique au SUID mais appliqué au groupe propriétaire.
 La commande obtiendra les droits du groupe propriétaire s’il elle est exécutée par un autre
utilisateur.
 Attention, appliquée à un répertoire, le SGID :
 Modifie le groupe propriétaire d’un fichier créé dans le répertoire.
 Ce ne sera plus le groupe primaire du propriétaire, mais plutôt le groupe propriétaire du
répertoire.
 Il y a donc un mécanisme d’héritage entre le répertoire et les fichiers nouvellement créés
qu’il contient.
Gestion des fichiers
245

 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

 Les droits étendus : Sticky Bit


 Le droit Sticky Bit (appellé aussi bit collant) est alloué à la catégorie autres d'un répertoire.
 Il permet d'interdire à tout utilisateur (sauf le root) de supprimer un fichier dont il n'est pas le
propriétaire, quelque soient ses droits.
 Si le répertoire en question est accessible en écriture par n'importe quel utilisateur
(rwxrwxrwx), n'importe qui peut poser ce bit collant qui protège tous les fichiers d'une
suppression ou modification de la part d'un utilisateur autre que son propriétaire.
 Ce bit collant permet donc d'aller à l'encontre du droit en écriture d'un répertoire dont
héritent les fichiers du répertoire.
 Sa valeur numérique est 1000 et est représenté symboliquement par t.
 Exemple : chmod 1755 tmp/
 Exemple : chmod a+t tmp/
 Ce droit s'affiche en lieu et place du droit en exécution de la catégorie autres.
Gestion des fichiers
247

 Modifier les droits avec « chmod »


 La commande « chmod » permet de modifier les droits :
 2 syntaxes différentes

 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

 Modifier les droits avec « chmod ».


 Basé sur des nombres de 0 à 7.
 A chaque bit de la traduction binaire correspond un droit.
 Exemple ( rw- rw- r-- )

 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

 Modifier l’appartenance avec « chown »


 La commande « chown » (Change owner) permet de changer l’appartenance. Pour le
propriétaire ou le groupe propriétaire.
 Exemples :
 Modification du propriétaire (paul).
⇒ chown paul /usr/docs/toto.txt
 Modification du groupe propriétaire (compta).
⇒ chown :compta /usr/docs/toto.txt
 Modification du propriétaire (jean) et du groupe (direction). Pour tout le contenu du
répertoire (Option R – récursif).
⇒ chown –R jean:direction /usr/docs/rapports/
Travaux pratiques
250

 Création et gestion d’une arborescence de fichiers


représentant un site Web. Mise en œuvre de liens
symboliques pertinents.
Sommaire
251

 Gérer les processus

 Le multitâche sous Linux.


 Les différents modes de lancement d'un script ou d'un programme : & (arrière-
plan), service, shebang, bash script.
 Visualiser les processus : ps , top, gtop.
 Envoyer un signal avec kill. Les arguments de la commande service (start, stop,
restart, reload).
Gérer les processus
252

 Le multitâche sous Linux


 Linux est un système multi-tâche. Il existe deux méthodes pour profiter de ces capacités.
 La première consiste à lancer le programme en tâche de fond. Pour cela, faites simplement
suivre son nom du symbole « & » . Le shell vous rend la main et vous pouvez faire autre
chose. Attention, certains programmes sont interactifs : il ne se passera rien si vous les lancez
en tâche de fond. Pour ramener au premier plan un programme lancé en tâche de fond,
tapez : fg nom_du_programme
 La deuxième méthode revient à lancer plusieurs sessions indépendantes. Si vous êtes en
mode graphique, il vous suffit de lancer un autre programme Xterm ou Terminal. En mode
console, appuyez en même temps sur Alt + Ctrl et une des touches F1 à F6. Une nouvelle
invite login apparaît et vous pouvez relancer une session. Cette méthode vous permet aussi
de reprendre la main sur une autre console si votre console n'est plus accessible, et tuer un
programme récalcitrant. Cela explique pourquoi il est très rare qu'on utilise le bouton reset
de l'ordinateur sous Linux !
Gérer les processus
253

 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

 Gestion des processus


Gérer les processus
255

 Visualiser les processus


 Un processus est une instance de programme en cours d’exécution.
 Du point de vue kernel, le processus est une entité à qui sont allouées des ressources CPU,
mémoire. . .
 Quand un processus est crée (fork), une copie du processus père, appelée processus fils, est
créée.
 Si le processus 2 a été lancé par le processus 1, on l'appelle un processus fils. Le processus qui
l'a lancé est appelé processus parent.
 Les processus sont référencés par un identifiant unique, le PID. Ce nombre peut être utilisé
pour changer la priorité d'un processus ou pour l'arrêter.
Gérer les processus
256

 L’arborescence des processus


 La commande pstree donne une bonne illustration de la hiérarchie des processus parents et
fils.
 Les options les plus courantes de pstree sont -p pour afficher les PIDs et -h pour faire
ressortir (en gras) les processus utilisateurs.
Gérer les processus
257

 Recherche de processus en cours d’exécution


 Une méthode plus directe pour déterminer les processus en cours d'exécution est d'utiliser la
commande ps avec une combinaison d'options.

 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 première ligne nous donne :


 L'heure (top).
 Le temps depuis lequel la machine est démarrée (up), et là on vient de lancer la machine.
 Le nombre d'utilisateur connecté à la machine (users).
 La commande top permet de connaître les caractéristiques de l'ensemble des processus qui
tournent sur votre machine.
 La charge moyenne en nombre de processus au cours de la minute passée, des 5 dernières
minutes et des 15 dernières minutes.
 La seconde ligne nous donne :
 Le nombre de processus qui tournent.
 Leur état suivant qu'ils tournent effectivement (running), qu'ils sont en sommeil (sleeping) car
ils n'ont rien à faire, arrêtés (stopped) ou en cours d'arrêt (zombie).
Gérer les processus
260

 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

 Envoyer un signal à un processus


 La syntaxe :
⇒ kill -<numéro du signal ou nom du signal> <PID du processus>
 Exemples :
⇒ Kill -1 12345
⇒ kill -SIGTERM 12345
 La commande killall permet d'indiquer le nom du processus plutôt que son PID, et va envoyer
le signal à tous les processus possédant ce nom.
 Utilisé sans option, les commandes kill et killall envoient le signal n°15 (arrêt propre).
 Lorsque Bash est terminé, tous les processus démarrés depuis ce shell reçoivent le signal
SIGHUP, ce qui, par défaut, les stoppe.
 Pour éviter qu'un processus ne s'arrête lorsque son parent se termine, le programme peut être
lancé avec la commande nohup.
Gérer les processus
264

 Les différents modes de lancement d’un script ou d’un


programme
 Les processus en tâche de fond
 Quand on lance une commande tant que la commande n’est pas terminée, on n’a plus la main
au niveau du shell, on ne dispose plus du prompt. Si la commande prend un certain temps, le
shell ne nous donnera pas la main tant que la commande n’est pas terminée, et on est obligé
de lancer un autre shell pour taper une autre commande.
 Pour éviter cela on peut lancer le processus en "tâche de fond" ce qui lance une commande et
revient directement au prompt du shell.
 Rajouter « & » à la fin de la commande. Deux informations sont renvoyés :

 [2] : c’est le numéro du processus en arrière-plan dans cette console.


 8182 : c’est le PID. Cette information permet de tuer le processus si nécessaire.
Gérer les processus
265

 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

 Les services : qu’est ce qu’un service ?


 Un service est un programme qui est exécuté en tache de fond. C'est-à-dire qu'il effectue son
travail sans interaction directe avec l'utilisateur. Certains services sont des composants
essentiels du système.
 Un service peut être nommé démon ou daemon.

 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

 L’initialisation et le démarrage System V


 SysInit gère le démarrage du système par priorité et séquentiellement. Les liens de
personnalisation des RunLevels (les niveaux de démarrage) sont placés dans chaque
/etc/RCx.D et pointent vers /etc/init.d (où l’on trouve les scripts de démarrage des services).
 Les commandes service et chkconfig ou update-rc.d permettent de gérer ces fameux
Runlevels.
Gérer les processus
268

 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

 Les en-têtes de script


 La configuration se fait directement dans chaque script de service et non plus obligatoirement
en passant des paramètres à la commande update-rc.d.
 Voici par exemple celle du serveur de courrier Exim :
Gérer les processus
270

 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

 Démarrer un service manuellement


 Pour démarrer un service en System V, il faut dans /etc/init.d un script, disons
/etc/init.d/mydaemon qui commande le service. Le script doit accepter en paramètre sur la
ligne de commande les commandes start, stop, restart, reload (optionnel — recharger le
fichier de configuration), force-reload (recharger le fichier de configuration si c’est possible,
redémarrer sinon). On peut alors lancer le service par la commande :
⇒ /etc/init.d/mydaemon start
 La commande service sert à démarrer les services par leur script dans /etc/init.d ; on peut
donc faire aussi :
⇒ service mydaemon start
Gérer les processus
272

 L’initialisation et le démarrage UpStart


 UpStart a été implémenté la première fois dans Ubuntu 6 en 2006.
 UpStart repose sur le principe des événements.
 Il gère le lancement et l’arrêt des services au démarrage et à l’arrêt de la machine et les
supervise pendant que le système fonctionne. UpStart est censé remplacer cron, anacron, atd
et inetd | xinetd.
 Syntaxe :
⇒ initctl ACTION NomService
 Où ACTION sera la commande que l'on souhaite appliquer au dit service :
 start : démarrer le service.
 stop : arrêter le service.
 restart : relancer le service.
 reload : recharger le service.
 status : connaitre l'état du service.
 Lister les services démarrer : initctl list
Gérer les processus
273

 L’initialisation et le démarrage systemd


 systemd est un remplaçant du démon init system V pour Linux. Il a pour but d'offrir une
meilleure gestion des dépendances entre services, ainsi que de permettre le chargement en
parallèle des services au démarrage.
 Cela permet de réduire le temps de démarrage du système et de lancer moins de processus.
 systemd est maintenant utilisé par défaut dans la plupart des distributions Linux.
 Les tâches de systemd sont organisées en tant qu'unités. Les unités les plus courantes sont les
services (.services), les points de montage (.mount), les périphériques (.device), les sockets
(.socket) ou les minuteurs (.timer). Par exemple, le démarrage du démon shell sécurisé est
effectué par l'unité "ssh.service".
 systemd place chaque service dans un groupe de contrôle (cgroup) dédié au service. Les
noyaux modernes prennent en charge l'isolation des processus et l'allocation des ressources en
fonction des groupes de contrôle.
Gérer les processus
274

 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

 systemd est le tout premier processus PID N°1.


 systemd est basé sur la notion d’évènements.
 Les évènements de systemd sont :
 Le démarrage du système.
 Le montage d’un volume.
 La connexion à un port ou un socket.
 La connexion/déconnexion d’un utilisateur.
 L’ajout ou le retrait d’un device.
 En conclusion : System Daemon offre un framework optimisé pour la gestion des
dépendances entre les services, et permet le chargement en parallèle des services au
démarrage, et de réduire la surcharge du shell.
Gérer les processus
276


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

 Activer un service au démarrage :


⇒ systemctl enable nom_du_service.service
 Désactiver un service au démarrage :
⇒ systemctl disable nom_du_service.service
 Statut d’un service :
⇒ systemctl is-active nom_du_service.service
 Pour plus de détail : systemctl status nom_du_service.service
 Lister tous les services actifs :
⇒ systemctl list-units --type=service
Gérer les processus
279

 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

 Connaître son runlevel :


⇒ systemctl get-default
 Basculer temporairement de runlevel : Exemple pour passer en runlevel 5 (graphique) :
⇒ systemctl isolate graphical.target
 Pour fixer le niveau d'exécution par défaut en mode multi-utilisateur avec serveur graphique :
⇒ systemctl set-default graphical.target
 Changer de runlevel par défaut : avant systemd, on modifiait le fichier /etc/inittab
⇒ systemctl set-default nom.target le changement sera visible au prochain redémarrage
 Recharger la configuration un service :
⇒ systemctl reload nom_du_service.service
Gérer les processus
281

 Pour passer mode maintenance avec un système de fichier local monté :


⇒ systemctl rescue
 Passer en mode maintenance avec seulement /root monté :
⇒ systemctl emergency
 Pour passer en mode multi-utilisateur sans serveur graphique (N 3) :
⇒ systemctl isolate multi-user.target

 Pour voir le temps de démarrage des services :


⇒ systemd-analyze blame

 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

 Redémarrer et arrêter un système


 Redémarrer le système :
 On peut procéder de différentes manières :
⇒ systemctl reboot
⇒ shutdown -r now
⇒ reboot
⇒ init 6
 Arrêter le système :
 On peut choisir :
⇒ systemctl halt
⇒ shutdown -h now
⇒ halt
⇒ init 0
Sommaire
283

 Linux en réseau et cohabitation avec Windows

 Les protocoles, les services... : TCP/IP, NFS, SMTP, DNS, DHCP…


 La connexion à une machine distante : telnet, ssh.
 Les transferts de fichiers : (s)ftp, rcp.
 Partager des données entre Linux et Windows en toute sécurité.
 Configuration IP standard d'un serveur Linux. Lire, modifier sa configuration (@IP,
DNS,passerelle) pour accéder au Web.
 Configuration Wi-Fi (sans fil) : noyau et driver WiFi, identifier le bon pilote.
Commandes de configuration (iw*).
 Protocoles de sécurisation WiFi (WEP, WPA...).
Linux en réseau et cohabitation avec Windows
284

 Les protocoles et services


 Les fichiers de configuration
 /etc/nsswitch
 L'ordre de résolution de noms est défini dans le fichier nsswitch.conf. Par défaut, le système
d'exploitation recherche dans le fichier /etc/hosts (files) puis ensuite recherche auprès d'un
serveur DNS.
 /etc/hosts
 Le fichier hosts effectue le lien entre un nom de site géré par l'utilisateur et une adresse IP.
 /etc/resolv.conf
 Le fichier resolv.conf est le fichier de configuration du serveur de noms (DNS). Il contient
l’adresse IP du (ou des) serveur(s) de noms, la liste de recherche pour les noms d’hôte, le nom
du domaine local.
 /etc/services
 Le fichier services effectue le mapping entre les noms de services et les numéros de ports et
protocoles associés.
Linux en réseau et cohabitation avec Windows
285

 /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

 Configuration IP d’une machine CentOS


 Configuration avec une adresse IP statique.
 Chaque interface a un fichier de configuration dans le dossier /etc/sysconfig/network-
scripts. Le nom est ifcfg-<nom logique de l'interface>.
 Exemple du fichier ifcfg-eth0 :
Linux en réseau et cohabitation avec Windows
287
Linux en réseau et cohabitation avec Windows
289

 Configuration IP d’une machine Debian


 Configuration avec une adresse IP statique.
 Le paramétrage s'effectue dans le fichier /etc/network/interfaces
 Exemple du fichier interfaces :
Linux en réseau et cohabitation avec Windows
290

 Le format est donc sensiblement différent de la configuration sur centOS.


 auto ethX : activation de l'interface ethX au boot de la machine.
 iface ethX inet static : définition du type de protocole : DHCP ou static. Dans notre cas c'est
bien entendu "static".
 address : adresse IP liée à la carte.
 network : sous-réseau.
 netmask : masque de sous-réseau.
 gateway : passerelle réseau.
 Configuration avec une adresse IP statique.
 Le paramétrage s'effectue dans le fichier /etc/network/interfaces.
 Pour une interface en dhcp, on aura par contre :
Linux en réseau et cohabitation avec Windows
291

 Les outils de configurations et de diagnostique


 En cas d'anomalie de fonctionnement, pour pouvoir faire un état des lieux et orienter son
action vous disposez de nombreuses commandes adaptées à chaque étape du fonctionnement
réseau. De la configuration de l'interface, à la résolution du nom et au routage vers le serveur
de destination.
 Parmi toutes les commandes disponibles, vous pouvez retenir les plus couramment utilisées,
telles que :
 ethtool <nom_interface>
 Ifconfig
 ifup <nom_interface>
 ping -c <x> nom_hôte_distant
 netstat -t, netstat -r
 arp
 traceroute nom_hôte_distant
Linux en réseau et cohabitation avec Windows
292

 Les outils de la suite IProute2


 Le paquet net-tools est obsolète depuis quelques années, et donc le paquet iproute2 est son
successeur depuis un certain temps maintenant pour la gestion et l'administration du réseau.
 iproute2 est une collection d'utilitaires pour la gestion des protocoles TCP, UDP IP et la gestion
du réseau sous Linux, supportant l'IPv4 et l'IPv6.
 Le principal avantage du paquet iproute2 est qu'il permet de réunir tous les anciens outils
dans une seule commande, qui s’appelle IP.
 Dorénavant, depuis un certains temps c’est le paquet iproute2 qui est installé par défaut pour
la gestion du réseau sous GNU/linux.
Linux en réseau et cohabitation avec Windows
293

 Comparaison entre net-tools et iproute2


 Voir toutes les interfaces réseau.
⇒ ifconfig -a = ip link show
 Activer l'interface réseau.
⇒ ifconfig eth1 up = ip link set up eth1
 Désactiver l'interface réseau.
⇒ ifconfig eth1 down = ip link set down eth1
 Définir le masque IP / réseau.
⇒ ifconfig eth1 192.168.0.1/24 = ip addr add 192.168.0.1/24 dev eth1
 Supprimer la définition IP / Masque du réseau.
⇒ ifconfig eth1 0 = ip addr del 192.168.0.1/24 dev eth1
 Informations spécifiques à une interface.
⇒ ifconfig eth1 = ip addr show dev eth1
 Modification de MAC-ADDRESS.
⇒ ifconfig eth1 hw ether 00:52:bc:33:25:a1 = ip link set dev eth1 address
00:52:bc:33:25:a1
Linux en réseau et cohabitation avec Windows
294

 Afficher la table de routage.


⇒ route -n ou netstat -rn = ip route show
 Ajout de l'itinéraire par défaut.
⇒ route add -net 192.168.0.1 ou route add default gw 192.168.0.1 = ip route add
default via 192.168.0.1
 Ajouter une route statique.
⇒ route add -net 192.168.0.1/24 gw eth1 = ip route add 192.168.0.1/24 dev eth1
Linux en réseau et cohabitation avec Windows
295

 La connexion à une machine distante : telnet et


ssh
 Il est essentiel pour un administrateur de pouvoir se connecter à distance sur un ordinateur. Les
serveurs, confinés dans leur propre salle, disposent en effet rarement d'un clavier et d'un
écran connectés en permanence, mais sont reliés au réseau.
 Internet permet de réaliser un grand nombre d’opérations à distance, notamment
l’administration de serveurs ou bien le transfert de fichiers.
 Le protocole Telnet et les r-commandes BSD (rsh, rlogin et rexec), permettant d’effectuer ces
tâches distantes, possèdent l’inconvénient majeur de faire circuler en clair sur le réseau les
informations échangées, notamment l’identifiant (login) et le mot de passe pour l’accès à la
machine distante. Ainsi, un pirate situé sur un réseau entre l’utilisateur et la machine distante à
la possibilité d’écouter le trafic, c’est-à-dire d’utiliser un outil appelé sniffer capable de
capturer les trames circulant sur le réseau et ainsi d’obtenir l’identifiant et le mot de passe
d’accès à la machine distante.
Linux en réseau et cohabitation avec Windows
296

 É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

 Commande sous Telnet


 Une fois que vous vous connectez à la machine distante, un nom d'utilisateur (login) et un mot
de passe (password) vous seront demandés pour des raisons de sécurité afin de restreindre
l'accès aux seules personnes autorisées.
Linux en réseau et cohabitation avec Windows
299

 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

 SSH : service de sécurité


 Authentification du serveur par clé publique.
 Authentification du client par clé publique, mot de passe ou liste des machines de confiance.
 Chiffrement des données échangées grâce à la clé de session.
 Compression optionnelle des données.
 Deux méthodes de cryptographie à clé publique possibles :
 RSA (Ronald Rivest, Adi Shamir et Leonard Adleman).
 DSA (Digital Signature Algorithm).
Linux en réseau et cohabitation avec Windows
302

 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

 Quelques directives du fichier : /etc/ssh/sshd_config


 Port 22 : port écoute du serveur.
 Protocol 2,1 : protocoles à utiliser.
 ForwardAgent no : autorise le transfert d’agent.
 ForwardX11 no : active ou non la redirection d’applications graphiques.
 HostKey /etc/ssh/ssh_host_rsa_key : clé serveur RSA.
 HostKey /etc/ssh/ssh_host_dsa_key : clé serveur DSA.
 ServerKeyBits 768 : taille des clés.
 LoginGraceTime 600 : temps en secondes pour entrer son login/password.
 PermitRootLogin no : il est conseillé de désactiver le compte root lors de la connexion pour
empêcher le « brute force » sur le compte administrateur. Il sera toujours possible de se
connecter en utilisateur puis d’utiliser la commande « su » pour passer en mode root.
 PubkeyAuthentication yes : active ou non l’authentification par clé publique.
Linux en réseau et cohabitation avec Windows
305

 Permit Empty Passwords no : autorise ou non les mots de passe vides.


 PasswordAuthentication yes : active ou non l’authentification par mot de passe.
 IgnoreRhosts no : lecture ou non des fichiers .rhosts ou .shosts (hôtes de confiance).
 Rhosts RSA : authentification no Autorise l’authentification combinée.
 RSA Authentification yes : autorise l’authentification par clé publique.
 Syslog Facility système AUTH AUTH ou AUTHPRIV : configure le niveau de journaux.
Linux en réseau et cohabitation avec Windows
306

 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

 Authentification SSH par mot de passe


 L'utilisation de ssh pour se connecter à une machine est extrêmement simple.

 Il suffit de taper votre mot de passe.


 Si vous pensez avoir commis une erreur dans votre mot de passe, faites Ctrl+u et retapez-le
en entier.
Linux en réseau et cohabitation avec Windows
309

 Authentification SSH par clé publique


 Une autre méthode utilise ce qu'on appelle une « clé publique », c'est-à-dire un code qui vous
identifie.
 Vous pourrez vous connecter par ssh sur une machine distante sans avoir à taper de mot de
passe.
 Générer la clé :
 Pour générer une clé RSA

 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

 Envoyer la clé publique sur la machine distante


 Placez vous dans le dossier où se trouve le fichier id_rsa.pub
⇒ cd ~/.ssh/
 Nous allons utiliser la commande ssh-copy-id qui permet d’envoyer à une machine distante
une clé publique.
⇒ ssh-copy-id -i id_rsa.pub utilisateur@IPMachineDistante
 Une fois la clé publique envoyé, vous devriez pouvoir connecter sans devoir renseigner de mot
de passe :
⇒ ssh utilisateur@IPMachineDistante
Linux en réseau et cohabitation avec Windows
311

 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

 Transférer en SSH des documents entre machine


 scp est un logiciel en ligne de commande qui permet de transférer des fichiers d'une machine
à un autre en utilisant le protocol "SSH". (scp = Secure Copy Protocol).
 Copier un fichier depuis le client vers la serveur (upload).

 Copier un fichier à partir du serveur sur le client (download).

 Quelques options de la commande scp :


 -r : récursive mode. À utiliser lorsque de dossier doivent-être copier.
 -C : compresse les fichiers avant envoie. Utile pour les gros dossiers.
 -p : gardera les dates de modifications et de créations des fichiers et répertoires ainsi que
leur droit en lecture et écriture.
Linux en réseau et cohabitation avec Windows
314

 Accroître la sécurité de l’accès SSH


 La configuration du service peut être modifiée afin de renforcer la sécurité.
 Le fichier à modifier se trouve dans /etc/ssh/sshd_config
 Modifier le port d’écoute, port 22 en port 5555 par exemple.
 Au bout de 2 essais ratés, le client (ou attaquant) devra attendre 30s MaxAuthTries 2,
LoginGraceTime 30
 Bloquer l’accès root PermitRootLogin no
 N’autoriser que certains utilisateurs à se connecter AllowUsers toto
 Si le serveur a été corrompu, le x11forwarding pourrait permettre de faire fuiter des
données de votre PC client, on désactive X11Forwarding no
 SSH peut également servir à mettre en place un proxy SOCKS, on désactive
AllowTCPForwarding no
 Limiter l’accès SSH à certaines machines, on peut déclarer les machines autorisées partir
des IPs dans le fichier /etc/hosts.allow sshd : 192.168.1.2 172.16.23.12
Linux en réseau et cohabitation avec Windows
315

 Les transferts de fichiers : (s)ftp,rcp


 FTP
 FTP est l'abréviation de File Transfer Protocol, c'est un protocole utilisé sur Internet pour
l'échange de fichiers. Le FTP est généralement utilisé pour télécharger (download) un dossier
présent sur un serveur ou au contraire pour envoyer (upload) un dossier vers un serveur.
 Il est possible de se connecter via un navigateur avec la syntaxe abrégée.
⇒ ftp://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.
⇒ ftp adresse IP <port>
Linux en réseau et cohabitation avec Windows
316

 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

 Commandes FTP ou SFTP


Linux en réseau et cohabitation avec Windows
318

 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

 Echange des principaux messages


 Demande de bail : DHCPDISCOVER
 Au démarrage, le client lance une version simplifiée de TCP/IP et demande en broadcast
l'adresse des serveurs et une proposition d'adresse. Si la station n’obtient pas de réponse,
elle réïtère sa demande.
 Proposition de bail : DHCPOFFER
 Tous les serveurs DHCP recevant cette demande envoient une proposition.
 Acceptation du bail : DHCPREQUEST
 Le client sélectionne les informations provenant de la première offre puis diffuse un message
demandant la localisation de la proposition.
 Confirmation du bail : DHCPACK
 Le serveur à l'origine de la proposition répond au message et tous les autres serveurs
retirent leurs offres. Les informations d'adressage sont alors affectées au client et un accusé
de réception est expédié.
Linux en réseau et cohabitation avec Windows
322

 Refus du bail : DHCPNACK


 Un accusé de non conclusion du bail peut être expédié dans certains cas, par exemple : le
client tente de souscrire une adresse dont il disposait précédemment et cette adresse n'est
plus disponible ou n'est pas valide (client déplacé sur un autre réseau).
 Libération d’un bail: DHCPRELEASE
 Lorsqu’une station s’arrête normalement, elle met fin elle-même à son bail en émettant un
message DHCPRELEASE.
Linux en réseau et cohabitation avec Windows
323
Linux en réseau et cohabitation avec Windows
324

 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

 Le serveur réserve l'adresse IP jusqu'à la réponse du client. Si aucun serveur ne répond le


client réitère sa demande à trois reprises 9, 13 et 16 secondes plus tard puis toutes les 5
minutes.
 DHCPREQUEST
 Première demande ou la négociation d'un nouveau bail :
 Adresse IP source = 0.0.0.0
 Adresse IP destination = 129.181.176.11
 Adresse IP demandée = 129.181.176.11
 Adresse matérielle du client = 080038xxxx
 Identificateur du serveur = 129.181.176.10
 Cet envoi est expédié à tous les serveurs qui retirent leur offre sauf celui précisé dans
l'identificateur.
Linux en réseau et cohabitation avec Windows
326

 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

 Installation et configuration du serveur DHCP


Linux en réseau et cohabitation avec Windows
329

 Installation du serveur DHCP


 Pour installer le serveur DHCP, commencer par lancer la commande :
⇒ apt-get install isc-dhcp-server
 Configurer maintenant l'interface utilisée pour le serveur DHCP en adresse IP fixe :
Linux en réseau et cohabitation avec Windows
330

 Configuration du serveur DHCP


 Au démarrage, dhcpd lit le fichier /etc/dhcp/dhcpd.conf et stocke en mémoire la liste des
adresses disponibles dans chaque sous-réseau. Lorsqu’un client demande une adresse en
utilisant le protocole DHCP, dhcpd lui en attribue une.
 Pour garder la trace des concessions accordées en dépit des redémarrages du serveur, dhcpd
inscrit la liste des concessions attribuées dans le fichier /var/lib/dhcp/dhcpd.leases.
 Avant d’accorder une concession à un hôte, dhcpd enregistre l’attribution dans ce fichier et
s’assure que le contenu du fichier est recopié sur le disque.
 Au démarrage, après avoir lu le fichier dhcpd.conf, dhcpd lit le fichier dhcpd.leases pour
mettre à jour sa mémoire à propos des concessions qui ont été accordées.
Linux en réseau et cohabitation avec Windows
331

 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 subnet permet de déclarer un ensemble d’adresses pour le sous réseau


spécifié avec le paramètre range (il peut y avoir plusieurs lignes range) :

 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

 Le nom de réseau partagé est utilisé lors de l’impression de messages de debug.

 Le paragraphe host décrit la configuration d’un poste spécifique :


Linux en réseau et cohabitation avec Windows
334

 Le paragraphe group permet de regrouper des paramètres à appliquer à un groupe de


déclaration : groupe d’hôtes, de sous-réseaux, de réseaux partagés ou même d’autres
groupes. Le nom de réseau partagé est utilisé lors de l’impression de messages de debug.
Linux en réseau et cohabitation avec Windows
335

 Exemple d’un fichier de configuration dhcpd.conf


Linux en réseau et cohabitation avec Windows
336
Linux en réseau et cohabitation avec Windows
337

 Configuration du client DHCP


 Côté client, la partie DHCP Client est déjà installée.
 Afin de bénéficier d’une configuration réseau dynamique, il est nécessaire que le fichiers
/etc/network/interfaces soit mis à jour :

 Au démarrage, dhclient lit le fichier /etc/dhcp/dhclient.conf pour les instructions de


configuration. Il obtient alors la liste de toutes les interfaces réseaux du système à configurer.
Il tente alors de configurer chaque interface avec le protocole DHCP.
 Pour garder la trace des concessions en dépit des redémarrages du système ou du serveur,
dhclient garde la liste des concessions qui lui ont été assignées dans le fichier
/var/state/dhcp/dhclient.leases.
 La commande dhclient permet de négocier ou de renouveler un bail DHCP.
Linux en réseau et cohabitation avec Windows
338

 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

 Les types d'enregistrement DNS


 Il existe de nombreux type d'enregistrements DNS, mais certains sont plus communs :
 Enregistrement de type A (Address)
 C'est le type le plus courant. Cet enregistrement fait correspondre une adresse IP à un nom
de machine.
 www IN A 1.2.3.4
 Enregistrement de type CNAME (Alias)
 Utilisé pour créer un alias depuis un enregistrement de type A. Il est possible de créer un
enregistrement de type CNAME qui pointe vers un autre enregistrement CNAME, mais ceci
double le nombre de requêtes qui seront faîtes au serveur de noms. Cette méthode est donc
déconseillée.
 mail IN CNAME www
 www IN A 1.2.3.4
Linux en réseau et cohabitation avec Windows
347

 Enregistrement MX (Mail Exchange)


 Utilisé pour définir vers quel serveur de la zone un email à destination du domaine doit être
envoyé, et avec quelle priorité. Cet enregistrement doit pointer vers un enregistrement de
type A, et non un alias CNAME. Il peut y avoir plusieurs enregistrements MX si il existe
plusieurs serveurs de messagerie sur le domaine.
 @ IN MX 10 mikvdw.ddns.net.
 @ IN MX 20 audevdw.ddns.net.
 Enregistrement NS (Name Server)
 Utilisé pour définir quels serveurs répondent pour cette zone. Cet enregistrement doit
pointer vers un enregistrement de type A, non pas vers un enregistrement de type CNAME.
C'est ici que le serveur maître et les esclaves sont définis.
 IN NS ns.ubuntu-fr.lan.
 ns IN A 1.2.3.4
Linux en réseau et cohabitation avec Windows
348

 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"

 Enregistrement PTR (PoinTeuR)


 Il est utilisé par le reverse DNS pour effectuer la résolution d'une adresse IP vers un nom
(FQDN).
Linux en réseau et cohabitation avec Windows
349

 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

 Configuration d’un Serveur Maître


 BIND9 va être configuré comme serveur maître pour le domaine domaine.tld.
 Fichier de zone : pour ajouter une zone, et faire de BIND9 un serveur maître, éditer le
fichier named.conf.local.
zone "domaine.tld" IN {
type master;
file "/etc/bind/db.domaine.tld";
};
 On indique tout d’abord le nom de la zone que l’on connaît avec le nom de la zone suivi du
nom de domaine (dans notre cas domaine.tld).
 L’option type à la valeur master pour indiquer que le serveur sur lequel on travail est le
maître de la zone.
 L’option file indique le chemin vers le fichier où se trouve les informations de résolution. C’est à
dire qu’il contiendra la correspondance entre les noms et les adresses IP pour ce domaine.
Linux en réseau et cohabitation avec Windows
351

 Nous définissons également la zone de plage IP pour la résolution inverse.


 De nombreux services réseaux utilisent la résolution inverse (trouver l’adresse IP à partir du
nom) pour vérifier que le nom est valide.
 Pour se faire, nous utilisons les mêmes paramètres. Cependant, le nom de la zone s’écrit avec
la plage réseau inversée suivi de .in-addr.arpa
 L’entrée de zone pour notre réseau 192.168.1.* s’écrit comme ceci :
zone "1.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/db.192.168.1";
};
Linux en réseau et cohabitation avec Windows
352

 Configuration des zones


Linux en réseau et cohabitation avec Windows
353

 Prenons le temps de détailler un peu la syntaxe de ce fichier :


 Pour commencer, le « $TTL 86400 » permet de spécifier combien de temps les informations
contenues dans le fichiers seront gardées en cache. Ici, avec la valeur 86400, le cache sera
vidé et le fichier relu toutes les 24 heures.
 Le « @ » permet de définir l'espace de nom de la zone.
 Le « IN » défini le protocole utilisé.
 Le « SOA » pour start or autority indique que notre serveur est maître de la zone.
 Vient ensuite le FQDN du serveur de nom. Attention à ne surtout pas oublier le point final !
 Puis enfin on trouve l'adresse mail de l'administrateur. Notez le point final, et le
remplacement du @ habituel par un simple point. Bind interprète le premier « . » rencontré
dans ce champ comme un « @ » .
Linux en réseau et cohabitation avec Windows
354

 Arrive ensuite, systématiquement dans (), une petite série de paramètres:


 Le premier est le numéro de série du fichier de configuration. Il est important de le modifier
si votre serveur maître dispose de serveur esclave qui se synchronise sur lui. Les esclaves se
fient à ce numéro pour savoir si il y a du changement.
 Les champs suivants sont, dans l'ordre :
 Refresh qui indique qu'a l'expiration du délai, ici 8 heures, un serveur esclave rentrera en
contact avec le maître.
 Retry qui indique le délai d'attente, ici 2 heures, à l'esclave avant de reprendre contact
après un échec.
 Expire qui indique le délai que l'esclave va attendre, ici 1 semaine, avant de considérer
le maître comme retiré du service.
 Minimum, enfin, qui indique la durée de vie du cache.
Linux en réseau et cohabitation avec Windows
355

 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

 Test du server DNS avec la commande nslookup


# nslookup velivol.fr <= Test de fonctionnement du nom de domaine
Server: 192.168.0.20
Address: 192.168.0.20#53
Name: velivol.fr
Address: 192.168.0.20

# nslookup srvdns.velivol.fr <= Test de fonctionnement de la zone directe


Server: 192.168.0.20
Address: 192.168.0.20#53
Name: srvdns.velivol.fr
Address: 192.168.0.20
Linux en réseau et cohabitation avec Windows
361

# nslookup 192.168.0.20 <= Test de fonctionnement de la zone indirecte


Server: 192.168.0.20
Address: 192.168.0.20#53
20.0.168.192.in-addr.arpa Name = srvdns.velivol.fr.

# nslookup www.velivol.fr <= Test de fonctionnement de l'enregistrement CNAME


Server: 192.168.0.20
Address: 192.168.0.20#53

www.sm.fr canonical name = srvdns.velivol.fr.


Name: srvdns.velivol.fr
Address: 192.168.0.20
Linux en réseau et cohabitation avec Windows
362

 Utilisation de la commande dig


 La commande dig est aussi une commande concernant le dns ; elle est de plus en plus utilisée
au dépend de la commande nslookup. Sa syntaxe est la suivante :
 dig [@serveur] domaine [type] [classe]
 @serveur adresse du serveur DNS à qui on adresse la requête
 domaine nom de domaine DNS
 type type d’enregistrement DNS (a, any, sao…)
 classe classe de la requête (par défaut IN = Internet)
Linux en réseau et cohabitation avec Windows
363

 Exemples :
Linux en réseau et cohabitation avec Windows
364
Linux en réseau et cohabitation avec Windows
365

 Utilisation de la commande named-checkconf


 Commande qui permet de vérifier si le fichier named.conf ne comporte aucune erreur.

 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

 Utilisation de la commande named-checkzone


 Commande qui permet de vérifier qu’un fichier de zone ne comporte pas d’erreur.
Linux en réseau et cohabitation avec Windows
367

 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

 Les 5 services permettant à NFS de fonctionner sont :


 nfs : géré par le démon rpc.nfsd, ce protocole est la base de NFS et permet la création de
fichier, leur listing, leur lecture ou leur écriture. Ce protocole gère donc également les droits
(rwx, owner, bits..) et les statistiques sur les fichiers.
 mountd : géré par le démon rpc.mountd, il permet le montage des systèmes exportés
auxquels on accédera par nfs. Il envoie des requêtes de type mount et umount au serveur,
qui, bien sûr, connaît la liste des dossiers qu'il exporte.
 nsm (network status monitor) : géré par le démon rpc.statd, il sert à surveiller les
machines du réseau pour connaître leur état (cliente ou serveur) pour signaler, par exemple,
qu'elle redémarre.
 nlm (network lock manager) : géré par le démon rpc.lockd, assure l'intégrité et l'unicité de
l'accès au fichiers pour éviter que des données soient altérées par plusieurs clients en même
temps. Ce protocole gère un système de verrous (lock en Anglais) qui permettent de signaler
les fichiers utilisés. Ainsi, à l'aide du protocole nsm qui sait quand un client redémarre, il
libère tous les locks du client avant de les lui restituer si une nouvelle requête est émise.
Linux en réseau et cohabitation avec Windows
371

 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

 NFS se sert donc des fichiers suivants :


 /etc/exports : contient les directives d'exportations de dossiers. Ce fichier est lu par exportfs
qui le complète avec les options par défaut et transcrit chaque ligne en plusieurs en fonction
du nombre de noms de machines spécifié et inscrit dans etab
 /var/lib/nfs/etab : ce fichier contient les exportations réelles en cours (toutes options par
défaut explicitées). Ce fichier est initialisé par exportfs.
 /var/lib/nfs/rmtab : chaque ligne contient le nom d'un client et le système de fichiers qu'il a
monté depuis ce serveur.
 /proc/fs/nfs/exports : fournit la liste des clients réels qui ont un montage NFS en cours sur le
serveur.
 /var/lib/nfs/xtab : ce fichier est lu par mountd dès qu’un client distant demande l’accès au
montage.
Linux en réseau et cohabitation avec Windows
373

 Le processus de montage est donc le suivant :


 Quand un client souhaite accéder à un système de fichiers, il commence par le demander à
mountd (par le biais de portmap pour connaître le port de mounts).
 mountd regarde dans le fichier /var/lib/nfs/etab pour voir si le nom du client correspond à
celui que donne le client.
 Si le client est accepté, une entrée est ajoutée dans les fichiers /var/lib/nfs/rmtab et
/var/lib/nfs/xtab et avertit le noyau pour que le nouveau montage soit inscrit dans
/proc/fs/nfs/exports.
 Le serveur renvoie un «file handle» pour le point de montage que le client pourra ensuite
utiliser pour les opérations sur les fichiers du point de montage.
Linux en réseau et cohabitation avec Windows
374

 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

 Rechargement de la liste des exports NFS


 Pour recharger l’ensemble des exports NFS, il suffit d’exécuter :
⇒ exportfs -a
 Pour décharger tous les exports, taper :
⇒ exportfs -ua
 Affichage des exports NFS
 Pour obtenir la liste des «exports» montés par les clients sur le serveur local, exécutez :
⇒ showmount -a
 Pour obtenir la liste des «export» sur un serveur distant :
⇒ showmount -a <IP_ou_nom_DNS_serveur_distant>
ou
⇒ showmount -e <IP_ou_nom_DNS_serveur_distant>
Linux en réseau et cohabitation avec Windows
380

 Montage des exports NFS


 Pour monter un export NFS, il suffit de taper :
⇒ mount -t nfs -o user,nosuid,hard,intr
IP_ou_nom_DNS_serveur:/chemin/export/point/montage
 Si l’on veut utiliser le montage de façon permanente, utiliser le fichier /etc/fstab
⇒ IP_ou_nom_DNS_serveur:/chemin/export/point/montage nfs user,nosuid,hard,intr 0
Linux en réseau et cohabitation avec Windows
381

 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

 max log size = taille maximale du fichier journal, en Kio.


 socket options = indique les options à mettre sur les sockets comme par exemple
TCP_NODELAY pour que le système envoi immédiatement les petits paquets sans attendre
d'en avoir plusieurs.
 Exemple :
Linux en réseau et cohabitation avec Windows
386

 Configuration du partage des répertoires


 Les partages Samba sont décrits dans des sections ayant la forme suivante :
 [<nom du partage>]
 <option> = <valeur>
 Les paramètres principaux sont les suivants :
 comment = la description du répertoire partagé.
 path = le chemin du répertoire partagé. C'est le contenu du répertoire indiqué qui sera
partagé.
 read only = détermine si les clients pourront écrire ou non dans le répertoire partagé.
 public = autoriser ou non les connexions sans mot de passe.
 valid users = liste des seuls utilisateurs autorisés à se connecter séparés par des espaces. Si
on veut autoriser tous les utilisateurs il ne faut pas mettre cette option.
 browseable = détermine si le partage apparaîtra dans la liste des partages du serveur.
Linux en réseau et cohabitation avec Windows
387

 Protéger les répertoires partagés


 Il est possible de rendre privé un répertoire et d'autoriser ou non des utilisateurs à y accéder.
 Pour cela, pour chaque répertoire partagé ajoutez les options :
 public = no
 valid users = <nom des utilisateurs autorisés à accéder aux répertoires>
 Pour chaque nom que vous avez rentré, il faut ajouter l'utilisateur samba avec :
⇒ smbpasswd -a <nom de l'utilisateur>
 Un compte Unix du même nom doit exister. Si ce n'est pas le cas, il faut le créer avec la
commande adduser.
 Après chaque modification redémarrer le service smbd.
⇒ /etc/init.d/samba [start | stop | restart | status]
Linux en réseau et cohabitation avec Windows
388

 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

 Accès aux répertoires sous Linux


 Pour se connecter en ligne de commande à un partage à partir de Linux, on peut utiliser la
commande :
⇒ smbclient //<nom du serveur>/<nom du partage> -U <utilisateur>
 Il est également possible de monter un partage Samba avec :
⇒ smbmount //<nom du serveur>/<nom du partage> <répertoire local>
 Par exemple, pour monter un répertoire "public" il faut préciser qu'il faut se connecter en
guest :
⇒ smbmount //serveur/partage /point_de_montage -o guest
 Il faut également que votre compte utilisateur ait des droits sur le montage. Le compte root
peut utiliser smbmount sans trop de problème.
Linux en réseau et cohabitation avec Windows
390

 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

 Montage sous Windows 10


 Accéder à l’explorateur de fichiers (Windows + E).
 Aller dans l’onglet « Ordinateur ».
 Cliquer sur l’icône du lecteur réseau.

Linux en réseau et cohabitation avec Windows
393

 Dans la fenêtre qui s’ouvre, on doit renseigner l’adresse du dossier à monté.


 Pour le montage Samba, l’adresse prend la forme suivante :
\\SERVEUR\NOM_DE_LA_SECTION


Linux en réseau et cohabitation avec Windows
394

 En cliquant sur Terminer, on renseigne ensuite les identifiants de l’utilisateur :


Linux en réseau et cohabitation avec Windows
395

 Et voilà, nous avons accès au dossier :


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

 Montage automatique avec fstab


 Le fichier /etc/fstab est une liste des systèmes de fichiers qui seront montées automatiquement
à l'initialisation du système sauf en cas d'utilisation de l'option noauto.
 Il est possible d’éditer le fichier /etc/fstab pour ajouter vos propres volumes et partitions et
choisir dans quel dossier leur contenu apparaîtra.
 Le fichier contient 6 champs par ligne :

 file system : chemin/de/votre/volume.


 mount point : chemin/emplacement/final.
 type : type_de_systeme_de_fichier (ext4 ntfs etc.).
 options : voir_tableau_ci_dessous.
 dump : type_de_verifications (0 ou 1).
 pass : ordre_de_verification (0 1 2).
Linux en réseau et cohabitation avec Windows
398

 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

 Configuration IP standard d’un serveur Linux


 Méthode de configuration du réseau
 Nous avons accès à différentes méthodes pour configurer le réseau.
 Utilisation de l'outil graphique.
 Configuration manuelle en ligne de commandes et édition des fichiers de configuration.
Linux en réseau et cohabitation avec Windows
401

 Configuration statique de l'interface réseau


 Nous allons modifier l'adresse IP de la machine par 192.168.1.3. Pour ce faire, exécutez la
commande suivante:
⇒ nano /etc/network/interfaces
Linux en réseau et cohabitation avec Windows
402

 Configuration de la résolution DNS


 Si l'adresse IP de votre serveur DNS a changé, vous pouvez éditer le fichier /etc/resolv.conf
de la sorte:
⇒ nano /etc/resolv.conf
⇒ nameserver 192.168.1.1
 Configuration dynamique de l'interface réseau
 Si vous désirez avoir une configuration dynamique à l'aide du protocole DHCP. Exécutez la
commande suivante :

 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

 Identifier sa carte réseau WIFI


 Si votre ordinateur n'affiche aucun réseau WIFI alors que ces derniers sont disponibles, il est
possible que le pilote de votre carte ne soit pas installé. Pour savoir quel pilote est nécessaire,
il faut d'abord connaître son matériel.
 Si votre carte WIFI est reliée par USB à l'ordinateur, dans un terminal, saisissez la commande
suivante : lsusb
 Regardez le nom exact de votre carte WIFI et notez aussi le chipset qu'elle utilise.
 Par exemple pour un adaptateur USB de marque D-Link avec un chipset Realtek modèle
RTL8192SU.
Linux en réseau et cohabitation avec Windows
405

 Dans le cas contraire, dans un terminal, saisissez la commande suivante :


⇒ lspci | grep -i net
 Chez moi ça renvoie à l’écran cette ligne avec « Qualcomm Atheros QCA9377 » que j’ai
mis en gras et qui correspond au modèle de ma carte.

 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

 Pour obtenir la liste des réseaux en mode console


 Pour lister les périphériques réseau supportant le WIFI :
⇒ iw dev
 Pour lister les réseaux visibles sur l'interface wlan0 :
⇒ iw dev wlan0 scan
 Pour afficher l'état d'une connexion réseau sans fil :
⇒ iw dev wlan0 link
 Pour informations (statistiques) sur le point d'accès sur lequel vous êtes connecté :
⇒ iw dev wlan0 station dump
 Pour se connecter à un réseau ouvert :
⇒ iw dev wlan0 connect votre_essid
Linux en réseau et cohabitation avec Windows
408

 Le tableau suivant illustre quelques correspondances de commandes entre iw et iwconfig :


Linux en réseau et cohabitation avec Windows
409

 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

 Protocole de sécurisation Wifi


 Définition de WEP (Wired Equivalency Privacy)
 Développé à la fin des années 90 en tant que premier algorithme de cryptage pour la
norme 802.11, le WEP a été conçu avec un objectif principal : empêcher les pirates
informatiques d’espionner les données sans fil lorsqu’elles étaient transmises entre le client et
le point d’accès. Dès le début, WEP n’avait pas la force nécessaire pour accomplir cela.
 Les experts en cybersécurité ont identifié plusieurs failles graves dans le WEP en 2001, qui
ont finalement conduit à des recommandations à l’échelle de l’industrie visant à éliminer
progressivement l’utilisation du WEP dans les appareils grand public. Après une
cyberattaque à grande échelle exécutée contre T.J. Maxx en 2009 qui a été attribuée aux
vulnérabilités exposées par WEP, la norme de sécurité des données du secteur des cartes de
paiement interdisant aux détaillants et aux autres entités ayant traité des données de carte
de crédit d’utiliser WEP.
Linux en réseau et cohabitation avec Windows
411

 WEP utilise le chiffrement de flux RC4 pour l’authentification et le chiffrement. La norme


spécifiait à l’origine d’une clé de chiffrement pré-partagée de 40 bits. Une clé de 104 bits
a ensuite été rendue disponible après la levée d’un ensemble de restrictions imposées par le
gouvernement américain. La clé doit être entrée manuellement et mise à jour par un
administrateur.
 La clé est combinée à un vecteur d’initialisation à 24 bits (IV) afin de renforcer le cryptage.
Cependant, la petite taille de l’IV augmente la probabilité que les clés soient réutilisées, ce
qui les rend plus faciles à déchiffrer. Cette caractéristique, ainsi que plusieurs autres
vulnérabilités, y compris des mécanismes d’authentification font du WEP un choix risqué pour
la sécurité sans fil.
Linux en réseau et cohabitation avec Windows
412

 Définition de WPA (Wi-Fi Protected Access)


 WPA est un protocole de sécurité censés répondre aux principales faiblesses de WEP
décelées par les chercheurs. Il est devenu disponible en 2003, un an avant que WEP ne soit
obsolète.
 Répondant aux principales vulnérabilités du standard WEP, WPA inclut le protocole TKIP
(Temporal Key Integrity Protocol) pour augmenter la puissance cryptographique de RC4,
ainsi que des contrôles d’intégrité des messages pour déterminer si les paquets transmis sur
le réseau ont été modifiés. Malgré toutes les améliorations, les manifestations publiques
montrent toujours que le WPA est vulnérable aux intrusions. Même s’il est dit qu’il est meilleur
que le protocole de sécurité précédent (WEP), le WPA n’était qu’une mesure intermédiaire
dans l’attente d’une sécurité de réseau sans fil plus sécurisée et plus complexe.
 Le protocole WPA2 quant à lui utilise un algorithme de chiffrement beaucoup plus puissant,
possédant une clé très forte. Il s’agit de la dernière norme du protocole WPA permettant de
protéger votre réseau WLAN.
Linux en réseau et cohabitation avec Windows
413
Travaux pratiques
414

 Configuration du poste de travail pour accéder à


Internet. Accéder à des partages de données
distants. Automatisation de transferts de fichiers
par FTP.
Sommaire
415

 Installer Linux

 Matériels supportés et configurations minimales.


 Les informations à recueillir avant l'installation.
 Quel partitionnement et quel type de file system pour quel besoin ?
 La cohabitation avec Windows (multiboot). Les pièges classiques.
Installer Linux
416

 Matériels supportés et configurations minimales


Installer Linux
417

 Les informations à recueillir avant l’installation


 Dans la majorité des cas, tout est bien détecté et configuré par GNU/Linux. Quand ce n’est
pas le cas, cela vient principalement des constructeurs de matériel informatique, qui mettent
sur le marché leurs produits en ne faisant des pilotes que pour Microsoft Windows et Mac OS
X (car « Linux n’a pas encore suffisamment de parts de marché pour qu’on s’en préoccupe »
disent-ils).
 Les développeurs (parfois bénévoles) de GNU/Linux travaillent dur pour rendre compatibles
tous ces matériels, en développant des pilotes, parfois sans avoir les spécifications sous la
main (car, en plus de ne pas faire de pilotes, certains constructeurs ne disent même pas
comment leur matériel fonctionne ! Les développeurs sont obligés dans ce cas de deviner
comment fonctionne le matériel par plusieurs méthodes de rétro-ingénierie).
Installer Linux
418

 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

 Quel partitionnement et quel type de file system


pour quel besoin ?
 Schéma de partitionnement recommandé
 Pour les nouveaux utilisateurs, les machines personnelles ou familiales, et autres systèmes
mono-utilisateur, une simple partition / (plus celle d'échange) est sans doute la solution la plus
simple.
 Pour les systèmes avec plusieurs utilisateurs, ou les systèmes avec beaucoup d'espace disque, il
vaut mieux placer les répertoires /var, /tmp et /home chacun sur une partition distincte de la
partition /.
 Dans certains cas, vous pourriez avoir besoin d'une partition /usr/local distincte si vous
prévoyez d'installer beaucoup de programmes qui ne font pas partie de votre distribution.
 Si votre machine est destinée à être un serveur de courrier, vous pourriez avoir besoin de
mettre aussi /var/mail sur une partition distincte.
Installer Linux
420

 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

 Les différents systèmes de fichier


 Qu’est ce qu’un système de fichier ?
 Un système de fichiers est la partie du système d’exploitation qui se charge de gérer le
stockage et la manipulation de fichiers (sur une unité de stockage : partition, disque, CD).
 Avant qu’un système de fichiers puisse créer et gérer des fichiers sur une unité de stockage,
son unité doit être formatée selon les spécificités du système de fichiers.
 Le formatage inspecte les secteurs, efface les données et crée le répertoire racine du
système de fichiers.
 Il crée également un superbloc pour stocker les informations nécessaires à assurer l’intégrité
du système de fichiers.
 Le superbloc décrit l'état d'occupation des secteurs, alloués au système de fichiers. Lorsqu'on
cherche à écrire sur un disque, il est en effet indispensable de connaître la liste des
emplacements libres et occupés. Il faut donc construire et tenir à jour une carte d'occupation
des lieux.
Installer Linux
422

 Un superbloc contient notamment :


 L’identifiant du système de fichiers.
 Le nombre de blocs dans le système de fichiers.
 La liste des blocs libres.
 L’emplacement du répertoire racine.
 La date et l’heure de la dernière modification du système de fichiers.
 Une information indiquant s’il faut tester l’intégrité du système de fichiers.
 Si le superbloc est corrompu, le système de fichiers risque ne plus pouvoir accéder aux
fichiers.
 Pour réduire le risque, il maintient plusieurs copies du superbloc.
 Ces copies permettent de vérifier l’intégrité du superbloc et de le restaurer.
Installer Linux
423
Installer Linux
424
Installer Linux
425
Installer Linux
426
Installer Linux
427
Installer Linux
428
Installer Linux
429
Installer Linux
430
Installer Linux
431
Installer Linux
432
Installer Linux
433

x
Installer Linux
434
Installer Linux
435

 Cohabitation avec Windows (multiboot)


 Principe fondamentaux
 On appelle MultiBoot la possibilité d'utiliser plusieurs OS (Windows 7, Windows 8, Linux,...)
sur une même machine. Les programmes permettant de gérer le MultiBoot sont appelés des
BootLoader (ou chargeurs d'amorçage).
 Lorsque vous installez un OS, le MBR est automatiquement modifiée et le nouveau BootLoader
y est installé. S'il y avait déjà un OS installé sur la machine, le BootLoader du nouvel OS
écrase celui de l'ancien qui devient alors inaccessible.
Installer Linux
436

 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

 Comparaison entre BIOS et UEFI


 Les nouveaux ordinateurs utilisent le microprogramme UEFI au lieu du BIOS traditionnel. Les
deux sont des logiciels de bas niveau qui démarre lorsque vous démarrez votre PC avant de
démarrer votre système d'exploitation, mais UEFI est une solution plus moderne, prenant en
charge des disques durs plus gros, des temps de démarrage plus rapides, plus de
fonctionnalités de sécurité et, de manière pratique, des graphiques et la gestion de la souris.
Installer Linux
438

 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

 MBR (Master Boot Record)


 Il est utilisé sur nos disques durs depuis la création du BIOS. Il est en fait le premier secteur
d’un disque dur. En disposant de la table de partitions et une routine d’amorçage, le MBR est
capable de charger le système d’exploitation.
 De nos jours, le MBR ne peut plus répondre à vos besoin à cause de ses sérieux inconvénients,
comme :
 4 partitions principales maximum ou 3 partitions principale et 1 partition étendue.
 Taille d’un disque dur limitée à 2,2 To.
 Ne pas supporter le démarrage d’un disque dur MBR sur un système UEFI.
 Impossible de démarrer le système si les données d’amorçage sont endommagées.
Installer Linux
441

 GPT (GUID Partition Table)


 Les limitations actuelles du MBR ont poussé les fabricants à se tourner vers une nouvelle table
de partitionnement plus performante, introduite par Intel : le GPT. Le GPT est d’ailleurs le
standard de l’UEFI, le remplaçant du BIOS.
 Les avantages :
 128 partitions maximum
 256 To par partition
Installer Linux
442

 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

 Désactiver le démarrage sécurisé


 Désactivez maintenant Secure Boot dans l'UEFI. Pour Ubuntu, cela n'est souvent plus
nécessaire, car Ubuntu (contrairement à d’autre distribution) contient une signature numérique
pour le démarrage sécurisé. Cependant, parfois cela pose toujours des problèmes même pour
Ubuntu. Donc, désactiver le démarrage sécurisé dans tous les cas.
Installer Linux
444

 Mettez le gestionnaire de démarrage de Windows au bas de l'ordre de priorité


de démarrage
 Vous placez le Gestionnaire de démarrage Windows (parfois appelé: Gestionnaire de
démarrage du système d'exploitation) en permanence au bas de l'ordre de priorité de
démarrage.
Installer Linux
445

 Parfois nécessaire: activer CSM (dans certains cas: Legacy)


 Dans certains cas, il est nécessaire d'activer CSM (Compatibility Support Module). Dans
certains cas, cela s'appelle "Legacy". Cela fournit une compatibilité BIOS héritée, en émulant
un environnement BIOS démodé.
 Vous devriez trouver cette option dans chaque UEFI, généralement dans la section Boot.
ASUS l'appelle "Launch CSM".
 Essayez-le d'abord sans CSM, car dans certains cas, CSM crée ses propres problèmes. Donc,
ne faites cela que lorsque c'est nécessaire.
Installer Linux
446

 Installez toujours Windows en premier


 Windows ne détecte pas les autres systèmes d’exploitation et n’installe pas de menu de
démarrage. Quand vous l’installez il écrase votre séquence de démarrage et votre ordinateur
démarre alors directement sous Windows.
 Linux détecte les autres systèmes d’exploitation et construit un menu de démarrage à partir
duquel vous choisissez le système à démarrer.
 Pour cette raison, si vous souhaitez « dual-booter » ou « multi-booter » avec Windows, il est
conseillé d’installer Windows en premier, avant d’installer Linux.
Installer Linux
447

 Installation en mode UEFI


 Avant de commencer, sous Windows cherchez « Informations système » sur le menu
Démarrer. Nous voulons savoir le type de boot utilisé par votre machine, UEFI ou BIOS.

 Assurez-vous que vous avez le « Mode BIOS » mis en « UEFI » .


Installer Linux
448

 Pour installer Ubuntu en mode UEFI


 Il faut utiliser une version d'Ubuntu compatible avec l'UEFI.
Installer Linux
449

 Réparer la séquence de démarrage


 Si Windows écrase votre séquence de démarrage :
 Démarrez Linux en mode live (avec votre clé USB ou votre DVD Linux).
 Ouvrez un terminal.
 Pour afficher les partitions, tapez lsblk -f.
 Trouvez la partition où Linux est installé. Dans la plupart des cas il s’agit de la seule partition
ext4.
 Montez la partition Linux et réinstallez le menu grub avec les commandes suivantes :
⇒ mount /dev/sda4 /mnt
⇒ grub-install --root-directory=/mnt /dev/sda
⇒ update-grub (seulement si Windows n’apparaît plus dans la liste de choix lors du
démarrage)
 Dans les commandes ci-dessus, remplacez /dev/sda4 et /dev/sda par les noms appropriés
pour votre partition Linux et votre disque dur.
Travaux pratiques
450

 Installation de Linux (partitionnement pertinent du


disque, l’impact du choix des packages, la
configuration du réseau). Problème classiques et
résolutions (carte graphique non reconnue,
cohabitation avec Windows...).
Sommaire
451

 Complément d’administration

 L'administration via les outils graphiques (Webmin, outils systèmes, etc.).


 Créer un compte et son environnement.
 Installer un logiciel (packages et sources). Exemples d'utilisation des commandes
rpm et apt-get...
 Problèmes classiques et solutions.
Complément d’administration
452

 L’administration via les outils graphiques


 WebMin
 Webmin est une interface Web basée sur Perl pour l’administration système sous Linux.
 Avec Webmin, on peut facilement mettre en place, via le navigateur Web, de nouveaux
comptes utilisateurs, gérer les quotas disque, configurer les fichiers, contrôler le serveur
Apache ainsi que MySQL et PHP.
 Webmin facilite l’administration des serveurs pour les débutants administrateur système.
 Webmin est vraiment une trousse à outils graphique pour gérer vos serveurs.
 Il permet de gérer votre serveur ainsi que ces services via des modules tierces (Apache,
Postfix, Bind…).
Complément d’administration
453

 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

 Un exemple de configuration de NetworkManager


Complément d’administration
462
Complément d’administration
463

 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

 Outil de gestion des comptes et groupes d'utilisateurs (users-admin)


 Les systèmes d'exploitation de la famille GNU/Linux, sont un système foncièrement multi-
utilisateurs. Cela signifie que vous n'êtes pas limité à un seul compte d'utilisateur dans le
fonctionnement de votre ordinateur. Vous pouvez créer plusieurs comptes d'utilisateurs pour
chaque usager de votre ordinateur, de même que pour divers usages.
 users-admin est un utilitaire graphique et fait partie de package gnome-system-tools et
remplace les commandes nécessaires à la gestion d'utilisateurs. Il dispose de fonctionnalités
pour :
 Créer ou supprimer des comptes d'utilisateurs ;
 Modifier les paramètres des comptes des utilisateurs, y compris leur mot de passe ;
 Créer ou supprimer des groupes d'utilisateurs et modifier les propriétés des groupes
existants.
Complément d’administration
466

 Gérer son compte d'utilisateur


Complément d’administration
467

 Modifier son mot de passe


Complément d’administration
468

 Changer le type de compte d'utilisateur


Complément d’administration
469

 Créer un compte et son environnement


 adduser
 Ajouter un utilisateur.
 Ajouter l'utilisateur toto au système. Un mot de passe sera demandé pour ce nouvel
utilisateur ainsi que quelques informations.
⇒ adduser toto
 Ajouter l'utilisateur toto au groupe "audio".
⇒ adduser toto audio
 chgrp
 Change l'appartenance d'un fichier à un groupe. On ne peut donner l'appartenance de
groupe à un fichier qu'à un groupe dont on est membre... L'administrateur peut, lui, affecter
un fichier à n'importe quel groupe.
 Donner le groupe "audio" au fichier "fichier".
⇒ chgrp audio fichier
Complément d’administration
470

 Changer récursivement l'appartenance à un groupe. Le répertoire et les fichiers contenus


dans ce répertoire changeront de groupe.
⇒ chgrp -R audio /home/toto/répertoire
 chmod
 Changement des bits de comportement d'un ou de plusieurs fichiers; Il est utilisé pour changer
les droits sur un fichier.
 Donner le droit en lecture/écriture au propriétaire et lecture au groupe :
⇒ chmod 640 fichier
 Exemple de chmod plus complexe : La commande ci-dessous fera un chmod 664 récursif sur
les fichiers (et uniquement sur les fichiers) dans le répertoire /home/rep/
⇒ find /home/rep/ -type f -exec chmod 664 {} \;
 Faites très attention avec la commande chmod qui peut être très dangereuse pour votre
système si elle est utilisée à mauvais escient... (vous ne serez pas toujours capable de
retrouver les droits d'origine sur vos fichiers en cas de mauvaise manipulation)
Complément d’administration
471

 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

 Ce qu’il faut retenir


 Tout ce qui concerne la gestion et l'authentification des utilisateurs est inscrit dans un seul
fichier :
 /etc/passwd
 La gestion des groupes est assurée par :
 /etc/group
 Les mots de passe cryptés sont maintenant placés dans :
 /etc/shadow (par sécurité lisible seulement par root)
Complément d’administration
480

 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

 Installer un logiciel (package et source)


 Les différents type d’archives
 Il existe plusieurs façons de récupérer une application fonctionnant sous Linux :
 Sous forme de paquetage RPM. Il s'agit d'un fichier portant l'extension .rpm permettant une
installation automatique, pour les distributions Linux telles que RedHat ou CentOS.
 Sous forme de paquetage DEB. Il s'agit d'un fichier portant l'extension .deb permettant une
installation automatique, pour les distributions Linux Debian ou Ubuntu.
 Sous forme d'archive. Il s'agit de fichiers compressés comportant l'extension .tar.gz, .gz ou
.tar.bz2. Il s'agit généralement des sources du logiciel. Il vous faut donc compiler le
programme sur votre machine afin de rendre son exécution possible.
Complément d’administration
484

 Les packages RPM


 RPM (Red Hat Package Manager) est, comme son nom l'indique (en anglais), un outil de
gestion de packages (ensemble de fichier constituant une application) pour Linux. Il permet
d'installer des applications, ainsi que les supprimer facilement. Grâce à une commande
simple, les fichiers s'installent directement dans les "bons" répertoires.
Complément d’administration
485

 RPM a quatre utilités supplémentaires :


 Mettre à jour les packages : lorsque vous récupérez une nouvelle version d'un package, il
n'est pas nécessaire de désinstaller la version précédente avant d'installer la nouvelle. En
effet RPM permet une mise à jour automatique des packages.
 Interrogation : RPM permet effectivement de connaître le contenu d'un package, mais il
permet aussi de savoir à quel package appartient un fichier.
 Vérification du système : RPM permet de vérifier l'intégrité d'un package (c'est-à-dire de
déterminer si tous les fichiers que contenait le package sont bien installés dans le système.
 Accès aux sources : RPM met à disposition des utilisateurs d'un package les sources, ainsi
que les instructions nécessaires à la compilation au cas où des utilisateurs voudraient
modifier les fichiers du package.
Complément d’administration
486

 Les commandes RPM :


 Installation : pour installer le package "mpg123-0_59p-1_i386.rpm" il suffira de taper :
⇒ rpm -ivh mpg123-0_59p-1_i386.rpm
 Si le package a déjà été installé précédemment le système vous affichera le message :
⇒ package mpg123-0_59p-1 is already installed (L'option -replacepkgs permet de forcer
l'installation)
 Suppression : pour supprimer un package il suffit de taper :
⇒ rpm -e mpg123 (Où mpg123 représente le nom du package à désinstaller, ce sera un
autre nom pour vous…)
 Mise à jour : pour mettre à jour un package (ce qui part du principe qu'une version
précédente du package a déjà été installée...) il faut taper la commande :
⇒ rpm -Uvh mpg123-0_59p-1_i386.rpm
Complément d’administration
487

 Interrogation : Il existe plusieurs commandes visant à interroger un ou plusieurs packages


selon divers critères. Les voici :
 Pour connaître des détails sur un package particulier :
⇒ rpm -q mpg123-0_59p-1_i386.rpm
 Pour interroger tous les packages existants :
⇒ rpm -qa
 Pour interroger les packages contenant un fichier particulier :
⇒ rpm -f NomDuFichier
 Pour avoir des informations sur un package :
⇒ rpm -p NomDuPackage
Complément d’administration
488

 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

 Qu’est ce que Yum


 Yum est le gestionnaire de paquets de Red Hat qui peut rechercher des informations sur les
paquets disponibles, extraire des paquets de référentiels, les installer et les désinstallez, et
mettre à jour un système complet à la dernière version disponible.
 Yum assure la résolution de dépendances automatiquement lorsque l'on met à jour, installe ou
supprime des paquets, et donc, est capable de déterminer, chercher et installer tous les
paquets dépendants disponibles automatiquement.
Complément d’administration
491

 Les commandes YUM :


 Installation un paquet :
⇒ yum install paquet

 Désinstaller un paquet :
⇒ yum remove paquet
 Si on souhaite désinstaller aussi les dépendances non utilisés :
⇒ yum autoremove paquet

 Mettre à jour un paquet :


⇒ yum update paquet

 Mettre à jour la distribution :


⇒ yum update
Complément d’administration
492

 Rétrograder la version du paquet :


⇒ yum downgrade paquet

 Réinstaller un paquet :
 ⇒ yum reinstall paquet

 Recherche de paquets :
⇒ yum list paquet

 Avoir des infos sur un paquet :


⇒ yum info paquet

 Si on veut étendre la recherche à la description :


⇒ yum search mot
Complément d’administration
493

 Les packages DEB


 La distribution Debian propose un outil de gestion de package permettant d'automatiser
l'installation, la configuration et la mise à jour des logiciels installés par ce biais. Les packages
Debian sont ainsi des fichiers portant l'extension .deb et pouvant être installés manuellement
grâce à la commande suivante :
⇒ dpkg -i nom_du_package.deb
 C'est un outil de bas niveau puisqu'il ne va pas automatiquement installer les dépendances, il
ne fait qu'avertir l'administrateur des dépendances manquantes.
 De plus un système complémentaire a été mis au point afin de gérer les dépendances entre
les différents packages et de permettre de les mettre à jour par simple téléchargement : il
s'agit du système APT (Advanced Packaging Tool). Ce système fonctionne à partir d'une liste
de sources (emplacements auxquels des paquetages sont disponibles) présente dans le fichier
/etc/apt/sources.list.
Complément d’administration
494

 Les commandes APT:


 Installation : pour installer le package "nom_du_package" il suffira de taper :
⇒ apt-get install nom_du_package
 En cas de problème de dépendance il est possible (mais déconseillé, sauf en connaissance
de cause) de forcer l'installation avec la commande suivante :
⇒ apt-get install -f nom_du_package
 Simulation d'installation : il peut être utile de simuler l'installation du package avant de
procéder à son installation afin de connaître exactement les paquetages dépendants qui
vont être installés et estimer les problèmes éventuels :
⇒ apt-get install -s nom_du_package
Complément d’administration
495

 Suppression : pour supprimer un package il suffit de taper :


⇒ apt-get remove nom_du_package
 Cette commande supprime le paquet mais conserve les fichiers de configuration. Pour
supprimer également les fichiers de configuration il suffit d'utiliser la commande suivante :
⇒ apt-get remove --purge nom_du_package
 Reconfiguration : pour reconfigurer un package il suffit de taper :
⇒ dpkg --reconfigure nom_du_package
 Mise à jour de la liste : pour mettre à jour la liste des packages il faut taper la commande :
⇒ apt-get update
Complément d’administration
496

 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

 Nettoyage : à chaque installation d'un logiciel, le système APT charge le paquetage


concerné et le stocke dans un référentiel local. Au bout d'un certain temps la liste des
paquetages conservés peut devenir importante et gourmande en espace disque, c'est la
raison pour laquelle il peut être utile de faire le ménage parmi ces fichiers. La commande
clean permet de supprimer tous les paquetages n'étant pas verrouillé, ce qui signifie que le
paquetage devra être à nouveau téléchargé s'il doit être reconfiguré :
⇒ apt-get clean
 La commande autoclean permet de supprimer tous les paquetages n'étant plus
disponibles en téléchargement et donc a priori obsolètes :
⇒ apt-get autoclean
Complément d’administration
498

 Interrogation : Il existe plusieurs commandes visant à interroger un ou plusieurs packages


selon divers critères. Les voici :
 Pour connaître la liste des packages contenant un mot clé particulier :
⇒ apt-cache search mot_cle
 Pour obtenir plus d'information sur un paquetage donné :
⇒ apt-cache show nom_du_package
 Pour afficher les dépendances d'un paquetage :
⇒ apt-cache depends nom_du_package
 Pour connaître le paquetage auquel un fichier appartient :
⇒ apt-file search nom_du_fichier
 Pour connaître la lite des fichiers d'un paquetage :
⇒ apt-file list nom_du_package
Complément d’administration
499

 Décompresser des archives


 Les programmes sont la plupart du temps fournis compressés, c'est-à-dire sous un format plus
compact permettant de réduire la taille du programme, notamment pour faciliter son
téléchargement, c'est le programme GZIP qui permet ce compactage. Plusieurs fichiers
peuvent aussi être simplement regroupés en une seule archive pour faciliter leur transport,
c'est le rôle du programme TAR. Enfin, les fichiers peuvent être compressés et regroupés en
une archive portant l'extension .tar.gz.
Complément d’administration
500

 Les données compressées existent sous plusieurs formats :


 Tar : les données sous ce format portent l'extension .tar :
 Pour créer une archive :
⇒ tar cvf nom_du_fichier.tar fichier_ou_répertoire_à_compresser
 Pour décompresser une archive :
⇒ tar xvf nom_du_fichier.tar
 Pour créer une archive compressé :
⇒ tar cvfz nom_du_fichier.tgz fichier_ou_répertoire_à_compresser
 Tar/GZip (on parle généralement de Tarball) : les données compressées en TAR et en GZIP
portent l'extension .tar.gz ou .tgz. pour décompresser ces fichiers il faut taper en ligne de
commande :
⇒ tar zxvf nom_du_fichier.tar.gz
 Gzip: les fichiers compressées en Gzip possèdent l'extension .gz pour décompresser ces
fichiers il faut taper en ligne de commande :
⇒ gunzip nom_du_fichier.gz
Complément d’administration
501

 Pour créer un fichier compressé :


⇒ gzip nom_du_fichier

 Bzip2 : compresser les fichiers il faut taper en ligne de commande :


⇒ bzip2 nom_du_fichier

 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

 Tar/BZip2 : les données compressées en Tar et en Bz2 portent l'extension .tar.bz2


⇒ tar cvfj nom_du_fichier.tar.bz2 fichier_ou_répertoire_à_compresser
nom_du_fichier
⇒ tar jxvf nom_du_fichier.tar.bz2
Complément d’administration
502

 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

 Dans un premier temps il faut exécuter la commande :


⇒ ./configure
 Cette commande est un script permettant d'adapter le programme à la machine courante.
Les options de configure sont :
 Pour obtenir de l'aide :
⇒ ./configure --help
 Pour installer l'application dans un répertoire spécifique :
⇒ ./configure –prefix="repertoire"
 Dans un second temps il faut compiler le programme, grâce à la directive :
⇒ make
 Cette commande peut prendre plusieurs minutes/heures selon votre configuration et le
logiciel à compiler. En cas de problème, la compilation s'arrêtera en vous renvoyant un
message d'erreur. Si tout se passe normalement de nombreuses lignes vont être affichées,
puis le programme reviendra à la ligne de commande.
Complément d’administration
504

 Après avoir compilé l'application, il est possible de l'installer. L'installation de l'application


doit s'effectuer en tant que super utilisateur (root)
 Pour installer l'application, la syntaxe suivante est généralement utilisée :
⇒ make install
 En cas d'échec lors de la compilation, il faut nettoyer les fichiers makefile ayant été créés
automatiquement lors de la compilation avant de recommencer une nouvelle compilation.
Cela se fait grâce à la commande :
⇒ make clean
 Une fois toutes ces étapes franchies, votre programme devrait être exécutable et se trouver
soit dans le répertoire spécifié lors de l'installation, ou bien généralement dans
/usr/local/nom_du_programme.
Travaux pratiques
505

 Création d’un compte avec la commande useradd


puis avec WEBMIN. Installation d’un logiciel à
partir de ses sources (tar). Installation d’un package
rpm.
Question?

Vous aimerez peut-être aussi