Vous êtes sur la page 1sur 216

Partie I

Administration système

1
Unité 1

Administration des utilisateurs et


des groupes

2
Utilisateurs
 Chaque utilisateur qui utilise le système doit être connu de
celui-ci par un nom et, éventuellement, un mot de passe.
 Un utilisateur doit appartenir à un ou plusieurs groupes
d'utilisateurs pour être autorisé à utiliser le système.
 Il existe plusieurs méthodes d'identification et de contrôle des
utilisateurs, nous ne parlerons ici que de la méthode la plus
simple mettant en oeuvre les fichiers /etc/passwd et /etc/group.
 Les utilisateurs et les groupes sont repérés dans le système par
des numéros : uid pour le numéro d'utilisateur (User IDentifier)
et gid pour le numéro de groupe (Group IDentifier).
 Le numéro est unique pour un utilisateur ou un groupe donné.

 L'identification d'un utilisateur s'effectue dans le fichier


/etc/passwd.
3
Hiérarchie de comptes
 Root
 super utilisateur
 les permissions d ’accès ne sont pas appliquées sur lui
 il peut faire tous
 compte pour l ’administrateur du système
 bin, daemon, lp, sync, news, ftp …
 comptes utilisateur utilisés par différentes applications et
démons
 ne peuvent pas (on doit pas) être utiliser comme login
 comptes ordinaires

4
Enregistrer un utilisateur

 Un utilisateur est caractérisé par une ligne dans le fichier /etc/password.  


 Une ligne est formée par les champs suivants :
login:passwd:uid:gid:comment:home:shell
 login : Il s'agit du nom de l'utilisateur. C'est un alphanumérique de 8 caractères
maximum.
 passwd : Il apparaît dans ce fichier sous forme codée.
 uid : Il s'agit d'un numéro unique de l'utilisateur. Compris entre 0 et
65535. Les 100 premiers nombres sont par convention réservés au système
et ne correspondent pas à des utilisateurs normaux.
 gid : Numéro de groupe. Chaque utilisateur appartient à un groupe
principal. Il pourra également appartenir à des groupes secondaires. Cette
notion de groupe interviendra au niveau des permissions sur les fichiers.
 comment : Nom complet de l'utilisateur.
 home : Chemin complet de la directory attribuée à l'utilisateur
 shell : Chemin complet du shell, le programme qui interagit avec
l'utilisateur et qui permet de taper des commandes (csh, sh, bash, tcsh, ...).

5
/etc/shadow
 Le fichier /etc/passwd est public (toute
personne qui a un compte sur la machine
peut le lire).
 Pour contrecarrer cette faille, certains
systèmes ont introduit le fichier /etc/shadow  
 lisible uniquement par root
 contient les mots de passe des utilisateurs, qui
disparaissent alors de /etc/passwd.
 Si on ajoute un utilisateur à la main, cela implique
d'éditer les 2 fichiers.

6
/etc/skel
 Après la création d’un compte
utilisateur, tous les fichiers de /etc/skel
sont copiés dans le répertoire personnel
de cet utilisateur.

 On place dans ce répertoire les fichiers


dont tous le monde doit en avoir une
copie

7
La commande su
 La commande su permet de changer l’identité
de l’utilisateur courant.
 Syntaxe su [[-] utilisateur]
 Utilisateur est l’utilisateur dont on veut prendre
l’identité
 Si aucun utilisateur n’est spécifié, le changement
se fait vers l’utilisateur root
 La commande demande un mot de passe
avant d’obtempérer. (sauf si root)

8
Gestion des comptes
 Créer un compte pour un nouvel utilisateur
 Commande useradd
 Syntaxe : useradd [options] nom_login
 Options :
-u uid pour fixer l'identifiant uid
-g groupe-primaire
 
-G liste fixe l'appartenance de l'utilisateur à une liste de groupes secondaires
(séparateur , sans espace)
-s shell par défaut, attribution du shell par défaut bash
-c commentaire
 
-d rep. Personnel par défaut dans le répertoire /home
-e date-expiration fixe la date d'expiration du compte (format MM/JJ/AA)
-m pour créer le répertoire personnel
-k rep-skel recopie le contenu de rep-skel dans le rép. personnel, par défaut
/etc/skel

9
Gestion des comptes
commande useradd
 Pour examiner les valeurs par défaut
appliquées par useradd :
 commande useradd -D ou
 éditer /etc/default/useradd
GROUP=100   identifiant du groupe primaire
HOME=/home   racine des rép. personnels INACTIVE=-1  
(nb de jours avant destruction du
compte)
EXPIRE=   nb de jours avant expiration du mot de
passe
SHELL=/bin/bash   shell de connexion attribué au
compte
SKEL=/etc/skel   fichiers recopiés par défaut dans
chaque rép. personnel
10
Gestion des comptes
 La commande passwd
 Syntaxe : passwd [options ] nom_login
 Options
--stdin mode non interactif.
-d l'utilisateur pourra se connecter sans mot de passe !
-l pour verrouiller le compte et empêcher sa connexion.
-u pour déverrouiller.

11
Gestion des comptes
 Connaître l'uid et le gid de l'utilisateur courant
 Commandes ( id, howami, how am i )
bash:> id
uid=501(stage1) gid=501(stage1) groups=501(stage1), 504(stagiaire)

 Pour décrire un utilisateur


 Commande chfn
Cette commande permet d'indiquer dans le champ
numéro 5 du fichier /etc/passwd différentes
informations sur un utilisateur

12
Gestion des comptes
 Supprimer le compte d'un utilisateur
(non connecté)
 La commande userdel
 Syntaxe : userdel [-r] nom_login
 L'option -r supprime aussi le rép. personnel de
l'utilisateur
 La commande supprime toute trace de l'utilisateur
dans le fichier de configuration : /etc/passwd y
compris dans les groupes d'utilisateurs.

13
Gestion des comptes
 Modifier le compte d’un utilisateur
 La commande usermod
 Syntaxe : usermod [options] nom_login
Les options sont les mêmes que useradd
 Exemple
usermod -G stagiaire,prof stagex
ajoute stagex dans les 2 groupes stagiaire et profs (qui
doivent exister)

14
Les groupes
 Un groupe est un ensemble d'utilisateurs.
 Chaque utilisateur doit faire partie au moins
d'un groupe.
 Dans /etc/passwd chaque utilisateur possède
un groupe par défaut, précisé par son
identifiant gid dans ce fichier.
 L'appartenance au groupe primaire n'étant
pas exclusive, tout utilisateur peut faire
partie de plusieurs autres groupes.
 La liste des groupes est donnée par le
fichier /etc/group 15
Le fichier /etc/group
 Le fichier de déclaration des groupes /etc/group
contient une ligne par groupe dans un format
similaire au fichier /etc/passwd.
 Une ligne de ce fichier comporte les champs suivants,
séparés par des caractères `:' :
 nom du groupe
 mot de passe du groupe
 numéro du groupe (gid)
 liste des utilisateurs appartenant au groupe séparés par des
virgules
 Par exemple :
  actrices:*:400:sandra,meg,michelle

16
Commandes utiles
 Pour lister tous les groupes d'un utilisateur :
groups nom_login
 Pour créer un nouveau groupe
groupadd nom_groupe
 Supprimer un groupe : groupdel nom_groupe
Le groupe est supprimé du fichier /etc/group.
 modifier un groupe
 groupmod -n nouveau_nom nom_groupe
 Pour ajouter un utilisateur à un groupe
Le plus simple est d'éditer le fichier /etc/group et
d'ajouter une liste d'utilisateurs (séparés par des
virgules) sur la ligne du groupe.
17
Processus d ’initialisation
utilisateur
 /etc/profile
 $HOME/.bash_profile
 $HOME/.bashrc
 /etc/bashrc

[user@host pwd]$ Bourne Again Shell

 $HOME/.bash_logout

18
newgroup
 La commande newgrp permet à un
utilisateur de changer son groupe courant.
 Par exemple :
bash$ newgrp actrices
bash$ id
uid=500 (sandra) gid=400 (actrices) groups=500(sandra),100(users),
400(actrices)

19
Unité 2

Démarrage et arrêt du
système

20
Etape de démarrage de Linux
Power-On

BIOS

Master boot record

Noyau Linux

init

Système prêt

21
Basic Input Output System
 Checks mémoire
 lit les options à partir de la mémoire non
volatile
 memory timings
 ordre des périphériques de boot
 puis cherche le périphérique de boot dans
l’ordre spécifié
 charge le Master Boot Record est l’exécute

22
Master Boot Record MBR
 Le premier secteur du périphérique de boot
 il contient la table des partitions et le bootstrap
loader
 le bootstrap loader charge le premier secteur de la
partition active (secteur de boot) et exécute le
gestionnaire d ’amorçage qui s’y trouve.
 Le gestionnaire d’amorçage peut donner accès aux
différents Système d ’exploitation
 Dans linux, le gestionnaire d’amorçage est lilo
 charge le programme d ’amorçage de deuxième niveau
 nous permet de passer des options au Système
d ’exploitation
 charge le Système d ’exploitation
23
LILO
 Programme qui permet de générer et d'installer le
programme de démarrage du noyau

 syntaxe lilo [-v] [-v] [-c config_file] [-t]


-v : mode verbeu
-v -v : mode très verbeu
-c : utilisation du fichier de configuration autre que /etc/lilo.conf
-t : test uniquement

24
/etc/lilo.conf
 Exemple
boot = /dev/hda
map=/boot/map
message=/boot/lilo.msg
timeout = 30
# linux
image = /boot/vmlinuz
root = /dev/hda1
label = linux
# dos
other = /dev/hda4
table = /dev/hda
label = dos
 Cet exemple installe le chargeur LILO sur le secteur de démarrage principal du disque
dur (MBR) et autorise un délai de 3 secondes pour choisir le système à démarrer.
 Si l'utilisateur ne prend pas la main dans le temps imparti, c'est le premier système qui
sera choisi. A moins de taper sur la touche tab, ce qui donne les différentes
possibilités pour démarrer.

25
Options lilo.conf
 Boot : endroit où lilo va s’installer.
 message : le nom d ’un fichier qui contient le message affiché
avant le prompt
 prompt : permet à lilo de demander le système à lancer à
chaque démarrage
 default : spécifie la configuration par défaut
 timeout : permet de fixer un délai au delà duquel lilo lance la
première configuration définie dans lilo.conf
 image : chemin complet sur le noyau de linux à charger
 label : nom de la configuration tel qu ’il doit être saisie à l ’invite
de lilo

26
Lilo.conf options-2
 root : nom complet du fichier spécial de périphérique contenant
le système de fichier racine.
 Append : options par défaut à passer au noyau
 read-only : le système de fichier racine est monté en lecture
seule
 other : partition sur laquelle le secteur de boot de l’autre
système est installé
 table : disque dur contenant la table des partitions utilisée par
l’autre système (other)
 loader : permet de passer la main au chargeur du système
 password : mot de passe à entrer pour démarrer cette image
 restricted : mot de passe demandé si l ’utilisateur veut passer
des options au noyau

27
Amorçage du noyau
 L’image compressée du noyau est chargée en
mémoire par lilo
 Le noyau se décompresse lui même est démarre
 détecte le hardware
 passe en mode multiuser, multitache
 démarre le networking
 monte la partition racine
 Après un démarrage réussi, le noyau lance le
processus init (PID 1).
 dmesg donne les messages du noyau lors du
démarrage

28
Le processus init
 Ce programme est le premier processus lancé
par le noyau. Il est chargé de démarrer les
processus systèmes et d'en relancer certains
lorsqu'ils se terminent, et ce durant la totalité
du fonctionnement du système.

 Sa configuration s'effectue dans le fichier


/etc/inittab.

29
Le fichier /etc/inittab
 Ce fichier contient des lignes respectant le format
suivant :
code:niveau:action:commande

 Le champ code contient une séquence de 1 à 4


caractères (deux pour compatibilité) unique pour
identifier la ligne dans le fichier.

 Le champ niveau donne le niveau d'exécution pour


lequel cette ligne doit être prise en compte.

30
Le fichier /etc/inittab
 La notion de niveau d'exécution permet de spécifier des
configurations d'exécution différentes. Un standard existe et est
résumé dans la table ci-dessous. Il est possible de spécifier
plusieurs niveaux lorsque la commande associée doit être
lancée à différents niveaux d'exécution.

Niveau Description
0 Arrêt de la machine
1 mode mono-utilisateur, seul le super-utilisateur peut se
connecter
2 mode multi-utilisateurs, avec peu de services réseaux
3 mode multi-utilisateurs, avec tous les services réseaux
(mode par défaut)
4 définissable par l'utilisateur
5 démarrage de X11 au boot
6 redémarrage de la machine
31
Le fichier /etc/inittab
 Le champ action définit la manière d'exécuter la commande du
champ commande.
 Le tableau ci-après présente les actions les plus courantes :
Action Description
respawn relance la commande lorsqu'elle se termine
wait attend la fin de la commande avant de continuer
once la commande est exécutée une fois
boot la commande est exécutée au démarrage du système (le champ niveau est ignoré)
Bootwait comme ci-dessus avec attente
off ne rien faire (permet de conserver la ligne pour une utilisation future)
initdefault permet de spécifier le niveau d'exécution par défaut
sysinit la commande est exécutée au démarrage avant celles des directives boot et bootwait
ctrlaltdel la commande est exécutée lorsque l'utilisateur tape les trois caractères <CTRL>-
<ALT>-<SUPPR> sur le clavier
powerfail la commande est exécutée lorsque le processus init reçoit le signal SIGPWR (défaut
d'alimentation)

32
Le répertoire /etc/rc.d
 Ce répertoire contient les scripts utilisés pour l'initialisation du
système. Ils sont prévus pour démarrer les différents services et
processus et effectuer quelques vérifications de configuration.

 La table suivante présente les différents scripts :


Niveau Description
rc.sysinit exécuté une fois au démarrage pour initialiser le système
rc script de gestion du niveau d'exécution. Il le reçoit en
paramètre.
rc.local script utilisé pour les initialisations particulières à la machine
init.d répertoire contenant les scripts d'initialisation des sous-
systèmes
rc0.d, rc1.d, rc2.d, rc3.d répertoires contenant des liens sur les scripts du répertoire
rc4.d, rc5.d et rc6.d init.d devant être lancés à un niveau d'exécution particulier

33
Le répertoire /etc/rc.d
 Le fichier rc.sysinit réalise les opérations suivantes :
 initialise la variable PATH pour les autres scripts
 active la partition de swap
 initialise le nom du système (hostname)
 vérifie l'intégrité du système de fichiers
 démarre la gestion des quotas
 initialise le "Plug and Play"
 prépare la gestion des modules
 initialise l'horloge système
 détruit les fichiers de verrouillage
 Le fichier rc exécute les scripts du répertoire rcN.d où N correspond au
niveau d'exécution.
 Ces scripts sont des liens symboliques sur les fichiers de démarrage des
sous-systèmes du répertoire init.d.
 Le lien reprend le nom du fichier d'origine précédé de la lettre S et d'un
nombre pour les scripts de démarrage ou de K et d'un nombre pour les
scripts d'arrêt du sous-système.
 La valeur numérique permet de spécifier l'ordre d'exécution des scripts.
34
Configuration des services par
niveau

 ntsysv
 Chkconfig
 serviceconf
 ...

35
Commande chkconfig
 Cette commande permet la gestion des
services :
 chkconfig - -list [nom_service]
 chkconfig - -add <nom_service>
 chkconfig - -del <nom_service>
 chkconfig [- -level <niveaux>] <nom_service> <on|off|reset>)

36
Démarrer et arrêter les
services manuellement
 Les scripts dans init.d peuvent être utiliser
pour démarrer et arrêter les services
manuellement
 Dans Read Hat, la commande service fait
appel à ce script
 Syntaxe : service nom_service option
 options
 Status : statut du service
 Start : démarre le service
 Stop : arrête le service
 Restart : arrête et redémarre le service
37
Booter linux en mode mono-
utilisateur
 Mode mono-utilisateur
 pas de réseau (pas d ’attaques)
 pas de SF montés (sauf le SF root)
 pas de services démarrés
 le mot de passe root non demandé
 très utile pour la maintenance du système
 pour démarrer en mono-utilisateur ajouter le
paramètre single au prompt du boot
 pour sortir de ce mode
 exit pour démarrer le niveau par défaut
 shutdown -r now pour rebooter

38
L'arrêt du système
 Ne pas arrêter brutalement le système.
 La procédure d'arrêt permet :
 d'avertir les utilisateurs que le système doit être arrêté
 de demander aux applications de s'arrêter et de fermer les connexions et les fichiers
ouverts
 de passer le système en mode mono-utilisateur
 de vider les tampons mémoire du cache disque
 Le système garde une trace du fait qu'il est démarré pour
permettre une vérification d'intégrité dans le cas d'un arrêt
brutal.
 La commande d'arrêt du système est la commande shutdown
qui permet, selon les options utilisées :
 de donner l'heure de l'arrêt (now, hh:mm, +minutes)
 de donner le mode arrêt (arrêt ou redémarrage)

Exemple : pour redémarrer shutdown -r now ou reboot
pour arrêter shutdown -h now ou halt
39
Unité 3

Les packages

40
Gestion de packages
 Combinaison dans un même fichier (rpm)
 informations sur le programme
 les fichiers exécutables, librairies, documentation
 les scripts d ’installation et de désinstallation
 les fichiers de configuration
 les informations de dépendance
 Le nom d’un rpm respecte un format précis
de type nom-version.arch.rpm où :
 nom  =  nom du package/prog
 version  =  version du package/prog
 arch  =  architecture pour lequel est fait le prog/package.
41
Red Hat Package Manager
(RPM)
 on peut installer et désinstaller des
programmes par une seule
commande : rpm
 /var/lib/rpm, contient une BDD des

RPMs installés

42
Installation des RPMs
 Syntaxe de base
 rpm -i nom_package.rpm ( installation)
 rpm -F nom_package.rpm (Freshening)
 installation si une version ancienne de ce package est déjà

installée
 rpm -U nom_package.rpm (Upgrading)
 installe et désinstalle l’ancienne version qui est enregistrée avec

l ’extension .rpmsave
 options
 v : mode bavard
 h : affiche 50 marques (hash marks)
 --nodeps : sans tenir compte des dépendances

43
Désinstallation de RPM
 Pour désinstaller un RPM, on utilise la
commande
 rpm -e nom_package

 options:
 --nodeps : ignore les dépendances

44
RPM querying
 Pour connaître le contenu d’un RPM installé
 syntaxe de base
 rpm -q [ nom_package ]
 options :
 a : chercher tous les RPM installés
 f <file> : chercher le RPM d ’où provient le fichier file
 p<package-file> : affiche les fichiers de ce package (non
encore installé)
 i : affiche les informations du package
 l : affiche la liste des fichiers du package
 s : affiche l’état de tous les fichiers
 d : affiche les fichiers de documentation
 c : affiche les fichiers de configuration

45
Vérification des RPMs
 Vérifie les fichiers actuelles avec le RPM original
 taille
 checksum MD5
 Permissions, type
 propriétaire
 groupe
 syntaxe de base
 rpm -V nom_package

 options
 f <file> vérifie le fichier file
 a vérifie tous les packages
 p <package-file> vérifie par rapport au RPM original

46
Outils graphiques
 kpackage
 Il fonctionne dans l'environnement Kde,
 Il n ’est pas fourni en standard dans les distributions RedHat.
 gnorpm
 C ’est un logiciel fourni avec l'environnement graphique gnome.
 up2date
 est un outil standard de la distribution RedHat (version 6.1 et
supérieure)
 il permet la mise à jour de la distribution.
 Il cherche sur le serveur ftp de redhat les packages mis à jour pour la
distribution.
 Il présente ensuite une page web permettant de sélectionner les
packages à mettre à jour.

47
Unité 4

Gestion des
périphériques

48
 Les périphériques sont gérés par le système
grâce à des pilotes intégrés au noyau soit de
façon fixe, soit sous forme de modules.
 Les pilotes sont accessibles par les fichiers
spéciaux contenus dans le répertoire /dev.
 A chaque périphérique physique du système est
attribué un ou plusieurs fichiers spéciaux.

49
Les fichiers spéciaux
 Le répertoire /dev contient un nombre important de fichiers :
Fichier spécial Description
Mem accès à la mémoire physique
Kmem accès à la mémoire du noyau
Null périphérique vide
Port accès aux ports d'entrées/sorties
Mouse gestion de la souris (peut être un lien sur le fichier effectif)
tty0 à tty__ les terminaux virtuels (de 0 à 63)
ttyS0 à ttyS_ les ports séries
pty[p-s][0-9a-f] pseudos terminaux maîtres
tty[p-s][0-9a-f] pseudos terminaux esclaves
lp0, lp1, lp2 ports parallèles
js0 et js1 port joystick
fd___ les lecteurs de disquettes (fd0 est le lecteur standard)
hd__ les disques durs et les cédéroms IDE
sd__ les disques durs SCSI
scd__ les cédéroms SCSI
st__ et nst__ les lecteurs de bandes SCSI

50
Caractéristiques des fichiers
spéciaux
 La commande ls -l permet d'afficher les attributs importants d'un
fichier spécial.

brw-rw---- 1 root disk 3, 0 May 5 1998 /dev/hda

 Le premier caractère est b pour les périphériques en mode bloc et c


pour les périphériques en mode caractères.

 La taille du fichier étant par définition nulle, elle est remplacée dans
l'affichage par deux entiers donnant des informations sur le pilote et
sur le périphérique : le majeur et le mineur

51
Major & Minor
 le majeur sert d’index dans la table des pilotes de
périphériques afin de sélectionner le pilote du
périphérique concerné
 Un pilote est lié à un type de périphérique. Mais dans
un système, il peut y avoir plusieurs périphériques de
même type

D’où l’utilisation du mineur pour identifier une unité particulière


du type de périphérique concerné

52
exemples
ls –al /dev/hda
brw-rw---- 1 root disk 3, 0A pr2 8 2000 /dev/hda
ls –al /dev/hdb
brw-rw---- 1 root disk 3, 64A pr2 8 2000 /dev/hdb
 Ceci montre que le pilote, numéro majeur 3, contrôle
les deux disque hda et hdb
 Quand c’est des disques sont utilisés, le pilote va
pouvoir les distingués parce que hda son mineur est
0 alors que hdb a pour mineur 64

53
Les périphériques existants
dans votre système
 L’existence d’un fichier de périphérique
n’implique pas que vous pouvez utiliser ce
périphérique.
 Vous avez aussi besoin du pilote de ce
périphérique.
 La liste des pilotes disponibles dans votre système
se trouve dans le fichier /proc/devices
NB
Pour pouvoir utiliser un périphérique, la
présence du fichier et du pilote de ce
périphérique est nécessaire.
54
Création d ’un fichier de
périphérique
 Il y a deux méthodes pour créer un
fichier de périphérique :
la plus simple est d ’utiliser la commande

MAKEDEV
Syntaxe /dev/MAKEDEV nom_fichier_périph
exemple /dev/MAKEDEV console
NB ceci doit être fait par root

55
Création d ’un fichier spécial
 La deuxième méthode est d ’utiliser la
commande mknod
syntaxe
mknod nom_fichier_périph type_périph majeur mineur
exemple : pour créer le fichier de périphérique
de COM1 /dev/ttys0 ( où la souris est
connectée)
mknod /dev/ttyso c 42 40

56
Conseil
 Si votre /dev est endommagé vous ne pouvez
plus utiliser MAKEDEV.
 Pour l ’utilisation de mknod, vous devez
connaître le type le majeur et le mineur d ’un
périphérique ce qui n ’est pas évident.
 Pour ne pas avoir des Pbs penser à faire une
copie de /dev.
ls -al /dev > /mnt/liste_fichiers_périph

57
Unité 5

Système de fichier

58
C ’est quoi un fichier ?
 Un fichier est une suite de bits
 par défaut pas de structure interne
 un fichier est enregistré et référencé
dans un système de fichier
 un fichier peut avoir plusieurs références
(noms)

59
C ’est quoi un système de
fichier (SF)
 structure pour enregistrer les fichiers et
pouvoir les trouvés par la suite.
 Structure arborescente via l ’utilisation de
répertoire
 Pour pouvoir accéder à un système de fichiers
il faut le monté
 un point de montage est toujours un répertoire
vide
 le SF racine (/) est activé au démarrage du
système

60
Système de fichiers
 Linux structure ces données dans des
systèmes de fichiers résidant sur différentes
partitions
 Chaque partition peut contenir au plus un
système de fichiers
 Un système de fichiers ne peut s’étendre sur
plusieurs partitions.
 structure interne caché via l ’utilisation d ’un
SF virtuel

61
Les SFs supportés
 Le plus important : ext2fs
 les plus récents : ext3fs, ReiserFS, IBM JFS
 autres SF Unix : minix, ext, xiafs
 FAT-12, FAT-16, FAT-32,VFAT, NTFS (read-only)
 ISO9660 (cédérom)
 SMBFS (partage Windows), NCPFS (netware partage)
 HPFS (OS/2) readonly, HFS (Macintosh) readonly
 NFS (Network File System)
 AFS (Amiga)
 /Proc (accès au noyau)

62
SF par défaut de LINUX :
ext2fs
 Les partitions sont divisées en bloc de
1024 octets (par défaut)
 les blocs peuvent avoir différentes
utilisations:
 super bloc
 Inode (Index node)
 bloc d’indirection (double, triple)
 bloc de données (data block)

63
Super bloc
 Le premier bloc d’un SF, plusieurs copies sont
disponibles (8193, 16385, …)
 contient les informations générales sur le SF
 dernier montage date/place
 taille d ’un bloc
 pointeurs vers les inodes libres
 pointeurs vers les blocs libres
 pointeur sur la racine du SF

64
Inodes
 256 octets (4 par blocs de 1024 octets)
 Un inode contient les informations sur un fichier :
 Le type et le mode d’accès
 Le nombre de liens physiques
 La taille (en octets) du fichier
 L’uid et le gid du fichier
 La date de dernier accès en lecture et en écriture des données et du dernier
accès à l’inode
 Un tableau de 12 pointeurs sur des blocs de données directs
 3 pointeurs d’indirection :
 Un pointeur sur un bloc d’adresses sur un niveau d’indirection
 Un pointeur sur un bloc d’adresses sur deux niveaux d’indirection
 Un pointeur sur un bloc d’adresses sur trois niveaux d’indirection
 Le nombre de blocs physiquement utilisés pour stocker le fichier

65
Bloc données
 Contient des données d’un fichier
 Le fichier peut être un répertoire, dans ce
cas les données sont la liste des noms de
fichiers de ce répertoire et leurs inodes
 Deux fichiers différents peuvent avoir le
même inode les fichiers peuvent
avoir plusieurs noms

66
67
Donc ...
 Les plus importants composants d’un SF sont
les inodes et les blocs data
 Un SF est saturé si
 Pas d’inode libre ou
 Pas de bloc data libre
 Configurer votre SF suivant la taille de vos
fichiers
 Taille d’un bloc (1024 par défaut, 2048, 4096
possible)
 octets par inode (4096 par défaut)

68
Création de partition
 La création d’une partition est faite par fdisk
 Syntax : fdisk [device disque]
 Importantes commandes de fdisk
 p : affiche la table de la partition
 n : ajout d’une nouvelle partition
 t : change le type de la partition
 d : supprime une partition
 w : sauvegarde la table de partition et quitte
 q : quitte sans sauvegarde

69
Création d’un SF
 La création d’un SF est faite avec mke2fs
 Définie le super bloc et la table d’inodes
 Syntaxe
mke2fs –b 1024 –i 4096 –c /dev/hda6
 b définir la taille d’un bloc en octets
 i octects-par-inode
 c vérification des secteurs défectueux du disque
 j création de EXT3
NB La création d’un SF sur un périphérique
écrase son contenu
70
Monter un SF
 Utiliser la commande mount :
 Il faut préciser
 le fichier spécial du périphérique
 Le point de montage
 Le type du SF (optionnel)
mount –t ext2 /dev/hda6 /mountpoint
 Pour afficher la liste des SFs montés, utiliser
mount sans arguments

71
Monter des SFs au démarrage
 Pour chaque SF à monter au
démarrage ajouter une line dans
/etc/fstab
/dev/hda2 / ext2 defaults 11
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 00
/dev/fd0 /mnt/floppy msdos noauto,user 00
/dev/hda6 /mountpoint ext2 defaults 00

72
Options de montage
 On utilisé plusieurs options
 auto montage automatique au démarrage
 noauto ne pas monter automatiquement
 user users sont autorisés à monter ce SF
 owner idem auto sauf que l’utilisateur doit être le propriétaire
 ro lecture seul
 rw lecture/ecriture
 Pour autres options voir man mount
 Ces option peuvent être spécifiées derrière –o lors
de l’exécution de mount
 Ou bien les spécifies séparées par des virgules
dans la 4 colonne du fichier /etc/fstab
73
Démonter un SF
 Le SF ne doit pas être en utilisation : vérifier
avec fuser
 Des fichiers ouverts
 Des programmes entrains de s’exécuter
 Des répertoires actifs
 Utiliser la commande umount avec
 Le nom du device
 Le point de montage
 Ou les deux
umount /dev/cdrom
umount /mnt/cdrom
74
Commandes utiles
 df : affiche la place libre en termes de blocs et
d ’inodes sur chacune des partitions montées.
 fsck : réparation des SFs
 de préférence les SFs doivent être montés en lecture seul ou
non montés
 place les fichiers perdus dans /lost+found
 ln : création de liens
 du : montre l’usage d’un répertoire
 mtools (mdir, mcopy, mdel, mformat, …) permet
d ’utiliser les SFs msdos sans les montés.
 Fichier de configuration /etc/mtools.conf

75
Quotas
 Quota permet de limiter l’occupation de
l ’espace disque pour les utilisateurs et
les groupes
 on peut limiter le nombre de blocs et/ou
d’inodes qu’un utilisateur ou un groupe
peut utiliser
 les quotas sont sont définies par
Système de fichier

76
Hard & soft limite, période de
tolérance
 Un quota définit deux limites : hard et soft
 si l ’utilisateur dépasse la limite soft : message
warning seulement
 s ’il dépasse la limite hard : erreur
 la période de tolérance indique le temps
durant lequel on peut dépasser la limite soft
 après cette période à la place du warning on a un
message d ’erreur.

77
Implémentation de quota en
Linux
 Le support de quota est compilé avec le noyau
 grep –i quota /boot/config_version, rpm –qa |grep quota
 pas de démon nécessaire
 un utilisateur peut avoir différentes quotas
 aquota.user et aquota.group dans la racine de chaque SF
 Permissions 600
 la définition de quota doit être activée lors du montage d ’un SF
 options de montage : usrquota, grpquota
 peut être spécifiée dans /etc/fstab
 la gestion des quotas est démarrée après le montage par la commande
quotaon.
 Automatiquement exécutée à partir de /etc/rc.d/rc.sysinit après un
mount -a

78
Activation de quota
 Modifier /etc/fstab
/dev/hda2 / ext2 defaults,userquota,grpquota 11
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 00
/dev/fd0 /mnt/floppy msdos noauto,user 00
/dev/hda6 /mountpoint ext2 defaults 00
 Créer aquota.user et aquota.group :
# touch /aquota.user /aquota.group
 Remonter la partition
# mount -o remount,usrquota,grpquota /
 calculer l ’usage courant
# quotacheck
 activer quota
# quotaon

79
Configuration du quota
 Réaliser par la commande edquota
 fait appel à l éditeur par défaut ($EDITOR)
 quota utilisateur : edquota -u
nom_utilisateur
 quota du group : edquota -g nom_group
 période de tolérance : edquota -t
 copier une quota :
edquota -p tux1 -u tux2 tux3 tux4

80
Informations quota
 La commande quota
 infos sur le quota d ’un utilisateur
 peut être exécuter par tous utilisateur
 un utilisateur ne peut visualiser que son quota
 repquota
 infos sur les quotas de tous les utilisateurs et
groupes
 uniquement root peut l’exécuter

81
Les ACLs
 Les droits d’accès ne sont affectés que pour
trois types d’utilisateur :
 le propriétaire,
 le groupe propriétaire
 le reste du monde .
 On ne peut pas donner des droits sur un
fichier à un utilisateur qui n’est ni
propriétaire, ni membre du groupe
propriétaire?
Solution : Les ACLs

82
Installation : Mise à jour
noyau
 Il faut vérifier que le noyau est compilé avec les
bonnes options :

$ cat /boot/config* | grep _ACL


doit au moins renvoyer les lignes suivantes (pour
un système de fichiers de type ext3) :
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y

sinon il faut recompiler le noyau avec les bonnes options

83
Installation : Mise à jour
paquetages
 On installe les paquets nécessaires à la gestion des ACL.
 Par exemple Sous Mandrake 10 :

# urpmi acl-2.2.22-1mdk.i586 libacl1-2.2.22-1mdk.i586

 l’installation des dépendances libacl1, libattr1, et libc6 se faisant


automatiquement si besoin... Dans tous les cas, les paquets acl-
x.x.x et libacl1-x.x.x doivent être installés.

84
Prise en compte des ACLs
 Pour chaque partition, Il faut activer la prise en
charge des ACL:
 Exemple
 Pour activer les ACL sur /dev/hda1 sans avoir à redémarrer
le système, on exécute la commande :
# mount -o remount,acl /dev/hda1

 Pour automatiser l’activation des ACL lors des prochains


reboot, il faut ajouter acl aux options à transmettre au
montage dans le fichier /etc/fstab  :

/dev/hda1   /   ext3    defaults,acl   0       1

85
 Pour vérifier que la modification des ACL fonctionne,
on va autoriser l’utilisateur user02 à écrire dans le
fichier test :

$ setfacl  -m u:user02:w test


 Vérifions que la modification a bien été prise en
compte...
$ getfacl test
# file : test # owner : user01 # group : user01 user ::rw-
user :user02 :-w- group ::r— mask ::rw- other ::r—
 l’utilisateur user02 a des droits en lecture et en
écriture sur le fichier test.

86
Quelques définitions
 Trois notions principales  :
 ACL minimale : l’ACL minimale est une traduction
en ACL des droits d’accès traditionnels Linux
 ACL étendue : Elle contient au moins un élément
de type mask et peut contenir des éléments de
type utilisateur et/ou groupe.
 ACL par défaut : Les ACL par défaut ne peuvent
être appliquées qu’aux répertoires et définissent
de quels droits un objet du système de fichiers
devra hériter (de son répertoire parent) lors de sa
création.

87
Ajout/Modification des
droits utilisateur
 Pour modifier l’ACL d’un fichier/dossier, il
faut, soit être propriétaire du fichier
(utilisateur ou groupe), soit être root.
 Pour modifier les droits d’un utilisateur
Setfacl –m u:user:perms nom_fichier
 le paramètre u est suivi du nom ou de l’uid de
l’utilisateur, suivi des droits à affecter.Si l’uid est vide, le
propriétaire sera utilisé.
 Pour permettre à l’utilisateur user01 d’écrire dans
le fichier test, on utilisera la commande :
$ setfacl  -m u:user01:w test       

88
Ajout/Modification des
droits d’un groupe
 syntaxe
Setfacl –m g:user:perms nom_fichier
 le paramètre g est suivi du nom ou du gid du groupe, suivi des
droits à affecter.
 Si le gid est vide, le groupe propriétaire sera utilisé.
 Pour permettre au groupe admin d’écrire dans le fichier test, on
utilisera la commande :

$ setfacl  -m g:admin:w test


 Pour modifier les droits du reste du monde (other), on utilisera
le paramètre o, suivi des droits à affecter en respectant la
syntaxe suivante :
Setfacl –m o::perms nom_fichier

89
Suppression d’une ACL
 Lorsqu’on souhaite supprimer une ACL, on ne peut supprimer
les éléments de type mask et/ou utilisateur/groupe. Le
maximum des entrés de l’ACL supprimées, il restera les entrées
correspondantes aux droits unix du fichier concerné.
 Pour détruire toutes les entrées d’une ACL étendue :

$ setfacl -b mon.fichier
 Pour détruire des entrées particulières, les permissions ne doivent
pas être passées en paramètre :

$ setfacl -x g:users mon.fichier


 Dans l’exemple ci-dessus, on enlève de l’ACL toutes les entrées
correspondantes au groupe users.

90
ACL par défaut
 Une ACL par défaut s’applique à un répertoire.
 Ce type d’ACL permet de définir des permissions qui
seront appliqués par défaut à tout fichier ou
répertoire créé sous le répertoire de départ.
 Création d’une ACL par défaut :
 Soit le répertoire mon.repertoire (drwxr-xr-x user01 users).
On décide qu’à partir de maintenant, user02 pourra lire et
écrire dans les fichiers/répertoires créés sous
mon.repertoire.
 On crée donc l’ACL par défaut :

$ setfacl -m d:u:user02:rw mon.repertoire

91
RAID ET LVM

92
RAID : Principe
 Le principe du RAID repose sur l'idée de
combiner plusieurs disques durs bon
marché (indifférement IDE ou SCSI)
dans le but de :
 Etendre la capacité de stockage en ligne
possible ;
 Introduire une notion de redondance
 une plus grande sécurisation des données.
 Améliorer les performances.

93
Niveaux de RAID
disponibles sous Linux
 Les matrices RAID pouvant être construites
de diverses manières, elle peuvent afficher
des caractéristiques différentes selon la
configuration finale retenue ( niveaux RAID)
Il existe différents niveaux RAID
 Linéaire,
 Raid 0,
 Raid 1,
 Raid 0+1,
 Raid 4,
 Raid 5.

94
Mode Linéaire
 Pour étendre la capacité de stockage disponible en ligne sans
tolérance aux pannes.
 On combine les capacités de stockage d'un ensemble de disques
existants : les données sont d'abord écrites sur le premier
disque, puis lorsqu'il est plein sur le second, etc....
 Avantages :
- Permet de disposer de 100% de l'espace disque dans une
partition ;
- Moins de temps CPU mobilisé par le RAID dans le noyau.
 Inconvénients :
- Pas de haute disponibilité : la perte d'un disque entraine la perte
des données ;
- Quasiment pas d'amélioration des performances (on peut
cependant obtenir une amélioration si des I/O se produisent de
manières concurrentes sur des disques différents).

95
RAID 0 striping
 Raid 0 est souvent utilisée lorsque la haute
disponibilité des données n'est pas nécessaire
 on doit disposer d'au moins 2 disques.
 les données sont découpées puis dispersées sur les
disques sans redondance.
 Avantages :
- Permet de disposer de 100% de l'espace disque dans une
partition ;
- Amélioration des performances I/O en lecture et écriture.
 Inconvénients :
- Pas de haute disponibilité : la perte d'un disque entraine la
perte des données.

96
RAID 1 : mirroring
 Raid 1 implémente une stricte duplication des données sur tous
les disques présents dans le miroir
 on doit disposer d'au moins 2 disques.
 L'information étant enregistrée N fois sur les disques permet de
gagner du temps en lecture même si on en perds lors de l'écriture,
 si on perds N-1 disques on ne perds pas les données.
 Avantages :
 Haute disponibilité des données : survit à la perte de N-1 disques ;
 Amélioration des performances en lecture.
 Inconvénients :
 Dégradation des performances en écriture ;
 Mobilise un peu plus de temps CPU dans le noyau ;
 Perte de 50% de l'espace disque.

97
RAID 4 : striping
 L'algorithme utilisé permet de dispatcher les I/O sur l'ensemble
des disques (au moins 3) tout en réservant un disque pour
sauvegarder une donnée supplémentaire de parité.
 si on perds un disque, on peut reconstituer l'information
manquante.
 Cependant, l'utilisation d'un disque de parité ajoute un goulot
d'étranglement au système (toute écriture va provoquer un accés
au disque de parité), pour cela il est préférable d'utiliser à la place
le Raid5.
 Avantages :
 Haute disponibilité des données : survit à la perte d'un disque ;
 Amélioration des performances en lecture.
 Inconvénients 
 On perds l'équivalent d'un disque pour le stockage des données ;
 On risque de plafonner le débit en écriture rapidement.

98
RAID 5
 Le RAID 5 est sensiblement identique au RAID 4 mais
améliore le procédé en stripant l'information de
parité sur l'ensemble des disques.
 Avantages :
 Haute disponibilité des données : survit à la perte d'un
disque ;
 Amélioration des performances en lecture et écriture.
 Inconvénients 
 On perds l'équivalent d'un disque pour le stockage des
données.

99
Combinaison de niveaux
RAID
 Chaque niveau RAID à des avantages et des
inconvénients.
 La combinaison des niveaux RAID a pour
objectif de produire des matrices affichant
tous les avantages et aucun des
inconvénients des niveaux créés à l'origine
 Exemple,
 Dans une matrice RAID 0, les disques durs sont
des matrices RAID 1. Une telle situation offre les
avantages de RAID 0 au niveau vitesse, et la
fiabilité de RAID 1.

100
Combinaison de niveaux
RAID
 les imbrications de niveaux RAID les plus courantes :
 RAID 1+0
 RAID 5+0
 RAID 5+1
 il est important de garder à l'esprit les deux points suivants :
 L'ordre selon lequel les niveaux RAID sont combinés peut avoir
un impact considérable sur la fiabilité. En d'autres termes, RAID
1+0 et RAID 0+1 ne correspondent pas à la même matrice.
 Toutes les implémentations de RAID imbriqués partagent le même
inconvénient, à savoir le coût de l'imbrication ; par exemple, RAID
5+1, la plus petite matrice possible, est composée de six disques
durs (et un nombre encore plus élevé de disques durs est
nécessaire pour des matrices plus grandes).

101
RAID 0+1
 Raid 0+1 combine RAID 0 et RAID 1. Elle permet d'améliorer les
performances I/O en lecture tout en permettant une bonne
disponibilité des données grace à leurs duplications sur
l'ensemble des disques.

Perte de 50% de l'espace disque potentiellement disponible.


 Avantages :
 Haute disponibilité des données : survit à la perte d'un coté du
miroir ;
 Amélioration des performances en lecture et écriture.
 Inconvénients 
 Mobilise un peu plus de temps CPU dans le noyau ;
 Perte de 50% de l'espace disque.

102
Disques de spare
 Un disque de spare est utilisé pour remplacer
automatiquement un disque en faute.
 Les RAIDS 1, 4 et 5 peuvent utiliser la notion

de disques de spare.
RAID 5

 on doit les rajouter manuellement dans le

fichier de configuration /etc/raidtab pour le


cas d'un reboot :
# raidhotadd /dev/md[0-15] /dev/sdf1
ou # raidhotremove /dev/md[0-15] /dev/sdf1

103
Fichier /etc/raidtab
pour le Raid 0 
raiddev /dev/md0
raid-level          0
nr-raid-disks           2
persistent-superblock        1
chunk-size          4
device              /dev/hda1
raid-disk           0
device              /dev/hdb1
raid-disk 1
104
Fichier /etc/raidtab
pour le Raid 1 
 raiddev /dev/md0
raid-level          1
nr-raid-disks           2
persistent-superblock        1
chunk-size          16
device              /dev/hda1
raid-disk           0
device              /dev/hdb1
raid-disk                                 1
105
Gestionnaire de volumes
logiques (LVM)
 Parmi les technologies avancées de stockage figurent
le gestionnaire de volumes logiques (ou LVM de
l'anglais Logical Volume Management).
 Cette technologie permet de considérer les
périphériques physiques de stockage de masse
comme des éléments de base sur lesquels différentes
configurations de stockage peuvent être construites.
 Les capacités exactes, qui varient selon
l'implémentation spécifique, peuvent inclure le
groupement physique du stockage, le
redimensionnement de volumes logiques et la
migration de données.

106
Groupement physique du
stockage
 le groupement physique du stockage représente la base de toutes les
implémentations du LVM. Comme son nom l'indique, les périphériques physiques
de stockage de masse peuvent être groupés de manière à créer un ou plusieurs
périphériques logiques de stockage. Les périphériques logiques de stockage (ou
volumes logiques) peuvent avoir une capacité supérieure à celle de tout
périphérique de stockage de masse sous-jacent.
 Exemple,
 avec deux disques de 100 Go, il est possible de créer un volume logique de 200 Go.
Mais il est également possible de créer deux volumes logiques, un de 150 Go et un de
50 Go. En fait, toute combinaison de volumes logiques inférieure ou égale à la
capacité totale (soit 200 Go dans notre exemple) est possible. Les choix possibles ne
sont en fait limités que par les besoins de votre entreprise.
 Un administrateur système peut ainsi considérer tout le stockage comme une
entité globale dont il peut utiliser toute quantité souhaitée. En outre, des disques
supplémentaires pouvant être ajoutés ultérieurement au stockage, il est
relativement facile de toujours disposer d'une quantité de stockage supérieure à
celle requise par les utilisateurs.

107
Redimensionnement de
volumes logiques
 Une des fonctions du LVM très appréciée par la plupart des administrateurs
système est sa capacité à attribuer du stockage rapidement, là où il est
nécessaire. Dans une configuration de système autre que le LVM, lorsque la
mémoire devient insuffisante — dans le meilleur cas de figure — il est nécessaire
de transférer des fichiers du périphérique manquant de mémoire vers un autre
périphérique disposant d'espace libre. Très souvent, il est nécessaire de changer
la configuration elle-même des périphériques de stockage de masse de votre
système ; une tâche qui devra avoir lieu après les heures de bureau normales.
 Avec LVM, il est possible d'augmenter facilement la taille d'un volume logique.
 Supposons pour un instant que notre groupement de stockage de 200 Go ait été
utilisé pour créer un volume logique de 150 Go, laissant ainsi 50 Go en réserve. Dans
le cas où le volume logique de 150 Go se remplirait à capacité, le LVM pourrait être
utilisé pour agrandir sa taille (disons de 10 Go) sans pour ce faire, changer
physiquement la configuration. Selon l'environnement du système d'exploitation, il
sera peut-être possible d'effectuer cette opération de manière dynamique ; dans le
cas contraire, une courte période d'indisponibilité sera peut être nécessaire afin de
pouvoir effectuer le redimensionnement.

108
Anatomie de LVM
 Groupe de volumes ( VG) :
 l'abstraction de plus haut niveau utilisée dans LVM. C'est un ensemble de volumes
logiques et physiques au sein d'une seule unité d'administration.
 Volume physique ( PV) :
 Un volume physique est typiquement un disque dur, bien que cela puisse aussi être un
périphérique qui « ressemble » à un disque dur (par exemple, un périphérique de
RAID logiciel).
 Volume logique ( LV) :
 C'est l'équivalent d'une partition de disque d'un système sans LVM. Le LV est visible
comme un périphérique de bloc standard. En tant que tel, le LV peut contenir un
système de fichiers. (Ex : /home.)
 Extent physique ( PE) :
 Chaque volume physique est divisé en morceaux de données, appelés extents
physiques. Ces extents ont une taille identique à celle des extents logiques du groupe
de volumes.
 Extent logique ( LE) :
 Chaque volume logique est divisé en morceaux de données, appelés extents logiques.
La taille d'extents est la même pour tous les volumes logiques du groupe de volumes.

109
Unité 6

Scheduling

110
Scheduling
 Automatiser les taches de routine
 lancement automatique des taches à des
moments spécifiques
 le démon crond fait le scheduling pour les
fichiers conrontab
 la commande anacron exécute les jobs
anacron
 le démon atd est responsable d ’exécuter les
jobs soumets par les commandes at ou batch

111
cron
 Les jobs sont configurés dans des fichiers crontab
 Syntaxe d’une ligne
[minute][heur][jour-du-moi][moi][jour-de-semaine][job]
 chaque minute, crond cherche dans les fichiers
crontab s’il y a un job à lancer
 Les fichiers crontabs des utilisateurs sont enregistrés dans
/var/spool/cron/username
 le fichier crontab système est /etc/crontab
 tous les fichiers de /etc/cron.d sont considérés comme des
fichiers crontab

112
Exemple d ’un fichier crontab
utilisateur

0 8 * * * cmd1
0,30 9 * * * cmd2
0,30 8-18 * * * cmd3
*/5 * * * * cmd4
12 13 1 * * cmd5
49 23 16 9 * cmd6
0 15 * * 1 cmd7
32 14 1 1 1 cmd8

113
Commandes crontab
 Un utilisateur peut modifier son crontab, mais
il ne peut pas signaler à crond ce changement
 avec la commande crontab (SUID root) c ’est
possible
 syntaxe
 crontab -l affiche crontab de l’utilisateur courant
 crontab -r supprime crontab de l’utilisateur courant
 crontab -e édit crontab de l’utilisateur courant
NB root peut utiliser -u username pour spécifier
un utilisateur autre que root.

114
Crontab système
 Le fichier crontab du système est /etc/crontab
 le répertoire cronatb système est /etc/cron.d
 tous les fichiers de ce répertoire sont lu par crond
 syntaxe
 on peut définir des variables d ’environnement
 spécifier l’uid sous lequel la commande va être exécuter
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * * root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

115
at
 La commande at exécute une
commande à un moment donnée.

# at 4am
ps aux
^d
# at -f bshfile 16:00 + 3 days

116
Contrôle des jobs at
 Liste des jobs
$at -l
$atq
 annuler un job
$at -d job
$atrm job
 permission d ’utilisation de at
 /etc/at.allow
 /etc/at.deny

117
batch
 Exécute une commande quand le
système et moins chargé

$batch
echo la charge est minime
^d

118
Partie II

Administration Réseau

119
Configuration statique des
interfaces réseau
 ifconfig ( InterFace CONFiguration ), permet de
configurer les interfaces réseau de la machine.
 il existe plusieurs types d’interfaces réseau. Les plus
courants sont :
 l’interface loopback, qui représente le réseau virtuel de la
machine, et qui permet aux applications réseau d’une même
machine de communiquer entre elles même si l’on ne
dispose pas de carte réseau ;
 les interfaces des cartes réseau (que ce soient des cartes
Ethernet, TokenRing ou autres) ;
 les interfaces ppp, plip ou slip, qui sont des interfaces
permettant d’utiliser les connexions sérielles, parallèles ou
téléphoniques comme des réseaux.

120
Configuration statique des
interfaces réseau
 ifconfig ( InterFace CONFiguration ), permet de
configurer les interfaces réseau de la machine.
 il existe plusieurs types d’interfaces réseau. Les plus
courants sont :
 l’interface loopback, qui représente le réseau virtuel de la
machine, et qui permet aux applications réseau d’une même
machine de communiquer entre elles même si l’on ne
dispose pas de carte réseau ;
 les interfaces des cartes réseau (que ce soient des cartes
Ethernet, TokenRing ou autres) ;
 les interfaces ppp, plip ou slip, qui sont des interfaces
permettant d’utiliser les connexions sérielles, parallèles ou
téléphoniques comme des réseaux.

121
Configuration statique des
interfaces réseau
 La configuration d’une interface comprend l’initialisation des
pilotes nécessaires à son fonctionnement et l’affectation d’une
adresse IP à cette interface.
 syntaxe : ifconfig interface adresse netmask masque up
 interface est le nom de l’interface réseau que vous voulez
configurer,
 adresse est l’adresse IP que cette interface gérera,
 masque est le masque de sous-réseau que vous utilisez.
 En general, on a à configurer des interfaces Ethernet, auquel
cas on utilisera les noms eth0, eth1, etc.
 Pour configurer l’interface loopback, on utilise le nom d’interface
lo.
 Exemple
 ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up

122
Configuration statique des
interfaces réseau
 Le paramètre up donné à ifconfig lui indique
que l’interface doit être activée. Cela signifie
que dès que la commande ifconfig
s’achèvera, votre interface réseau sera active
et fonctionnelle.
 il existe le paramètre inverse : down. Ce
paramètre s’utilise tout simplement dans la
commande ifconfig avec la syntaxe
suivante : ifconfig interface down
 où interface est toujours le nom de l’interface

123
broadcast
 Par defaut, Le noyau utilise le nombre 255
pour les adresses de broadcast dans les
composantes de l’adresse IP qui ne fait pas
partie de l’adresse de sous-réseau.
 Si vous désirez utiliser une autre adresse
(l’adresse du sous-réseau par exemple), vous
devrez utiliser l’option broadcast de la
commande ifconfig.
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.0 up

124
Alias d’une interface reseau
 il est possible d’affecter plusieurs adresses IP à certaines interfaces
réseau (non point a point).
 Lorsqu’une interface dispose de plusieurs adresses, la première est
considérée comme l’adresse principale de l’interface, et les suivantes
comme des alias.
 Un nom d’alias est le nom de l’interface réseau principale et le numéro
de l’alias, séparés par deux points (caractère ’:’).
 Exemple, si l’interface eth0 dispose d’un alias, celui-ci sera nommé
eth0:0.
 Pour fixer l’adresse d’un alias d’une interface réseau, on utilisera la
syntaxe suivante :
 ifconfig interface:numéro add adresse netmask masque
 où interface est toujours le nom de l’interface,
 numéro est le numéro de l’alias,
 adresse est l’adresse IP à attribuer à cet alias,
 et masque est le masque de sous-réseau de cette adresse.

125
Regle de routage
 Il est possible de définir plusieurs règles de routage actives
simultanément.
 L’ensemble de ces règles constitue ce qu’on appelle la table de
routage.
 La règle utilisée est sélectionnée par le noyau en fonction de l’adresse
destination du paquet à router.
 Chaque règle indique donc un critère de sélection sur les adresses, et
l’interface vers laquelle doivent être transférés les paquets dont
l’adresse destination vérifie cette règle.
 La commande utilisée pour définir une route est, chose surprenante, la
commande système route.
 syntaxe :
 route opération [-net | -host] adresse netmask masque interface
 opération est l’opération à effectuer sur la table de routage.
 interface est l’interface réseau vers laquelle doivent être envoyés les paquets qui
vérifient les critères de sélection de cette règle.

126
Regle de routage : ajout d’une
regle
 l’ajout d’une règle de routage se fait par l’option add.
 Add net adresse : permet d’indiquer que le critère de sélection des paquets
se fait sur l’adresse du réseau destination. il faut indiquer le masque de
sous-réseau masque à l’aide de l’option netmask.
 Add host adresse : le critère de sélection des paquets se fait sur l’adresse
de la machine destination.
 adresse est l’adresse IP de la destination, que celle-ci soit un réseau ou une
machine.
 Par exemple : règle de routage à utiliser pour l’interface loopback
route add -net 127.0.0.0 netmask 255.0.0.0 lo
 Il n’est pas nécessaire d’ajouter les règles de routage
pour les réseaux auxquel la machine est connectée.
Ifconfig le fait automatiquement.
 la commande route est nécessaire lorsqu’il faut définir les passerelles à
utiliser pour l’envoi des paquets destinés à une machine à laquelle la
machine locale ne peut accéder directement.

127
Regle de routage : passerelle
 Syntaxe d’une règle de routage faisant
intervenir une passerelle
route add [-net | -host] adresse netmask masque gw passerelle interface
 où passerelle est l’adresse IP de la passerelle à utiliser
pour router les paquets qui vérifient les critères de cette
règle.
 Exemple
 supposons qu’une machine soit connectée à un réseau d’adresse
192.168.0.0, et que sur ce réseau se trouve une passerelle
d’adresse 192.168.0.1 permettant d’atteindre un autre réseau, dont
l’adresse est 192.168.1.0. Une machine du réseau 192.168.0.0 aura
typiquement les règles de routage suivantes :
route add -net 192.168.0.0 netmask 255.255.255.0 eth0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1 eth0
 On doit utiliser ces regles dans les machines des deux reseaux

128
Passerelle par defaut
 Les règles de routage spécifient l’adresse du réseau
destination.
 Problème
 il est impossible d’utiliser une règle de routage différente
pour toutes les adresses de réseaux possibles.
 Solution
 Définition d’une passerelle par défaut : passerelle vers
laquelle doivent être envoyés tous les paquets qui n’ont pas
vérifié les critères des autres règle de routage.
 syntaxe :
route add default gw passerelle-IP interface

129
Définition du nom de la
machine
 La comande hostname permet de nommer une machine d’une manière
plus conviviale qu’en utilisant son adresse IP.
 syntaxe : hostname [nom_machine]
 hostname Sans argument renvoie le nom actuel de la machine
 hostname nom_machine : permet de modifier ce nom á nom_machine.

 Il est d’usage de n’utiliser que le nom de la machine, sans son


domaine.
 Le nom de domaine est déterminé automatiquement par le système à
partir des informations issues de la configuration de la résolution des
noms de domaine.
 hostname est en général appelée dans les scripts de démarrage du
système.
 La plupart des distributions utilisent le fichier /etc/HOSTNAME pour stocker

130
Resolution des nom de
machines
 La commande hostname ne permet de fixer que le nom de la machine locale.
Pour les autres machines du réseau, il faut mettre en place les mécanismes de
résolution de noms de domaine.
 il existe deux solutions pour trouver l’adresse IP d’une machine à partir de son
nom :
 la consultation d’une liste de noms stockée en local (/etc/hosts),
 soit l’interrogation d’un serveur de noms de domaine (serveur DNS).
 Le fichier /etc/host.conf permet de définir le comportement du système lors de
la résolution d’un nom. Dans la plupart des cas, les lignes suivantes sont
suffisantes :
order hosts,bind
multi on
 La premiere ligne indique que la recherche des noms pour leur résolution doit se faire
d’abord localement (hosts), puis par appel aux DNS (bind) si la recherche précédente
a échoué. C’est en général le comportement désiré.
 La deuxième ligne permet de faire en sorte que toutes les adresses correspondant à
une machine soient renvoyées. Si l’on avait utilisé l’option multi off, seule la première
adresse IP trouvée aurait été renvoyée.

131
Resolution des nom de
machines
 La liste de noms locale est stockée dans le fichier /etc/hosts . Votre ordinateur
connaîtra directement l’adresse IP de toutes les machines référencées dans ce
fichier.
 On place dans ce fichier les ordinateurs les plus couramment utilisés sur le réseau.
 Chaque ligne commence par une adresse IP, et est suivie de la liste des noms de la
machine possédant cette adresse, séparés par des espaces.
 Si il n’y a pas de réseau local, seule la ligne affectant l’adresse 127.0.0.1 à la machine
locale (localhost) doit s’y trouver.
127.0.0.1 localhost
 De la même manière, le fichier /etc/networks contient les adresses des réseaux.
 Ce fichier est utilisé par la commande route pour donner un nom aux différents
réseaux.
 Chaque entrée est constituée du nom du réseau, suivi de son adresse IP.
 Si la machine n’est pas connectee a un réseau local, il ne contiendra une entrée pour
le réseau « loopback », sur lequel se trouve l’adresse de retour 127.0.0.1. Cette
entrée aura donc la forme suivante :
 loopback 127.0.0.0

132
Les super-démons inetd et
xinetd
 La plupart des services réseau sont gérés par des programmes qui s’exécutent
en permanence et qui attendent des connexions sur un port TCP ou UDP.
 Ces programmes passent la plupart de leur temps à attendre ces connexions. Ils
ne se réveillent que lorsqu’un client se connecte effectivement et leur envoie une
requête.
 ils peuvent être relativement nombreux, et si tous les services sont lancés
simultanément, ils peuvent consommer une part non négligeable des ressources
système.
 C’est pour cette raison que les super-démons inetd (de l’anglais « InterNET
Daemon ») et xinetd (de l’anglais «eXtended INETD ») ont été créés.
 Ces démons sont à l’écoute des demandes de connexion des clients pour les autres
services réseau, et ne lancent ceux-ci que lorsqu’un client se connecte sur leurs ports.
 Une fois lancés, les véritables démons reprennent la main et communiquent
directement avec leurs clients. Ainsi, inetd et xinetd écoutent les ports pour tout le
monde, et sont la plupart du temps les seuls à fonctionner.
 Les ressources système sont donc économisées et les services réseau sont démarrés
et arrêtés à la demande.

133
Le super-démon inetd
 Le super-démon inetd utilise le fichier de
configuration /etc/inetd.conf pour déterminer
les ports sur lesquels il doit attendre des
connexions de la part des clients, et pour
trouver le service réseau qu’il doit lancer
lorsqu’une telle connexion arrive.
 le démon en charge de ce service peut être
lancé avec le programme
 /usr/sbin/in.telnetd.
134
Le super-démon inetd
 Ce fichier est structuré en lignes, dont chacune décrit un des services que le
démon inetd prend en charge. Les informations données sur ces lignes sont les
suivantes :
 le nom du service (tel qu’il est défini dans la première colonne du fichier /etc/services)
dont inetd doit surveiller les requêtes ;
 le type de canal de communication réseau utilisé,
 stream pour les communications en mode connecté, donc en général celles qui utilisent le
protocole TCP
 dgram pour lescommunications basées sur les datagrammes, donc typiquement les
communications utilisant le protocole UDP) ;
 le protocole réseau utilisé (« tcp » ou «udp ») par ce service ;
 l’un des mots clés wait ou nowait, qui permettent d’indiquer si inetd doit attendre la
fin de l’exécution du démon gérant le service ou s’il peut attendre de nouvelles
requêtes de la part des clients ;
 le nom de l’utilisateur au nom duquel le démon gérant ce service doit fonctionner (en
général, c’est l’utilisateur root) ;
 le chemin sur le fichier exécutable de ce démon ;
 les éventuels paramètres en ligne de commande pour ce démon, en commençant par
l’argument 0, qui doit toujours être le nom du fichier exécutable du programme lui-
même.

135
Le super-démon inetd
 Exemple
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
 Cette ligne permet de lancer le démon telnetd sur toute requête via le
protocole TCP pour le service telnet
 Le démon inetd est capable de fournir lui-
même un certain nombre de services de
base,
 Dans ce cas, il faut utiliser le mot clé internal à la
place du nom du fichier exécutable du démon de
ce service.
 Et les paramètres doivent également être
remplacés par le mot clé internal.

136
Le super-démon xinetd
 la définition des services mis à disposition des clients
se fait dans le fichier de configuration
/etc/xinetd.conf.
 le fichier xinetd.conf peut inclure d’autres fichiers de
configuration et référencer des répertoires contenant
les fichiers de configuration spécifiques aux services.
 On définit les options par défaut pour tous les services dans
le fichier de configuration /etc/xinetd.conf,
 les différents services sont décris dans des fichiers
complémentaires stockés dans le répertoire /etc/xinetd.d/.
 Ce répertoire est inclus dans le fichier xinetd.conf à l’aide de la
directive includedir.

137
Configuration
 Le fichier de configuration de xinetd est /etc/xinetd.conf, il
est découpé en plusieurs sections, un section defaults avec
des paramètres concernant tous les services, et une section par
service avec des paramètres particuliers :
defaults
{
    paramètres par défaut pour tous les services
}
service nom-du-service1
{
    paramètres pour le service1
}
service nom-du-service2
{
    paramètres pour le service2
}
...

138
Configuration
 On peut très bien faire comme sous la Mandrake avoir un fichier
xinetd.confcontenant :
defaults
{
       paramètres par défaut pour tous les services
}
includedir /etc/xinetd.d
 On créera un répertoire /etc/xinetd.d contenant autant de
fichier qu'il y a de service, chaque fichier portant le nom du
service et contenant :
 service nom-du-service1
{
    paramètres pour le service1
}
 On aura donc le fichier telnet, ftp, finger...

139
Les options généralistes
 Ce sont les options qui peuvent s'appliquer à tous les services et
qu'on peut mettre dans la section defaults du fichier
xinetd.conf
 log_type vous pouvez spécifier un archivage des logs en utilisant le
daemon syslogd ou alors archiver dans un fichier. Exemple :
log_type = FILE /var/log/xinetd.log 20M 25M
 Quand vous atteindrez un fichier de log de 20M, un message d'alerte va
s'inscrire dans le fichier /var/log/messages mais le log continue, quand
on va atteindre 25M, xinetd n'écrit plus dans le fichier de log.
 log_on_success qui va spécifier les informations à archiver en cas de
lancement réussi d'un service, vous avez le choix des paramètres suivant :
 PID le PID du serveur
HOST adresse IP du client
USERID identité de l'utilisateur
EXIT le status de sortie du processus
DURATION le temps de la connexion

140
Les options généralistes
 log_on_failure    qui va spécifier les informations à archiver en cas d'erreur de lancement
d'un service (erreur d'authentification, manque de ressource), vous avez le choix des
paramètres suivant :
 HOST et USERID comme précédemment
 RECORD pour enregistrer toutes les info disponibles sur le client
 no_access pour définir les clients non autorisés à se connecter
 only_from pour définir les clients autorisés à se connecter. Exemple avec le sous réseau
192.168.13.X
 only_from = 192.168.13.0/32
 instances pour fixer le nombre maximum d'instances de serveur à lancer, ce qui permet
d'éviter le DoS
 per_source pour restreindre le nombre de connexion à un service venant d'une même
machine
 cps pour limiter le taux de connexion, il prend deux arguments,
 le premier fixe le nombre max de connexion à gérer par seconde, si le nombre de connexion dépasse
ce chiffre, le service sera temporairement désactivé.
 Le deuxième argument fixe le nombre de secondes pendant lesquelles le service restera inactivé.

141
Les options par service
 id pour identifier un service, si on utilise pas ce paramètre, dans le fichier de log on aura le
nom du service, avec id vous pouvez redéfinir le nom du service qui sera archivé dans le
fichier de log (ftp-public au lieu simplement de ftp par exemple)
 nice pour définir la priorité d'un service (-20 plus prioritaire 19 plus prioritaire)
 port numéro du port associé au service défini dans /etc/services
 protocol nom du protocole défini dans /etc/protocols
 server    le chemin du service
 server_args arguments à passer au service
 socket_type type de socket (stream pour TCP et dgram pour UDP), pour savoir si c'est
l'un ou l'autre voir le fichier /etc/services
 wait si wait=yes une seule instance du service peut être lancé à la fois, si wait=no, on
lance un serveur à chaque nouvelle connexion (dans la limite du nombre d'instance max)
 access_times pour définir une plage horaire la syntaxe est la suivante heure:minute-
heure:minute, exemple pour une plage horaire entre 7h-12h et 14h-19h
 access_times        = 7:00-12:00 14:00-19:00
 env pour passer une variable d'environnement avant de lancer le service

142
Les options par service
 bind (ou interface) pour attacher une interface à un service, pour limiter les requêtes à
une interface réseau par exemple
 redirect permet de rediriger une requête sur le port particulier d'une de vos machines de
votre réseau local.
 On peut réutiliser les paramètres déjà définis dans les paramètres par défaut et modifier les
options :
 exemple avec log_on_success, si celui-ci est définit dans les paramètres par défaut avec les
options suivantes PID HOST USERID EXIT DURATION, on veut avoir pour un service particulier
uniquement PID et HOST on écrira donc
 log_on_success      -= USERID EXIT DURATION
 De même si on a log_on_success défini à PID HOST et qu'on veut rajouter DURATION on écrira
 log_on_success    += DURATION

143
Configurer un service
 Le fichier se trouve sous /etc/xinetd.d et porte le nom du
service. La syntaxe du fichier est la suivante :
service nom-du-service
{
        socket_type = type de socket
        wait      = pour lancer un ou plusieurs instances du service
        user    = à qui appartiendra le service
        server=    chemin du serveur
        server_args= argument du serveur (facultatif)
        access_times=plage horaire (facultatif)
        nice      = priorité (facultatif)
}

144
Connexion à distance
 Les commandes à distance permettent d'ouvrir des
sessions virtuelles sur des systèmes distants. Ces
commandes peuvent agir sur le système local ou sur
le réseau local.
 Exemples :
 telnet
 rlogin
 rsh
 rcp
 …

145
telnet
 Cette commande permet d'ouvrir une session (connexion
interactive) sur un site distant.
 Cela nécessitera dans la plupart des cas d'avoir un accès sur la
machine distante.
 On peut aussi parfois indiquer un numéro de port identifiant le
service demandé.
 La connexion n'est pas 8 bits, il est impossible de faire des
transferts de fichiers sur une session telnet sans encapsulation.
 certains systèmes UNIX interprètent lors du login UNIX via
telnet les caractères # et @ de façon spéciale. Il est donc
recommandé de ne pas les utiliser.
 Syntaxe : telnet nom_Machine ou adresse_IP

146
rlogin
 Cette commande permet, comme telnet, de
se connecter à un site distant.
 Le protocole rlogin est, cependant, à la fois
plus sûr et plus rapide que le protocole telnet.
 Il permet aussi, dans un réseau sûr de ne pas
donner de mot de passe (/etc/hosts.equiv
et .rhosts).
 Syntaxe : rlogin [-l user] nom_machine
 -l pour se connecter avec nom de login different du login
courant.

147
rsh
 On peut exécuter des commandes shell
à distance avec cette commande,
 Il faut que le fichier .rhosts ait été
configuré
 ou que les deux machines concernées
soient équivalentes du point de vue de
leurs utilisateurs(/etc/hosts.equiv).
 Syntaxe rsh [-l user] nom_machine commande

148
rcp
 On peut copier des fichiers à distance
avec cette commande, avec les mêmes
restrictions vues pour la commande rsh.
 Syntaxe :
rcp [-r] [[loginA@]machineA:]/fichier [loginB@[machineB:]]/fichier
 L'option -r permet de traiter une copie récursive
pour recopier les répertoires.

149
~/.rhosts
 Ce fichier, s'il existe, autorise l'accès sans mot
de passe à votre compte pour des utilisateurs
locaux ou distants listés dans ce fichier.
 Une ligne de ce fichier est de la forme :
 host_autorisé login_autorisé
 ce fichier $HOME/.rhosts doit avoir les
accès : -rw------.
 Si ce fichier est modifiable par tous
(accès -rw-rw-rw-), il est ignoré.

150
/etc/hosts.equiv
 Le fichier hosts.equiv autorise ou interdit des ordinateurs et
des utilisateurs d'utiliser les commandes r (telles que rlogin,
rsh or rcp) sans donner de mot de passe.
 Le fichier utilise le format suivant :

[ordinateur] [utilisateur]
 Le champs ordinateur est le nom d'un ordinateur équivalent à
l'ordinateur local en terme d'autorisations. Les utilisateurs
connectés sur cet ordinateur sont autorisés à accéder les comptes
du même nom sans fournir de mot de passe
 Certains systèmes ne tiennent compte du contenu de ce fichier
que lorsque que le propriétaire est root et que personne d'autre
ne peut le modifier.
 Certains systèmes nécessitent même qu'il n'y a qu'un seul lien
physique sur le fichier.
151
Introduction au service NFS

Le service NFS : Network File


System

152
Généralités
 Il s'agit du protocole standard de
partage réseau entre machines Unix,
créé par SUN vers 1980.
Il comprend l'ajout de fonctionnalités
supplémentaires (dans la couche
session au dessus de TCP/IP), les RPC
=(Remote Procedure Calls)

153
Généralités
 Donc une machine joue le rôle de serveur de
fichiers. Elle est appelée serveur NFS, et
 on dit qu'elle exporte tout (arborescence racine /)
ou partie de son système de fichiers,
 en le partageant par une liste de stations
accessibles par réseau,
 en installant toutefois des restrictions d'accès.

154
Généralités
 Comme toute ressource extérieure doit
être intégrée dans le système de fichiers
Linux, cet accès ne pourra être permis
qu'à l'aide d'un processus de montage :
 une partie de l'arborescence d'une machine
Linux "serveur", est exportée ce qui lui
permet d'être intégré dans le système de
fichiers d'une machine Linux "cliente".

155
Généralités
 L'utilisateur peut monter cette
arborescence exportée par le serveur,
sur un point de montage, de façon tout-
à-fait semblable au
montage de systèmes de fichiers des
divers périphériques.
Le montage peut s'effectuer en cours de
session de travail par la commande
interactive mount.
156
Généralités
 Mais dans un cadre de travail stable, il
est souhaitable de monter la ressources
NFS au démarrage.
 Il suffit pour cela d'inclure la description
du montage sur une ligne de /etc/fstab.
 On peut comparer le processus à la
"connexion à un lecteur réseau" sur
d'autres systèmes.
157
Généralités
 Après le montage, pour l'utilisateur sur
la machine cliente, la ressource est
accessible comme si elle résidait sur un
périphérique local.

158
Installation
 Les services portmap qui gère les connexions
RPC, et nfs doivent être installés.
 packages portmap-version .. et nfs-utils
 Vérifier que les services portmap et nfs sont
bien activés automatiquement au démarrage.
 Pour vérifier que les processus correspondant
sont bien en exécution :
ps aux | grep portmap
ps aux |grep nfs

159
Installation
 NFS, comme les autres services, se gère avec
un script placé dans /etc/rc.d/init.d/.
Voici pour lancer NFS (sur une distribution
de type RedHat)
# service portmap start
Starting portmapper: [OK]
# service nfs start
Starting NFS services: [OK]
Starting NFS quotas: [OK]
Starting NFS deamon: [OK]
Starting NFS mountd: [OK]

160
Le fichier /etc/exports.
 Ce fichier (à créer s'il est absent) contient la
liste des exportations.
 Sur chaque ligne, on précise un répertoire du
système de fichiers,
 suivi par la liste des  machines distantes clientes
autorisées à les monter. Si cette liste est vide,
toutes les stations accessibles sont autorisées.
 Et une liste d’options de montage
 (r) (rw)

161
 Exemples d'exportation déclarées dans le
fichier /etc/exports
 sur le serveur p00
 repertoire liste-machines (liste-options)
/home/jean pc2(ro) pc3(rw)
/usr/bin pc2(ro) pc3(ro)
/var/www/html *(ro) pc3 (rw)
/usr/share/doc *(ro)
Pour valider un changement opéré dans ce fichier de
configuration, faire appel à la commande :
# exportfs -a

162
Options de partage
 ro : droit de lecture uniquement
 rw : lecture écriture
 root_squash :spécifie que le root de la
machine distante n'a pas les droits de root sur
le répertoire partagé
 no_root_squash: spécifie que le root de la
machine sur laquelle le répertoire est monté a
les droits de root sur le répertoire
 L'option root_squash est l'option par défaut.

163
Sur la station cliente
 On crée un répertoire de montage,
 Puis on effectue le montage:
 Syntaxe de montage :
mount -t nfs nom-machine:arborescence point-montage
[root@pc3 /]# mkdir /mnt/rep
[root@pc3 /]# mount -t nfs
p00:/home/alice /mnt/rep
L'utilisateur sur pc3 pourra alors mettre à
jour le repertoire alice sur p00

164
Respect par nfs des droits
 Bien sûr les permissions des fichiers
importés s'appliquent vis à vis de
l'utilisateur, notamment en ce qui
concerne la directive (rw).
 On ne pourra mettre à jour sur la
station cliente, un fichier exporté que
s'il possède la permission w vis-à-vis de
l'utilisateur.
165
NB!
 L'option rw signifie en réalité que l'utilisateur
dont l'ID est 1001 (par exemple...) sur le client
NFS a les droits d'écriture sur les fichiers et
les répertoires qui appartiennent à
l'utilisateur dont l'ID est 1001 sur le serveur
NFS.

 Attention, ces utilisateurs n'ont pas forcément


le même nom de compte Unix et ne
correspondent pas forcément aux mêmes
personnes !

166
Automatisation du montage

Pour cela, il suffit d'ajouter le contenu


de la commande précédente dans une
ligne du fichier /etc/fstab
    p01:/home/alice  /mnt/rep  nfs auto,
user
 

167
Fonctionnement de NIS

Le service NIS : Network


Information System

168
Généralités
 L'objectif central de tout serveur de
fichiers d'un réseau local est de
permettre aux utilisateurs du réseau de
se connecter au serveur de fichier sous
un compte centralisé au niveau du
réseau, et non pas défini machine par
machine et aussi d' accéder à ses fichiers
(répertoire personnel, ...)
169
Généralités
 NIS maintient une base de données (ou
annuaire) centralisée au niveau d'un
groupe de machines appelé domaine
NIS.
 Ces informations sont alors stockées
dans le répertoire /var/yp/nom-domaine,
sous forme d'un ensemble de fichiers
binaires appelés cartes ou maps.
170
Généralités
 Les types d'informations que les stations "clientes",
viennent chercher sont essentiellement :
 les correspondances entre noms et adresse IP des machines
du réseau,
 les vérifications des noms de login, mots de passe et groupe
d'appartenance des comptes utilisateurs existants sur le
serveur.
 Toutes ces informations sont contenues
habituellement dans les fichiers
 /etc/hosts (annuaire des machines connues),
 /etc/passwd, (annuaires des utilisateurs qui contient les
répertoires à la connexion)
 /etc/group (annuaire des groupes)
 et /etc/shadow (mots de passe cryptés).
171
Généralités
 Les informations sont contenues dans 6
maps usuels, situés dans /var/yp/nom-
domaine, et appelés
 hosts.byname, hosts.byaddr,
 passwd.byname, passwd.byuid,
 group.byname et group.bygid
 ….

172
Généralités
 Les applications NIS utilisent les
fonctions RPC =Remote Procedure Calls)
 Les fonctions RPC sont gérées par un
service appelé portmap.

173
Configuration du serveur NIS

174
Installation
 Le paquetage RPM à installer est ypserv
Son installation va créer des fichiers dans :
 /usr/sbin : les serveurs ypserv et rpc.yppasswd,
 /etc/rc.d/init.d/: les scripts de contrôle ypserv et
yppasswd des serveurs
 /etc/ypserv.conf : le fichier de configuration du serveur
 /var/yp, place des cartes et du fichier Makefile qui
permet leur génération
 /usr/lib/yp, autres exécutables .

175
Lancement
 Du côté serveur, les services à lancer sont :
 portmap,
 ypserv (le serveur NIS)
 et yppasswd (le service spécialisé dans le changement
des mots de passe).
 On procède alors au lancement ou à l'arrêt manuel
de NIS par :

service portmap start


service ypserv start
service yppasswd start

176
Configuration
1. Choisir un nom de domaine NIS,
• Le nom de domaine NIS est indépendamment
du nom de domaine du réseau,
• et également sans rapport avec un éventuel nom
de domaine Samba .
• soit ecole par exemple,
• Supposons de plus que le serveur ait pour
adresse IP : 192.168.0.1 avec un masque
255.255.255.0

177
Configuration
2. Déclaration du domaine NIS :
• Editer le fichier /etc/sysconfig/network, et y
ajouter cette ligne :
NISDOMAIN=ecole
• Ou a partir d’une ligne de commande
#domainname ecole
• Relancer le serveur (service ypserver restart)
• Vérification :
• la commande domainname doit obtenir comme
réponse ce nom de domaine NIS.
#domainname
ecole

178
Configuration
3. Préciser les machines autorisées à accéder au
service NIS :

• Editer le fichier /var/yp/securenets et insérer


les lignes
# pour permettre l'accès sur le serveur même
255.0.0.0 127.0.0.0
# pour permettre l'accès de toutes les machines du sous-
réseau (masque et adresse réseau)
255.255.255.0 192.168.0.0

179
Configuration
4. Préciser les informations que NIS doit gérer

• Editer le fichier /var/yp/Makefile et lister sur la ligne


commençant par all: les données à gérer :

all: passwd group hosts

NB
Il est recommandé de ne rien modifier d'autre sauf "si on sait
ce que l'on fait ...", car pour l'essentiel il a été correctement
paramétré lors de l'installation de la distribution.

180
Configuration
5. Générer les cartes :
• Il s'agit maintenant de créer les 3 cartes (maps)
correspondant aux 3 fichiers
• /etc/passwd, /etc/ group et /etc/hosts.
• L'utilitaire /usr/bin/make doit être exécuté par
root dans le répertoire du Makefile
# cd /var/yp
# make
Il y a création d'un sous-répertoire /var/yp/ecole (portant le
nom du domaine NIS) contenant les 6 fichiers binaires de
permissions 600 :
hosts.byname, hosts.byaddr, passwd.byname, passwd.byuid,
group.byname et group.bygid
181
Configuration
6. Pour définir des règles d’accès
supplémentaires:

Editer le fichier /etc/ypserv.conf et


indiquer une règle d’accès comme ci-
dessous :
# Host : domain :Map :Security
#
192.168.0. * : passwd.byname
: port
192.168.0. * : passwd.byuid : port
182
 Host : adresse ip d’une machine ou d’un
reseau ou *
 Domain : nom de domaine ou *
 Map : nom du map concerné par cette règle
 Security
 none : accès toujours autorise
 port : accès autorise si port <1024
 deny : accès non autorise

183
Configuration
7. Relancer le serveur

service ypserv restart

Le serveur devrait être fonctionnel.


• Vérification
# ps ax | grep yp
root 550 ..... ypserv
root 823 ...... rpc.yppasswdd

184
Configuration d'une machine
cliente

185
Installation et lancement
 Les paquetages à installer sont d'abord
 ypbind,
 puis yp-tools
 Avec l'utilitaire ntsysv ou chkconfig , on peut
activer NIS au démarrage en cochant ypbind,
programme exécuté sur le client, ainsi que
portmap
 Pour lancer à la main les services passer les 2
commandes dans l'ordre
 service portmap start
 service ypbind start

186
Configuration
1. Dans /etc/sysconfig/network, comme sur
le serveur il faut déclarer le nom du
domaine en ajoutant la ligne NISDOMAIN
= "ecole"
2. Editer /etc/yp.conf pour déclarer le serveur
NIS
domain ecole server nom_serveur
ypserver hostname
broadcast

187
Configuration
3. Editer /etc/nsswitch.conf, et veillez à
la présence active des lignes
passwd: files nis
group: files nis
hosts: files nis dns
 Option de recherche
 Source[ réponse=action]

188
Algorithme de recherche
 Plusieurs sources d’informations peuvent être proposées pour chaque recherche.
Les entrées supportées sont :
 files
 nis
 dns
 Compact (compatibilité pour passwd et group avec ancienne version)
 Il est possible de spécifier plusieurs sources. Chaque recherche retourne une
réponse qui prend les valeurs suivantes:
 SUCCESS l’information est disponible
 UNAVAIL la source de l’information n’est pas disponible, quelle
que soit la raison
 NOTFOUND la source répond qu’elle ne détient pas l’information
 TRAYAGAIN la source est occupée
 Pour chaque statut, deux actions sont possible
 Continue essayer la source suivante dans la liste
 return arrêter la recherche et fournir le résultat disponible

189
Algorithme de recherche
 Les actions par défaut sont :
 SUCCESS=return
 UNAVAIL=continue
 NOTFOUND=continue
 TRYAGAIN=continue

190
Configuration
4. En ligne de commande, (re)lancer le service
client. On devrait obtenir 2 messages :
recherche d'un domaine NIS, puis tentative
de liaison à un serveur NIS.
# service ypbind start
Binding to the NIS domain: [OK]
Listening for an NIS domain server:
nom_serveur ………………..

191
tests
#ypwhich
 doit donner le nom complet de la machine
qui hébergé le serveur
#ypcat passwd
 permet d’afficher la carte des comptes
utilisateurs
 Chagement de mot de passe
 yppasswd user

192
Première connexion
Login : user1
Passwd :*****
Last login: ………
No directory /home/user1
Logging in with home=“/”.
Bash->
Tout est normal user1 n’a pas de répertoire personnel
sur la station.
 NFS
 telnet

193
Pbs clients
 #service ypbind start
Binding to the nis domain … [failed]
Listening for an nis domain server … ypwhich:ne peut communiquer par ypbind

 #domainname

 Le nom du domaine n’a pas été précise

194
Pbs clients
 #service ypbind start
Binding to the nis domain … [OK]
Listening for an nis domain server … ypwhich:ne peut communiquer par ypbind

 Le nom de domaine est bien connu,


mais il y a un problème quand le client
cherche a se lier au serveur du domaine

 La première cause a suspecter est un


dysfonctionnement réseau.

195
Secure shell : SSH

196
 SSH utilise la cryptographie asymétrique RSA ou
DSA.
 En cryptographie asymétrique, chaque personne
dispose d'un couple de clé :
 La clé publique qui peut être librement publiée
 La privée doit rester secrète.
 La connaissance de la clé publique ne permet pas d'en
déduire la clé privée.
 Si la personne A veut envoyer un message
confidentiel à la personne B,
 A crypte le message avec la clé publique de B et l'envoie à B
sur un canal qui n'est pas forcément sécurisé.
 Seul B pourra décrypter le message en utilisant sa clé privée.

197
La théorie de la cryptographie
symétrique
 SSH utilise également la cryptographie
symétrique.
 Son principe est simple :

si A veut envoyer un message confidentiel à B,


 A et B doivent d'abord posséder une même clé
secrète.
 A crypte le message avec la clé secrète et l'envoie à
B sur un canal qui n'est pas forcément sécurisé.
 B décrypte le message grâce à la clé secrète.
 Toute autre personne en possession de la clé
secrète peut décrypter le message.

198
 La cryptographie symétrique est beaucoup moins
gourmande en ressources processeur que la
cryptographie asymétrique.
 mais le gros problème est l'échange de la clé secrète
entre A et B.
 Dans le protocole SSL, qui est utilisé par SSH,
 la cryptographie asymétrique est utilisée au début de la
communication pour que A et B puissent s'échanger un clé
secrète de manière sécurisée...
 la communication est ensuite sécurisée grâce à la
cryptographie symétrique en utilisant la clé secrète
échangée.

199
L'établissement d'une
connexion SSH
 Un serveur SSH dispose d'un couple de
clés RSA stocké dans le répertoire
/etc/ssh/ et généré lors de l'installation
du serveur.
 Le fichier ssh_host_rsa_key contient la clé
privée et a les permissions 600.
 Le fichier ssh_host_rsa_key.pub contient la
clé publique et a les permissions 644.

200
étapes d'établissement d'une
connexion SSH
1. Le serveur envoie sa clé publique au client.

1. Le client génère une clé secrète et l'envoie au serveur, en cryptant l'échange


avec la clé publique du serveur (cryptographique asymétrique). Le serveur
décrypte la clé secrète en utilisant sa clé privée, ce qui prouve qu'il est bien le
vrai serveur.

1. Pour le prouver au client, il crypte un message standard avec la clé secrète et


l'envoie au client. Si le client retrouve le message standard en utilisant la clé
secrète, il a la preuve que le serveur est bien le vrai serveur.

1. Une fois la clé secrète échangée, le client et le serveur peuvent alors établir un
canal sécurisé grâce à la clé secrète commune (cryptographie symétrique).

1. Une fois que le canal sécurisé est en place, le client va pouvoir envoyer au
serveur le login et le mot de passe de l'utilisateur pour vérification. La canal
sécurisé reste en place jusqu'à ce que l'utilisateur se déloggue.

201
 La seule contrainte est de s'assurer que la clé
publique présentée par le serveur est bien sa clé
publique...
 sinon le client risque de se connecter à un faux serveur qui
aurait pris l'adresse IP du vrai serveur (ou toute autre
magouille).
 Une bonne méthode est par exemple de demander à
l'administrateur du serveur quelle est le fingerprint de
la clé publique du serveur avant de s'y connecter
pour la première fois.
 Le fingerprint d'une clé publique est une chaîne de 32
caractères hexadécimaux unique pour chaque clé ; il
s'obtient grâce à la commande ssh-keygen -l.
202
Installation et configuration
de SSH
 Paquetages à installer
 Openssh
 Openssh-server
 Openssh-client

 Openssh utilise un fichier de


configuration général /etc/sshd_config

203
/etc/sshd_config
 les lignes les plus importantes de ce fichier de configuration :

Port 22
 Signifie que le serveur SSH écoute sur le port 22, qui est le port par défaut de
SSH.
 Vous pouvez le faire écouter sur un autre port en changeant cette ligne.
 Vous pouvez aussi le faire écouter sur plusieurs ports à la fois en rajoutant des
lignes similaires.
Protocol 2
 Signifie que votre serveur SSH accepte uniquement la version 2 du protocole
SSH.
 C'est une version plus sécurisée que la version 1 du protocole. Seuls certains
vieux clients SSH ne savent faire que du SSH version 1.
 Si vous voulez que le serveur accepte les deux protocoles, changez la ligne en :
Protocol 2,1

204
/etc/sshd_config
 Chemin sur les fichiers de clefs :
 HostKey /etc/ssh_host_rsa_key

 HostKey /etc/ssh/host_dsa_key

 Authentification par mot de passe :


 PasswordAuthentification no

 PermitEmptyPasswords no

205
/etc/sshd_config
 Authetification par clef public
 RSAAuthentification no
 PubkeyAuthentification yes

 Options generales
 PermitRootLogin no
 strictModes yes
 Affichage des informations habituelles au login
 PrintMtod no
 printLastLog yes

206
Se logguer par SSH
Authentification par mot de passe
 C'est la méthode la plus simple. Depuis la machine cliente, tapez :
% ssh login@nom_du_serveur_SSH

 Si c'est la première connexion SSH depuis ce client vers ce serveur, il


vous demande si le fingerprint de la clé publique présentée par le
serveur est bien le bon.
 Pour être sûr que vous vous connectez au bon serveur,
 Comparer le fingerprint de sa clé publique à celle qu'il vous affiche.
 Si les deux fingerprints sont identiques, répondez yes, et la clé publique du
serveur est alors rajoutée au fichier ~/.ssh/known_hosts.
 Si vous vous êtes déjà connecté depuis ce client vers le serveur, sa clé
publique est déjà dans le fichier ~/.ssh/known_hosts et il ne vous
demande donc rien.
 Ensuite, entrez votre mot de passe... et vous verrez apparaître le
prompt, comme si vous vous êtiez loggué en local sur la machine.

207
Se logguer par SSH
Authentification par clé
 Au lieu de s'authentifier par mot de
passe, les utilisateurs peuvent
s'authentifier grâce à la cryptographie
asymétrique et son couple de clés
privée/publique, comme le fait le
serveur SSH auprès du client SSH.

208
Générer ses clés
 Pour générer un couple de clés DSA, tapez :
% ssh-keygen -t dsa
 Les clés générées ont par défaut une longueur

de 1024 bits, ce qui est aujourd'hui considéré


comme suffisant pour une bonne protection.
 la clé privée est stockée dans le fichier
~/.ssh/id_dsa avec les permissions 600
 et la clé publique est stockée dans le fichier
~/.ssh/id_dsa.pub avec les permissions 644.

209
Générer ses clés
 Lors de la création, il vous demande une pass phrase
qui est un mot de passe pour protéger la clé privée.
 La pass phrase sert à crypter la clé privée.
 Ell est demandée à chaque utilisation de la clé privée, c'est à
dire à chaque fois que vous vous logguerez en utilisant cette
méthode d'autentification.
 Un mécanisme appelé ssh-agent permet de ne pas rentrer le
mot de passe à chaque fois.

 Vous pouvez à tout moment changer la pass phrase qui


protège votre clé privée avec la commande ssh-keygen -p.

210
Autoriser votre clé publique
 Pour cela, il suffit de copier votre clé publique dans le fichier
~/.ssh/authorized_keys de la machine sur laquelle vous voulez
vous logguer à distance.
 La commande suivante permet de réaliser cette opération via
SSH :

% ssh-copy-id -i ~/.ssh/id_dsa.pub login@nom_du_serveur

 et entrez le mot de passe de votre compte sur le serveur.


 Se logguer
 La commande est la même que pour une autentification par mot de
passe.

211
Se logguer par SSH sans
taper de mot de passe
 Le principe
 Si on utilise un couple de clés publiques / privées,
 et qu’on a crypté la clé privée avec une pass phrase
(configuration la plus sûre).
 le client SSH demande la pass phrase à chaque utilisation des
clés pour s'authentifier.
 Pour éviter d'avoir à taper systématiquement sa pass
phrase, il faut utiliser ssh-agent :
 ce programme tourne en tâche de fond et garde la clef en
mémoire.
 La commande ssh-add permet de donner sa clé à ssh-agent.
Ensuite, quand vous utilisez le client SSH, il contacte ssh-
agent pour qu'il lui donne la clé.

212
ssh-agent La pratique
 Dans une console, ouvrez un screen avec ssh-agent en
tâche de fond :
% exec ssh-agent $SHELL
 Puis donnez votre clé à l'agent :

% ssh-add
 Il vous demande alors votre pass phrase.

Maintenant que votre clé a été transmise à l'agent, vous pouvez


vous connecter sans entrer de mot de passe à toutes les
machines pour lesquelles vous avez mis votre clé publique dans
le fichier ~/.ssh/authorized_keys.

213
Faire des tunnels SSH
 Faire un tunnel SSH est un moyen simple de crypter n'importe quelle
communication TCP entre votre machine et une machine sur laquelle
vous avez un accès SSH.
 Par exemple, pour établir un tunnel SSH pour une connexion HTTP
vers la machine serveur.exemple.org :

% ssh -L 2012:serveur.exemple.org:80 toto@serveur.exemple.org

 où 2012 est le port sur la machine cliente à partir duquel la connexion


entre dans le tunnel SSH
 le port doit être supérieur à 1024 si on ne veut pas avoir à lançer le tunnel en
tant que root.
 Ensuite, il suffit de lançer un navigateur Web en lui demandant de se
conneecter en local sur ce port :

% w3m http://localhost:2012

214
Faire des tunnels SSH

215
Utiliser SCP
 pour transférer le fichier test1.txt situé dans le répertoire courant vers le home du compte
toto de la machine ordi1.exemple.org sur laquelle tourne un serveur SSH :

% scp test1.txt toto@ordi1.exemple.org:

 pour récupérer le fichier test2.txt situé le home de l'utilisateur toto de la machine


ordi2.exemple.org et l'écrire dans le répertoire courant :
% scp toto@ordi2.exemple.org:test2.txt .
.
 pour récupérer tous les fichiers ayant l'extension .txt situés dans le répertoire /usr/local de
la machine ordi2.exemple.org et l'écrire dans le sous-répertoire test-scp du répertoire
courant :

% scp toto@ordi2.exemple.org:/usr/local/*.txt test-scp

 pour transférer l'intégralité du sous-répertoire test-scp du répertoire courant vers le sous


répertoire incoming du home de l'utilisateur toto de la machine ordi1.exemple.org :

% scp -r test-scp toto@ordi1.exemple.org:incoming

216

Vous aimerez peut-être aussi