SlideShare une entreprise Scribd logo
1  sur  213
Administration Unix
Sommaire 
• Unité 1 : Administration des utilisateurs et des groupes…………….3 
• Unité 2: 
2
Unité 1 
Administration des utilisateurs et 
des groupes
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. 
4
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 être utiliser comme login 
• comptes ordinaires 
5
Enregistrer un utilisateur: /etc/passwd 
• 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, ...). 
6
Enregistrer un utilisateur 
/etc/passwd 
• Exemple : 
root :x:0:0:root:/root:/bin/bash 
kmaster:x:500:500:kmaster:/home/kmaster:/bin/bash 
• Nota le deuxième champ (x) spécifie q'il y a un mot de passe et que 
celui-ci est crypté (dans /etc/shadow). 
• L'UID est compris entre 0 (root) et la constante UID_MAX (définie 
dans le fichier /etc/login.defs). 
• ATTENTION : Si au sein de ce fichier, plusieurs lignes possèdent 
le même UID pour plusieurs noms de connexion différents, UN 
SEUL utilisateur est en fait défini ! 
Exemple : on peut ainsi définir un utilisateur stop, dont l'UID est 0 
et qui exécute shutdown comme commande de connexion. 
7
/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. 
8
/etc/shadow 
• Une ligne /etc/shadow est composée des champs 
suivants: 
▫ Nom de login 
▫ mot de passe crypté 
▫ Nombre de jours écoulés depuis le 1er janvier 1970 jusqu'au dernier 
changement de mot de passe 
▫ Nombre de jours durant lesquels le mot de passe est encore valide 
▫ Nombre de jours après lesquels le mot de passe doit être changé 
▫ Nombre de jours avant l'expiration du mot de passe impliquant 
l'avertissement de l'utilisateur 
▫ Nombre de jours après l'expiration provoquant la desactivation du 
compte 
▫ Numéro du jour depuis le 1er janvier 1970 à partir duquel le compte a 
été désactivé 
▫ Champs réservé 
9
/etc/shadow 
• Exemple : 
• kmaster:$1$zBvl.scX$hkqgDvBu40EqpAEwZf 
ZZQ0:11493:0:99999:7::: 
▫ le mot de passe en cours a été mis en place le 11493e 
jour après le 1/1/1970 (date de référence), 
▫ il pourra à nouveau être changé 0 jour après cette date 
▫ il devra obligatoirement être modifié avant le 99999e 
jour après la date de création (autant dire qu'il 
n'expire jamais...). 
10
/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 
11
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) 
12
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 
# Useradd –c « compte de test » -m –d /home/toto –G test –k /etc/skel 
toto 
13
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 
14
Gestion des comptes 
• La commande passwd 
▫ Syntaxe : passwd [options ] nom_login 
▫ Options 
-d l'utilisateur pourra se connecter sans mot de 
passe ! 
-l pour verrouiller le compte et empêcher sa 
connexion. 
-u pour déverrouiller. 
15
Gestion des comptes 
• Connaître l'uid et le gid de l'utilisateur courant 
▫ Commandes ( id, whoami, who 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 
16
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. 
17
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) 
18
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 
19
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 
20
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. 
21
Processus d ’initialisation utilisateur 
 /etc/profile 
 $HOME/.bash_profile 
 $HOME/.bashrc 
 /etc/bashrc 
 $HOME/.bash_logout 
22 
[user@host pwd]$ Bourne Again Shell
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) 
23
Unité 2 
Les droits d’accès
Gestion des droits d’accès 
• Tout utilisateur possède un numéro d'utilisateur et 
le numéro du groupe auquel il appartient. On 
distingue trois types d'utilisateurs potentiels : 
▫ le propriétaire du fichier ("user", u); 
▫ les utilisateurs appartenant au même groupe ("group", g); 
▫ les autres utilisateurs ("other", o). 
• Trois types d'opérations sur les fichiers sont possibles 
▫ la lecture ("read", r); 
▫ l'écriture ("write", w); 
▫ l'exécution ("execute", x). 
• Il y a donc 9 combinaisons possibles utilisateur-opération. 
C'est pourquoi les protections sont codées 
sur 9 bits. 
25
Gestion des droits d’accès 
• si vous essayez de copier un fichier dans un 
sous-répertoire (cp fic1 rep2/rep3/fic1), il faut que 
vous puissiez : 
1.lire le fichier fic1 : droit en lecture sur le fichier 
2.traverser les sous-répertoires rep2 et rep3 : droit x 
au moins pour vous, 
3.écrire dans rep3 : droit W 
26
Modification des droits d’accès 
chmod modification_des_droits fichier1 [fichier2 …] 
• Vous pouvez utiliser des +, - ou = pour ajouter, supprimer ou 
fixer des droits à l'une ou l'autre des catégories u, g, o ou a tous 
(a) en précisant le type de droit d'accès, r, w ou x. 
▫ chmod g+w fic1 
▫ chmod o-x rep 
▫ chmod u+rx,g-w fic2 
▫ chmod u=rwx,g=rx,o=- fic 
▫ chmod a+r fic 
• Si le changement de droits s'applique à un répertoire, vous 
pouvez changer tous les droits des fichiers et répertoires inclus 
dans ce répertoire via l'option -R. 
27
Modification des droits d’accès 
chmod nombre_en_base_8 fichier1 [fichier2 …] 
• chmod utilise le codage binaire, fondé sur l'association de 
valeurs numériques aux différentes permissions : 
▫ lecture : 4, 
▫ écriture : 2, 
▫ exécution : 1, 
▫ pas de permission : 0. 
• Chaque triplet se code par l'addition de 4, 2, 1, ou 0. 
▫ Pour un rwx il faudra ajouter 4+2+1=7, 
▫ pour r-x 4+0+1=5 etc. 
• La commande chmod permettant de positionner rwxr-x--- sur 
fic1 à la syntaxe suivante : chmod 750 fic1 
28
Valeur par défaut des droits 
d’accès 
umask nombre_en_base_8 
• Par défaut unix affecte les droits max sur les 
fichiers normaux et les répertoires : 
▫ Rép 777 (rwxrwxrwx) 
▫ Fichier normal 666 (rw-rw-rw-) 
• Les droits effectifs sont obtenus par : 
droits_max - masque 
• Exemple 
▫ Si on souhaite un accès en lecture/écriture pour le propriétaire et 
en lecture seule pour le groupe et le reste de monde, on utilise 
022 comme masque 
29
Changement de propriétaire et de 
groupe 
• Sans les uid et les gid les droits d’accès 
n’auraient aucun sens. 
• La commande chown permet de changer le 
propriétaire 
chown utilisateur fichier1 [fichier2 …] 
• La commande chgrp permet de changer le 
groupe 
chgrp groupe fichier1 [[fichier2 …] 
30
Unité 3 
Démarrage et arrêt du système
Etape de démarrage de Linux 
32 
Power-On 
BIOS 
Master boot record 
Noyau Linux 
init 
Système prêt
Basic Input Output System 
• Analyse la configuration matérielle de l’ordinateur: 
▫ Test de la mémoire 
▫ Test la présence du clavier 
▫ Test la présence des disques durs, lecteurs de CDROM IDE 
• lit les options à partir de la mémoire non volatile 
▫ 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 
33
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 
34
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 
-c : utilisation du fichier de configuration autre que /etc/lilo.conf 
-t : test uniquement 
35
/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. 
36
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 
37
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 
38
Etapes d’exécution LILO 
• Au démarrage de la machine, ces 4 lettres 
s’affichent chacune après une étape bien précise 
: 
▫ L : après le chargement de la première partie de LILO 
▫ I : après le chargement de la deuxième partie de LILO, 
mais avant son exécution 
▫ L : après le démarrage de la deuxième partie de LILO 
▫ O : lorsque la deuxième partie de LILO a trouvé sur le 
disque tous les éléments nécessaire a son bon 
fonctionnement. 
39
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 
40
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. 
41
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. 
42
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 
43
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) 
44
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 
45
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. 
46
Configuration des services par niveau 
▫ ntsysv 
▫ Chkconfig 
▫ serviceconf 
▫ . . . 
47
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>) 
48
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 
49
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 
50
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 
51
Unité 4 
Les packages
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. 
53
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 
54
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 
55
Désinstallation de RPM 
• Pour désinstaller un RPM, on utilise la 
commande 
 rpm -e nom_package 
• options: 
 --nodeps : ignore les dépendances 
56
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 
57
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 
58
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. 
59
Unité 5 
Gestion des 
périphériques
▫ 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. 
61
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 
62
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 
63
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é 
64
exemples 
ls –al /dev/hda 
brw-rw---- 1 root disk 3, 0 Apr 28 2000 /dev/hda 
ls –al /dev/hdb 
brw-rw---- 1 root disk 3, 64 Apr 28 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 
65
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. 
66
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 
67
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 
68
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 
69
Unité 6 
Système de fichier
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) 
71
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 
72
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. 
73
Les SFs supportés 
• Le plus important : ext2fs 
• les plus récents : ext3fs, ReiserFS, IBM JFS 
• 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) 
74
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 (simple, double, triple) 
▫ bloc de données (data block) 
75
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 
76
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 
77
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 
78
79
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) 
80
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 
81
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 
82
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 
83
Monter des SFs au démarrage 
• Pour chaque SF à monter au 
démarrage ajouter une line dans 
/etc/fstab 
/dev/hda2 / ext2 defaults 1 1 
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0 
/dev/fd0 /mnt/floppy msdos noauto,user 0 0 
/dev/hda6 /mountpoint ext2 defaults 0 0 
84
Options de montage 
• On utilisé plusieurs options 
▫ auto montage automatique (mount –a ) 
▫ 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 
85
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 
86
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 
87
Unité 7 
Gestion de quota
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 
89
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. 
90
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 
91
Activation de quota 
• Modifier /etc/fstab 
/dev/hda2 / ext2 defaults,userquota,grpquota 1 1 
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0 
/dev/fd0 /mnt/floppy msdos noauto,user 0 0 
/dev/hda6 /mountpoint ext2 defaults 0 0 
• 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 
92
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 
93
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 
94
Unité 8 
Scheduling
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 
96
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 
97
Exemple d ’un fichier crontab 
utilisateur 
98 
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
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. 
99
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 
100 
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
at 
• La commande at exécute une commande à un 
moment donnée. 
# at 4am 
ps aux 
^d 
# at -f bshfile 16:00 + 3 days 
101
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 
102
batch 
• Exécute une commande quand le système et 
moins chargé 
$batch 
echo la charge est minime 
^d 
103
Unité 9 
Syslog
Pour quoi faire 
• Syslogd est un daemon qui journalise les 
événements du système. 
▫ Il faut avoir le daemon syslogd qui tourne sur 
105 
votre machine pour que cela marche. 
▫ Lorsque vous lancez syslog sur votre machine 
vous démarrez en fait le daemon syslogd et klogd,
Le principe 
• Par défaut les fichiers de log se trouvent dans 
106 
/var/log. 
• Le fichier de configuration de syslog est dans 
/etc/syslog.conf. 
• Par mesure de sécurité, il est d'usage de mettre 
le répertoire /var/log dans une partition propre 
(afin d'éviter qu'une saturation de ce répertoire 
n'entraîne un arrêt du système tout entier).
Le principe 
• Les fichiers de log sont les suivants : 
107 
▫ /var/log/messages est le fichier système qui récupère 
tout. 
▫ /var/log/secure Contient les informations de 
connexions. Chaque login y est enregistré. 
▫ /var/log/maillog Contient un enregistrement du 
trafic de courrier entrant et sortant. 
▫ /var/log/spooler Contient les messages d'erreur des 
daemons uucp et innd (news).
L'installation 
108 
• Par défaut il est installé avec la plupart des 
distributions, mais au cas ou, peut probable ou il 
faut l'installer : 
sysklogd-.....rpm utilisez la dernière version. 
• Normalement il est lancé au démarrage de la 
machine. Si cela n'est pas le cas vous pouvez le 
lancer avec la commande 
/etc/rc.d/init.d/syslog start.
Configuration 
• La configuration de syslog se fait dans le fichier 
/etc/syslog.conf. 
▫ Pensez après toute modification à faire relire ce fichier 
de conf (killall -HUP syslogd). 
• Dans le fichier syslog.conf vous devez donc 
indiquer sur une ligne : 
▫ le service, 
▫ le niveau de gravité, 
▫ le fichier vers lequel diriger les logs. 
109
Catégories de service 
• Les différentes catégories de service sont : 
▫ auth ou security Messages de sécurité et d'authentification. 
▫ Authpriv La même chose que précédemment, mais logs 
plus privés 
▫ Cron Messages de crontab et de at 
▫ Daemon Messages systèmes générés par le daemon 
▫ Ftp Messages du serveur ftp 
▫ Kern Messages du noyau 
▫ Lpr Messages du serveur d'impression 
▫ Mail Messages du serveur de messagerie 
▫ News Messages du serveur de news 
▫ Syslog Messages de syslog lui-même 
▫ User Messages générés par le programme en cours 
d'un utilisateur 
▫ Uucp Messages UUCP 
110
Liste de sévérite 
• 
▫ 7 debug Messages de débogage 
▫ 6 info Messages d'information 
▫ 5 notice Messages un peu plus importants 
que les messages info 
▫ 4 warning ou warn Messages d'avertissement 
▫ 3 err Messages d'erreur 
▫ 2 crit Situation critique 
▫ 1 alert Situation critique nécessitant une 
intervention immédiate 
▫ 0 emerg ou panic Système inutilisable 
111
Unité 10 
Les processus
La gestion des processus 
• Pour chaque processus exécuté dans le système 
d'exploitation est stocké un certain nombre 
d'informations : 
▫ Numéro de processus (PID); 
▫ Numéro de processus parent (PPID); 
▫ Numéro d'utilisateur (UID) ; 
▫ Numéro de groupe (GID) ; 
▫ Durée du traitement utilisée (temps CPU) et priorité 
du processus ; 
▫ Référence au répertoire de travail courant ; 
▫ Table de références des fichiers ouverts 
113
Numéro unique de processus 
• Sous UNIX/LINUX, plusieurs programmes 
peuvent être exécutés simultanément car 
UNIX/LINUX est multi-tâches. 
• Le système affecte un numéro spécifique à 
chaque processus individuel afin de les 
différencier. Il ne sait pas exécuter 2 processus 
ayant le même numéro. 
114
Processus parent 
• Chaque processus peut créer lui-même de 
nouveaux processus, qui se nomment alors 
processus enfants. 
• Pour que les enfants connaissent leur origine, le 
système leur communique le numéro 
d'identification de leur processus parent. 
• Cas particulier : init 
115
Traitement en tâche de fond 
• Si vous lancez un programme dans un terminal, 
le Shell ne vous rend la main que quand le 
processus ainsi lancé est terminé. 
• Si vous ajoutez le & à la fin de la ligne de 
commande, vous reviendrez directement au 
prompt du Shell. 
• On parle dans ce cas d'un processus en tâche de 
fond. 
• Le Shell et son processus enfant fonctionnent 
alors en parallèle. 
116
Traitement en tâche de fond 
117 
• Avant de placer le signe & derrière une ligne de 
commande, il faut être conscient de certaines contraintes 
: 
▫ Le nouveau processus en tache de fond ne doit pas attendre de 
saisie au clavier ; 
▫ Le processus en tache de fond ne doit pas retourner de résultats à 
l'écran ou sur un terminal ; 
▫ Les commandes en tache de fond dépendent du Shell, car c'est lui 
qui les a lancées. Si vous quittez le Shell par la commande exit ou 
les touches Ctrl + D sur une ligne vierge, vous forcerez 
également la fin des processus en tache de fond.
Messages renvoyés par un 
processus d'arrière-plan 
• Exemple : 
▫ la commande ls -lR liste tous les répertoires avec 
récursivité. 
▫ Si l'utilisateur qui lance cette commande n'a pas 
les droits d'accès à certains répertoires listés, il 
verra apparaître des messages d'erreur. Il faut 
donc mettre en place une redirection du canal 
d'erreur : 
▫ $ ls -lR / > liste 2>/dev/null & 
118
119 
Liste des processus en tache de 
fond 
• La commande jobs liste les processus en tache de 
fond : 
▫ sans option liste les processus en tache de fond en 
indiquant leur numéro de tache, leur état et le 
texte de la commande 
$ jobs 
[1]- Running /usr/lib/ICAClient/wfcmgr.bin & 
[2]+ Running soffice & 
Si vous spécifiez l'option -l, un numéro de processus 
s'affiche en plus.
Statut 
• Un processus est doté d’un statut : 
120 
▫ Running : processus qui se déroule à l'arrière plan. 
▫ Done : fin normale du processus, un message au 
niveau du Shell indique que le processus s'est terminé. 
▫ Stopped : processus temporairement suspendue. 
▫ Terminated : le processus a été obligé d'arrêter son 
exécution à la suite d'un signal.
Passage Arrière-plan <-> Premier plan 
• Un processus en cours d'exécution au premier 
plan doit être suspendu (et non arrêté), à l'aide 
de la combinaison de touches Ctrl + Z . 
• On peut l'envoyer à l'arrière plan avec la 
commande bg ; 
• Syntaxe 
▫ bg %numéro_de_tache 
121
Exemple 
$ rpm -Va > liste-RPM.txt 
Ctrl + Z 
[1]+ Stopped rpm -Va >liste-RPM.txt 
$ jobs -l 
[1]+ 1162 Arrêté rpm -Va >liste-RPM.txt 
$ bg %1 
[1]+ rpm -Va >liste-RPM.txt & 
$ jobs -l 
[1]+ 1162 Running rpm -Va >liste-RPM.txt & 
122
Passage Arrière-plan <-> Premier plan 
• La commande fg permet de passer un processus 
d'arrière plan en avant plan. 
• Syntaxe 
▫ fg %numéro_de_ tache 
• Exemple : 
$ jobs -l 
[1]+ 1162 Running rpm -Va >liste-RPM.txt & 
$ fg %1 
rpm -Va >liste-RPM.txt 
Ctrl + C pour arrêter ce processus. 
123
Suspendre puis reprendre un processus en 
arrière-plan 
• Pour un processus en arrière plan que l'on veut suspendre puis 
redémarrer, il faut utiliser la commande kill. 
• Exemple : 
On lance un processus en arrière plan : 
$ rpm -Va > liste-RPM.txt & 
[1] 1165 
On liste les jobs : 
$ jobs -l 
[1]+ 1165 Running rpm -Va >liste-RPM.txt & 
On interrompe ce processus : 
$ kill -STOP %1 
$ jobs -l 
[1]+ 1165 Signal d'arrêt rpm -Va >liste-RPM.txt 
On relance ce processus : 
$ kill -CONT %1 
$ jobs -l 
[1]+ 1165 Running rpm -Va >liste-RPM.txt & 
124
Affichage des processus 
Commande ps 
• La commande ps affiche les caractéristiques des 
processus à un instant donné. 
• Par défaut, ps affiche les processus de 
l'utilisateur. 
• Exemple : 
$ ps 
PID TTY TIME COMMAND 
341 p1 0 : 00 bash 
344 p2 0 : 00 bash 
1039 p3 0 : 00 bash 
1219 p3 0 : 00 ps 
125
Commande ps 
• PID : L’identificateur du processus, 
• TTY : indique à quel terminal est associé le 
processus. 
• TIME : indique depuis combien de temps le 
processus utilise les ressources du 
microprocesseur. 
• COMMAND : précise la commande dont l'état 
est décrit par PID, TTY, STAT et TIME. 
126
Commande ps 
• L’option x permet d’afficher les processus non 
attachés à un terminal. 
• Exemple 
$ ps -x 
PID TTY STAT TIME COMMAND 
240 ? S 0:01 /usr/X11R6/bin/fvwm2 
246 ? S 0:00 /usr/X11/bin/xautolock -corners ++++ -time 5 -locker /usr/X 
247 ? S 0:00 /usr/X11/bin/unclutter -idle 3 
253 ? S 0:00 /usr/local/bin/Periodic 
254 ? S 7:34 emacs --background grey79 -geometry 80x58+-4+-11 
257 p0 S 0:00 bash 
258 p2 S 0:00 bash 
259 p1 S 0:00 bash 
Les commandes qui ne sont pas associées à un terminal sont 
reconnaissable par le point d'interrogation qui rempli le champs 
TTY. 
127
Commande ps 
• STAT : indique l'état dans lequel se trouve le 
processus. 
▫ Sleep (S): processus endormi, 
▫ Run (R) : processus en cours d'exécution. 
128
Commande ps 
• Options 
▫ ax : affiche tous les processus de la machine de tous les 
utilisateurs, 
▫ aux : affiche les utilisateurs associés à chaque processus, 
 Vous verrez alors plusieurs colonnes s'ajouter : 
129 
 "USER" qui indique à quel utilisateur appartient le processus. 
 "%CPU" indique en pourcentage les ressources du microprocesseur 
utilisées par le processus. 
 "%MEM" montre en pourcentage les ressources en mémoire vive 
utilisées par le processus. 
 "RSS" donne réellement la mémoire utilisée en kilobytes par le 
processus. 
 "START" indique l'heure à laquelle le processus a été lancé.
Arrêter d’un processus 
• Pour arrêter un processus en tache de fond, il 
faut utiliser la commande kill. 
• Syntaxe : 
kill [-Numéro-du-signal] PID 
• La liste des signaux : 
$ kill -l 
130
Arrêter un processus 
• Les principaux signaux : 
131 
▫ 1 (SIGHUP) : Le signal de numéro 1, SIGHUP est 
envoyé par le processus parent à tous ses enfants 
lorsqu'il termine son activité. 
▫ 2 (SIGINT) : Signal d'interruption d'un process. 
Envoyé par la combinaison de touches Ctrl + C. 
▫ 9 (SIGKILL) : Tue le processus sans lui demander son 
avis. 
▫ 15 (SIGTERM) : C'est le signal par défaut de la 
commande kill. Il exécute le code de terminaison et 
vide la mémoire. C'est donc le signal de fin d'un 
processus le plus propre.
Unité 11 
RESEAUX 
132
Configuration 
• La configuration du réseau sous Linux peut être effectuée lors de 
l'installation ou a posteriori en modifiant les fichiers concernés. 
• Le fichier /etc/sysconfig/network contient les variables : 
▫ NETWORKING : initialisée à "yes" pour valider l'utilisation du réseau 
▫ FORWARD_IPV4 : initialisée à "no" pour empêcher le transfert 
automatique des paquets 
▫ HOSTNAME : contient le nom complet de la machine 
▫ GATEWAYDEV : interface d'accès à la passerelle 
▫ GATEWAY : adresse IP de la passerelle 
• Ce fichier est utilisé dans les scripts d'initialisation du réseau pour 
positionner les variables d'environnement. 
133
Configuration 
• Pour chaque interface, il faut construire, dans le répertoire network-scripts 
un fichier ifcfg-<nom> où nom est remplacé par le nom de l'interface 
utilisée : 
 ethN pour la Nième interface réseau 
▫ Ce fichier contient les variables suivantes : 
 DEVICE : nom du périphérique 
 ONBOOT : initialisée à "yes" pour valider l'interface au démarrage 
 BROADCAST : contient l'adresse IP de diffusion 
 NETWORK : contient l'adresse IP du réseau 
 NETMASK : contient le masque du réseau 
 IPADDR : contient l'adresse IP de l'interface 
• Ce fichier est utilisé en paramètre des scripts ifup et ifdown d'initialisation 
de l'interface. L'initialisation du réseau au démarrage du système est 
effectuée par le script /etc/rc.d/init.d/network. 
134
Les commandes 
• La commande hostname permet d'afficher le nom de la machine ainsi que le nom de domaine. 
• La commande ifconfig permet de visualiser ou de configurer les interfaces. Lorsqu'elle est 
exécutée sans argument, elle affiche la configuration actuelle avec, pour chaque interface, les 
informations suivantes : 
 adresse Ethernet 
 adresse IP 
 adresse de diffusion 
 masque de réseau 
 le nombre de paquets reçus et transmis 
• La commande netstat permet d'afficher : 
 les connexions réseau actives et en attente 
 les tables de routage 
 des statistiques sur l'interface 
 les tables de translation d'adresse 
• La commande arp permet de visualiser et d'agir sur la table de résolution d'adresses Ethernet. 
• La commande route permet de visualiser et de modifier la table de routage de la machine. 
• Les commandes ping et traceroute permettent de valider le chemin réseau jusqu'à un hôte donné. 
La commande traceroute donne la liste des routeurs par où a transité la demande. 
135
Les fichiers 
• Le fichier /etc/hosts contient une liste d'adresses IP associées aux noms des machines. C'est le 
moyen le plus simple d'effectuer la résolution de noms pour un petit réseau. 
• Le fichier /etc/host.conf spécifie le mode de résolution des noms de machines. Il contient les 
lignes suivantes : 
• Option Description 
spécifie l'ordre d'utilisation des différents moyens de résolution de noms : 
order - hosts : fichier /etc/hosts 
- bind : serveur de noms DNS 
- nis : Network Information Service 
nospoof validé par la valeur on, cela permet de détecter les tentatives 
d'usurpation d'adresse IP. 
Alert validé par la valeur on, cela permet d'enregistrer, via syslog, les 
tentatives d'usurpation d'adresse IP. 
Multi validé par la valeur on, cela permet d'affecter plusieurs adresses IP 
au même hôte dans le fichier /etc/hosts 
Trim permet d'enlever le nom de domaine en argument avant d'effectuer 
une recherche dans le fichier /etc/hosts 
136
Les fichiers 
• Le fichier /etc/resolv.conf permet de configurer la partie DNS de la résolution de 
noms. Ce fichier contient : 
Option Description 
Domain spécifie le nom de domaine de la machine 
Nameserver donne une adresse IP d'un serveur de nom ; il est possible 
de spécifier trois serveurs de noms 
Search liste les noms de domaines à chercher 
• Le fichier /etc/services donne la liste des services TCP et UDP supportés par la 
machine. Il associe le nom du service au numéro de port et au protocole. 
• Le fichier /etc/inetd.conf permet de configurer le démon inetd qui est le super 
serveur de Linux. Ce démon est à l'écoute des demandes de connexion et gère le 
lancement des autres serveurs (telnet, ftp, etc.). 
137
Applications réseau 
• DNS 
Une machine Linux peut être configurée en serveur de noms DNS. Elle pourra répondre aux 
requêtes des autres machines du réseau pour la résolution des noms en adresse IP. 
• SaMBa 
SaMBa est l'émulation d'un serveur LAN MANAGER® et permet de fournir des disques et des 
imprimantes partagés à des PC sous Windows®. La partie cliente existe et permet à une machine 
Linux de se connecter à un disque ou une imprimante partagés. 
• SENDMAIL 
Sendmail est un logiciel de transport de courrier électronique. Il gère l'envoi et la réception du 
courrier en fonction des caractéristiques des adresses données. Il s'occupe du routage et de la 
modification éventuelle des adresses pour permettre au message d'arriver à destination. 
Sendmail peut gérer des listes de diffusion de courrier. 
• NFS 
Le système NFS permet de partager des disques et des imprimantes à travers le réseau. Il existe 
deux parties dans NFS, la partie serveur qui consiste à exporter une partie de son système de 
fichiers vers les machines clientes et la partie cliente qui consiste à attacher les systèmes de 
fichiers comme s'ils faisaient partie du système local. 
• NIS 
NIS est une base de données qui permet de diffuser et de contrôler les fichiers d'administration 
importants. La gestion s'effectue sur un domaine possédant un nom unique sur le réseau. 
138
Introduction au service NFS 
Le service NFS (Network File 
System), 
permet le partage d'un système de 
fichiers sur un réseau Linux
Généralités 
140 
• 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)
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. 
141
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". 
142
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. 
143
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. 
144 
• On peut comparer le processus à la "connexion à 
un lecteur réseau" sur d'autres systèmes.
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. 
145
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 
146
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] 
147
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) 
148
• 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 
149
Options de partage 
• ro : droit de lecture uniquement 
• rw : lecture écriture 
• root_squash :spécifie que le root de la machine 
150 
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.
Sur la station cliente 
• On crée un répertoire de montage, 
• Puis on effectue le montage: 
• Syntaxe de montage : 
151 
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
Respect par nfs des droits 
152 
• 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.
NB! 
• L'option rw signifie en réalité que l'utilisateur 
153 
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 !
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 
154
Options de montage 
• ro : droit de lecture uniquement 
• rw : lecture écriture 
• root_squash :spécifie que le root de la machine 
155 
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.
Autres paramètres de montage 
156 
• rsize=8192 et wsize=8192 augmente le débit de 
nFS ? 
• intr interrompt une requête NFS en cas de 
serveur indisponible, permet d'éviter un blocage
Fonctionnement de NIS 
Le service NIS (Network 
Information System), 
permet de centraliser les 
connexions sur un réseau local
Généralités 
158 
• 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, ...)
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. 
159
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). 
160
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 
▫ …. 
161
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. 
162
Configuration du serveur NIS
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 . 
164
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 
165
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 
166
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 
167
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 
168
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. 
169
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 
170
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 
171
• 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 
172
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 
173
Configuration d'une machine 
cliente
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 
175
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 
176
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] 
177
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 
178
Algorithme de recherche 
• Les actions par défaut sont : 
▫ SUCCESS=return 
▫ UNAVAIL=continue 
▫ NOTFOUND=continue 
▫ TRYAGAIN=continue 
179
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 
……………….. 
180
tests 
#ypwhich 
181 
▫ 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
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 
182
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 
183
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. 
184
Secure shell : SSH
• 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. 
186
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. 
187
• 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. 
188
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. 
189
étapes d'établissement d'une 
connexion SSH 
1. Le serveur envoie sa clé publique au client. 
2. 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. 
3. 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. 
4. 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). 
5. 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. 
190
• 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. 
191
Installation et configuration de SSH 
• Paquetages à installer 
▫ Openssh 
▫ Openssh-server 
▫ Openssh-client 
• Openssh utilise un fichier de configuration 
général /etc/sshd_config 
192
/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 
193
/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 
194
/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 
195
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. 
196
Se logguer par SSH 
Authentification par clé 
• Au lieu de s'authentifier par mot de passe, les 
197 
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.
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. 
198
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. 
199
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. 
200
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é. 
201
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. 
202
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 
203
Faire des tunnels SSH 
204
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 
205
Outils graphiques d'administration 
Les outils Red Hat 
• Les outils graphiques d'administration système livrés avec la 
distribution Red Hat sont lancés à partir d'un panneau de contrôle 
affiché à l'exécution de la commande control-panel. 
• Les outils disponibles permettent : 
 la gestion de l'arrêt et du démarrage des sous-systèmes de Linux 
 la gestion de la date et de l'heure 
 la gestion des imprimantes locales ou distantes 
 la configuration des interfaces réseau et des tables de routage 
 la configuration des modems 
 la gestion des modules 
 la gestion des paquetages 
 le lancement de linuxconf 
206
Outils graphiques d'administration 
Linuxconf 
• Linuxconf est un outil d'administration système 
possédant plusieurs interfaces opérateur. Il peut être 
utilisé en mode ligne de commande, à travers un 
navigateur Web ou avec une interface graphique. 
• Il permet de gérer : 
 le réseau (DNS, routage, NFS, etc.) 
 Apache 
 SaMBa 
 les utilisateurs 
 le système de fichiers 
 les niveaux de démarrage 
Cet outil est livré en standard dans la distribution RedHat. 
207
Outils graphiques d'administration 
Webmin 
• Webmin est une interface Web pour l'administration d'un système 
Linux. 
• L'installation de cet outil est très facile et ne nécessite aucune 
compilation. Un simple script de mise en service permet de saisir les 
paramètres nécessaires. 
• Il se lance à partir d'un navigateur internet avec l'URL suivante : 
http://nom_de_la_machine:10000 (par exemple, http://localhost:10000 
sur une machine locale). 
▫ Le login et le mot de passe demandés la première fois sont ceux de 
l'administrateur (utilisateur "root"). 
▫ il est possible de configurer des utilisateurs Webmin en leur donnant les 
droits pour administrer quelques modules. 
208
En cas de problèmes sur le système 
• Il peut arriver que le système soit dans un état 
suffisamment instable pour qu'il ne soit plus 
possible de pouvoir booter correctement. Les 
causes principales peuvent être des problèmes 
sur les systèmes de fichiers (physiques ou 
logiques), ou des problèmes liés au noyau ou 
aux modules. Pour restaurer le système 
plusieurs moyens sont disponibles. 
209
En cas de problèmes sur le système 
Mode Single User 
• Le mode Single User est un mode particulier de 
fonctionnement du système correspondant au niveau 
d'exécution 1 (runlevel 1) dans lequel seuls les services 
minimum sont lancés. 
• Dans ce runlevel, un shell root est lancé 
automatiquement au démarrage, et il n'est possible de 
travailler que depuis la console car les services réseaux 
ne sont pas démarrés. 
• Pour démarrer en mode Single User, il suffit de taper à 
l'invite de démarrage de Lilo : 
LILO : linux single 
210
En cas de problèmes sur le système 
Disquette de rescue 
• La plupart des distributions propose de réaliser une disquette de 
démarrage lors de l'installation. Cette disquette peut s'avérer très utile en 
cas de problèmes sur le serveur; il est donc fortement conseillé de la réaliser 
lors de l'installation. Il est toutefois possible d'en créer une après 
l'installation, grâce à la commande mkbootdisk. Pour réaliser une disquette 
de démarrage sur le lecteur de disquette par défaut (/dev/fd0), la 
commande est la suivante : 
mkbootdisk version_noyau 
• Pour générer une disquette pour la version courante du noyau, la 
commande à taper sera la suivante : 
mkbootdisk `uname -r` 
• Une fois cette disquette réalisée, il suffit de l'insérer dans le lecteur de 
disquettes et de (re)démarrer la machine. Si le Bios est correctement 
configuré, la machine va booter sur la disquette de sauvegarde et offrir un 
shell root, qui permettra de dépanner la machine. 
211
Réparer son système 
• Une fois le système de restauration démarré, il est possible de 
réparer le système. Les problèmes les plus courants sont les 
suivants : 
• Systèmes de fichiers endommagés 
▫ Pour réparer un système de fichiers endommagés, il est nécessaire 
d'identifier en premier lieu la partition avec la commande : 
fdisk -l /dev/hda 
qui affichera la liste des partitions du premier disque IDE. Dans le cas 
d'un disque SCSI, il faudra utiliser le fichier spécial /dev/sda. 
• Une fois identifiée la partition endommagée, il faut la réparer avec 
la commande (si la partition en question est la première du premier 
disque IDE) : 
fsck /dev/hda1 
212
Réparer son système 
• Mot de passe root oublié 
213 
Dans ce cas, le mieux est de booter en mode Single 
User puisque l'on obtient un shell en tant que 
root. Il est possible ensuite d'utiliser la commande 
passwd qui va demander d'entrer le nouveau mot 
de passe.

Contenu connexe

Similaire à Administration unix

TPPPPPP gestion utilisateurs et groupes.pdf
TPPPPPP gestion utilisateurs et groupes.pdfTPPPPPP gestion utilisateurs et groupes.pdf
TPPPPPP gestion utilisateurs et groupes.pdfsbailaanmydriss
 
LPIC1 05 01 utilisateurs et groupes
LPIC1 05 01 utilisateurs et groupesLPIC1 05 01 utilisateurs et groupes
LPIC1 05 01 utilisateurs et groupesNoël
 
22410B_03--- gestion des objets.ppour active directory ptx
22410B_03--- gestion des objets.ppour  active directory ptx22410B_03--- gestion des objets.ppour  active directory ptx
22410B_03--- gestion des objets.ppour active directory ptxkhalidkabbad2
 
10 02 authentification PAM
10 02 authentification PAM10 02 authentification PAM
10 02 authentification PAMNoël
 
systemd red hat linux examen Ex200 rh124
systemd red hat linux examen Ex200 rh124systemd red hat linux examen Ex200 rh124
systemd red hat linux examen Ex200 rh124loffyhacker
 
Chap 3-Gestion Des Groupes.pdf
Chap 3-Gestion Des Groupes.pdfChap 3-Gestion Des Groupes.pdf
Chap 3-Gestion Des Groupes.pdfMazariSalim
 
La programmation systéme en langage C sous UNIX
La programmation systéme en langage C sous UNIXLa programmation systéme en langage C sous UNIX
La programmation systéme en langage C sous UNIXBen Hassen Hamdi
 
Création des utlisateurs et groupe sur kali.pdf
Création des utlisateurs et groupe sur kali.pdfCréation des utlisateurs et groupe sur kali.pdf
Création des utlisateurs et groupe sur kali.pdfImnaTech
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
lpi 101 notes de cours
lpi 101 notes de courslpi 101 notes de cours
lpi 101 notes de coursISIG
 
Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8OSInet
 
Rapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 trRapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 trCheikh Tidiane DIABANG
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheAurelien Navarre
 

Similaire à Administration unix (20)

TPPPPPP gestion utilisateurs et groupes.pdf
TPPPPPP gestion utilisateurs et groupes.pdfTPPPPPP gestion utilisateurs et groupes.pdf
TPPPPPP gestion utilisateurs et groupes.pdf
 
LPIC1 05 01 utilisateurs et groupes
LPIC1 05 01 utilisateurs et groupesLPIC1 05 01 utilisateurs et groupes
LPIC1 05 01 utilisateurs et groupes
 
22410B_03--- gestion des objets.ppour active directory ptx
22410B_03--- gestion des objets.ppour  active directory ptx22410B_03--- gestion des objets.ppour  active directory ptx
22410B_03--- gestion des objets.ppour active directory ptx
 
22742A_02-SAB.pdf
22742A_02-SAB.pdf22742A_02-SAB.pdf
22742A_02-SAB.pdf
 
Casser un mot de passe Windows
Casser un mot de passe WindowsCasser un mot de passe Windows
Casser un mot de passe Windows
 
10 02 authentification PAM
10 02 authentification PAM10 02 authentification PAM
10 02 authentification PAM
 
systemd red hat linux examen Ex200 rh124
systemd red hat linux examen Ex200 rh124systemd red hat linux examen Ex200 rh124
systemd red hat linux examen Ex200 rh124
 
Chap 3-Gestion Des Groupes.pdf
Chap 3-Gestion Des Groupes.pdfChap 3-Gestion Des Groupes.pdf
Chap 3-Gestion Des Groupes.pdf
 
22410B_03.pptx
22410B_03.pptx22410B_03.pptx
22410B_03.pptx
 
La programmation systéme en langage C sous UNIX
La programmation systéme en langage C sous UNIXLa programmation systéme en langage C sous UNIX
La programmation systéme en langage C sous UNIX
 
Création des utlisateurs et groupe sur kali.pdf
Création des utlisateurs et groupe sur kali.pdfCréation des utlisateurs et groupe sur kali.pdf
Création des utlisateurs et groupe sur kali.pdf
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Routage protocole
Routage protocoleRoutage protocole
Routage protocole
 
Cours 70 410 - J2
Cours 70 410 - J2Cours 70 410 - J2
Cours 70 410 - J2
 
lpi 101 notes de cours
lpi 101 notes de courslpi 101 notes de cours
lpi 101 notes de cours
 
Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8Les blocs Drupal de drop.org à Drupal 8
Les blocs Drupal de drop.org à Drupal 8
 
Rapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 trRapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 tr
 
22410 b 04
22410 b 0422410 b 04
22410 b 04
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
 

Administration unix

  • 2. Sommaire • Unité 1 : Administration des utilisateurs et des groupes…………….3 • Unité 2: 2
  • 3. Unité 1 Administration des utilisateurs et des groupes
  • 4. 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. 4
  • 5. 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 être utiliser comme login • comptes ordinaires 5
  • 6. Enregistrer un utilisateur: /etc/passwd • 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, ...). 6
  • 7. Enregistrer un utilisateur /etc/passwd • Exemple : root :x:0:0:root:/root:/bin/bash kmaster:x:500:500:kmaster:/home/kmaster:/bin/bash • Nota le deuxième champ (x) spécifie q'il y a un mot de passe et que celui-ci est crypté (dans /etc/shadow). • L'UID est compris entre 0 (root) et la constante UID_MAX (définie dans le fichier /etc/login.defs). • ATTENTION : Si au sein de ce fichier, plusieurs lignes possèdent le même UID pour plusieurs noms de connexion différents, UN SEUL utilisateur est en fait défini ! Exemple : on peut ainsi définir un utilisateur stop, dont l'UID est 0 et qui exécute shutdown comme commande de connexion. 7
  • 8. /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. 8
  • 9. /etc/shadow • Une ligne /etc/shadow est composée des champs suivants: ▫ Nom de login ▫ mot de passe crypté ▫ Nombre de jours écoulés depuis le 1er janvier 1970 jusqu'au dernier changement de mot de passe ▫ Nombre de jours durant lesquels le mot de passe est encore valide ▫ Nombre de jours après lesquels le mot de passe doit être changé ▫ Nombre de jours avant l'expiration du mot de passe impliquant l'avertissement de l'utilisateur ▫ Nombre de jours après l'expiration provoquant la desactivation du compte ▫ Numéro du jour depuis le 1er janvier 1970 à partir duquel le compte a été désactivé ▫ Champs réservé 9
  • 10. /etc/shadow • Exemple : • kmaster:$1$zBvl.scX$hkqgDvBu40EqpAEwZf ZZQ0:11493:0:99999:7::: ▫ le mot de passe en cours a été mis en place le 11493e jour après le 1/1/1970 (date de référence), ▫ il pourra à nouveau être changé 0 jour après cette date ▫ il devra obligatoirement être modifié avant le 99999e jour après la date de création (autant dire qu'il n'expire jamais...). 10
  • 11. /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 11
  • 12. 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) 12
  • 13. 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 # Useradd –c « compte de test » -m –d /home/toto –G test –k /etc/skel toto 13
  • 14. 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 14
  • 15. Gestion des comptes • La commande passwd ▫ Syntaxe : passwd [options ] nom_login ▫ Options -d l'utilisateur pourra se connecter sans mot de passe ! -l pour verrouiller le compte et empêcher sa connexion. -u pour déverrouiller. 15
  • 16. Gestion des comptes • Connaître l'uid et le gid de l'utilisateur courant ▫ Commandes ( id, whoami, who 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 16
  • 17. 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. 17
  • 18. 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) 18
  • 19. 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 19
  • 20. 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 20
  • 21. 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. 21
  • 22. Processus d ’initialisation utilisateur  /etc/profile  $HOME/.bash_profile  $HOME/.bashrc  /etc/bashrc  $HOME/.bash_logout 22 [user@host pwd]$ Bourne Again Shell
  • 23. 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) 23
  • 24. Unité 2 Les droits d’accès
  • 25. Gestion des droits d’accès • Tout utilisateur possède un numéro d'utilisateur et le numéro du groupe auquel il appartient. On distingue trois types d'utilisateurs potentiels : ▫ le propriétaire du fichier ("user", u); ▫ les utilisateurs appartenant au même groupe ("group", g); ▫ les autres utilisateurs ("other", o). • Trois types d'opérations sur les fichiers sont possibles ▫ la lecture ("read", r); ▫ l'écriture ("write", w); ▫ l'exécution ("execute", x). • Il y a donc 9 combinaisons possibles utilisateur-opération. C'est pourquoi les protections sont codées sur 9 bits. 25
  • 26. Gestion des droits d’accès • si vous essayez de copier un fichier dans un sous-répertoire (cp fic1 rep2/rep3/fic1), il faut que vous puissiez : 1.lire le fichier fic1 : droit en lecture sur le fichier 2.traverser les sous-répertoires rep2 et rep3 : droit x au moins pour vous, 3.écrire dans rep3 : droit W 26
  • 27. Modification des droits d’accès chmod modification_des_droits fichier1 [fichier2 …] • Vous pouvez utiliser des +, - ou = pour ajouter, supprimer ou fixer des droits à l'une ou l'autre des catégories u, g, o ou a tous (a) en précisant le type de droit d'accès, r, w ou x. ▫ chmod g+w fic1 ▫ chmod o-x rep ▫ chmod u+rx,g-w fic2 ▫ chmod u=rwx,g=rx,o=- fic ▫ chmod a+r fic • Si le changement de droits s'applique à un répertoire, vous pouvez changer tous les droits des fichiers et répertoires inclus dans ce répertoire via l'option -R. 27
  • 28. Modification des droits d’accès chmod nombre_en_base_8 fichier1 [fichier2 …] • chmod utilise le codage binaire, fondé sur l'association de valeurs numériques aux différentes permissions : ▫ lecture : 4, ▫ écriture : 2, ▫ exécution : 1, ▫ pas de permission : 0. • Chaque triplet se code par l'addition de 4, 2, 1, ou 0. ▫ Pour un rwx il faudra ajouter 4+2+1=7, ▫ pour r-x 4+0+1=5 etc. • La commande chmod permettant de positionner rwxr-x--- sur fic1 à la syntaxe suivante : chmod 750 fic1 28
  • 29. Valeur par défaut des droits d’accès umask nombre_en_base_8 • Par défaut unix affecte les droits max sur les fichiers normaux et les répertoires : ▫ Rép 777 (rwxrwxrwx) ▫ Fichier normal 666 (rw-rw-rw-) • Les droits effectifs sont obtenus par : droits_max - masque • Exemple ▫ Si on souhaite un accès en lecture/écriture pour le propriétaire et en lecture seule pour le groupe et le reste de monde, on utilise 022 comme masque 29
  • 30. Changement de propriétaire et de groupe • Sans les uid et les gid les droits d’accès n’auraient aucun sens. • La commande chown permet de changer le propriétaire chown utilisateur fichier1 [fichier2 …] • La commande chgrp permet de changer le groupe chgrp groupe fichier1 [[fichier2 …] 30
  • 31. Unité 3 Démarrage et arrêt du système
  • 32. Etape de démarrage de Linux 32 Power-On BIOS Master boot record Noyau Linux init Système prêt
  • 33. Basic Input Output System • Analyse la configuration matérielle de l’ordinateur: ▫ Test de la mémoire ▫ Test la présence du clavier ▫ Test la présence des disques durs, lecteurs de CDROM IDE • lit les options à partir de la mémoire non volatile ▫ 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 33
  • 34. 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 34
  • 35. 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 -c : utilisation du fichier de configuration autre que /etc/lilo.conf -t : test uniquement 35
  • 36. /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. 36
  • 37. 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 37
  • 38. 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 38
  • 39. Etapes d’exécution LILO • Au démarrage de la machine, ces 4 lettres s’affichent chacune après une étape bien précise : ▫ L : après le chargement de la première partie de LILO ▫ I : après le chargement de la deuxième partie de LILO, mais avant son exécution ▫ L : après le démarrage de la deuxième partie de LILO ▫ O : lorsque la deuxième partie de LILO a trouvé sur le disque tous les éléments nécessaire a son bon fonctionnement. 39
  • 40. 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 40
  • 41. 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. 41
  • 42. 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. 42
  • 43. 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 43
  • 44. 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) 44
  • 45. 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 45
  • 46. 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. 46
  • 47. Configuration des services par niveau ▫ ntsysv ▫ Chkconfig ▫ serviceconf ▫ . . . 47
  • 48. 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>) 48
  • 49. 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 49
  • 50. 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 50
  • 51. 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 51
  • 52. Unité 4 Les packages
  • 53. 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. 53
  • 54. 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 54
  • 55. 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 55
  • 56. Désinstallation de RPM • Pour désinstaller un RPM, on utilise la commande  rpm -e nom_package • options:  --nodeps : ignore les dépendances 56
  • 57. 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 57
  • 58. 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 58
  • 59. 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. 59
  • 60. Unité 5 Gestion des périphériques
  • 61. ▫ 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. 61
  • 62. 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 62
  • 63. 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 63
  • 64. 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é 64
  • 65. exemples ls –al /dev/hda brw-rw---- 1 root disk 3, 0 Apr 28 2000 /dev/hda ls –al /dev/hdb brw-rw---- 1 root disk 3, 64 Apr 28 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 65
  • 66. 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. 66
  • 67. 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 67
  • 68. 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 68
  • 69. 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 69
  • 70. Unité 6 Système de fichier
  • 71. 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) 71
  • 72. 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 72
  • 73. 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. 73
  • 74. Les SFs supportés • Le plus important : ext2fs • les plus récents : ext3fs, ReiserFS, IBM JFS • 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) 74
  • 75. 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 (simple, double, triple) ▫ bloc de données (data block) 75
  • 76. 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 76
  • 77. 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 77
  • 78. 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 78
  • 79. 79
  • 80. 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) 80
  • 81. 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 81
  • 82. 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 82
  • 83. 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 83
  • 84. Monter des SFs au démarrage • Pour chaque SF à monter au démarrage ajouter une line dans /etc/fstab /dev/hda2 / ext2 defaults 1 1 /dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0 /dev/fd0 /mnt/floppy msdos noauto,user 0 0 /dev/hda6 /mountpoint ext2 defaults 0 0 84
  • 85. Options de montage • On utilisé plusieurs options ▫ auto montage automatique (mount –a ) ▫ 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 85
  • 86. 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 86
  • 87. 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 87
  • 88. Unité 7 Gestion de quota
  • 89. 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 89
  • 90. 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. 90
  • 91. 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 91
  • 92. Activation de quota • Modifier /etc/fstab /dev/hda2 / ext2 defaults,userquota,grpquota 1 1 /dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0 /dev/fd0 /mnt/floppy msdos noauto,user 0 0 /dev/hda6 /mountpoint ext2 defaults 0 0 • 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 92
  • 93. 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 93
  • 94. 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 94
  • 96. 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 96
  • 97. 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 97
  • 98. Exemple d ’un fichier crontab utilisateur 98 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
  • 99. 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. 99
  • 100. 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 100 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
  • 101. at • La commande at exécute une commande à un moment donnée. # at 4am ps aux ^d # at -f bshfile 16:00 + 3 days 101
  • 102. 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 102
  • 103. batch • Exécute une commande quand le système et moins chargé $batch echo la charge est minime ^d 103
  • 105. Pour quoi faire • Syslogd est un daemon qui journalise les événements du système. ▫ Il faut avoir le daemon syslogd qui tourne sur 105 votre machine pour que cela marche. ▫ Lorsque vous lancez syslog sur votre machine vous démarrez en fait le daemon syslogd et klogd,
  • 106. Le principe • Par défaut les fichiers de log se trouvent dans 106 /var/log. • Le fichier de configuration de syslog est dans /etc/syslog.conf. • Par mesure de sécurité, il est d'usage de mettre le répertoire /var/log dans une partition propre (afin d'éviter qu'une saturation de ce répertoire n'entraîne un arrêt du système tout entier).
  • 107. Le principe • Les fichiers de log sont les suivants : 107 ▫ /var/log/messages est le fichier système qui récupère tout. ▫ /var/log/secure Contient les informations de connexions. Chaque login y est enregistré. ▫ /var/log/maillog Contient un enregistrement du trafic de courrier entrant et sortant. ▫ /var/log/spooler Contient les messages d'erreur des daemons uucp et innd (news).
  • 108. L'installation 108 • Par défaut il est installé avec la plupart des distributions, mais au cas ou, peut probable ou il faut l'installer : sysklogd-.....rpm utilisez la dernière version. • Normalement il est lancé au démarrage de la machine. Si cela n'est pas le cas vous pouvez le lancer avec la commande /etc/rc.d/init.d/syslog start.
  • 109. Configuration • La configuration de syslog se fait dans le fichier /etc/syslog.conf. ▫ Pensez après toute modification à faire relire ce fichier de conf (killall -HUP syslogd). • Dans le fichier syslog.conf vous devez donc indiquer sur une ligne : ▫ le service, ▫ le niveau de gravité, ▫ le fichier vers lequel diriger les logs. 109
  • 110. Catégories de service • Les différentes catégories de service sont : ▫ auth ou security Messages de sécurité et d'authentification. ▫ Authpriv La même chose que précédemment, mais logs plus privés ▫ Cron Messages de crontab et de at ▫ Daemon Messages systèmes générés par le daemon ▫ Ftp Messages du serveur ftp ▫ Kern Messages du noyau ▫ Lpr Messages du serveur d'impression ▫ Mail Messages du serveur de messagerie ▫ News Messages du serveur de news ▫ Syslog Messages de syslog lui-même ▫ User Messages générés par le programme en cours d'un utilisateur ▫ Uucp Messages UUCP 110
  • 111. Liste de sévérite • ▫ 7 debug Messages de débogage ▫ 6 info Messages d'information ▫ 5 notice Messages un peu plus importants que les messages info ▫ 4 warning ou warn Messages d'avertissement ▫ 3 err Messages d'erreur ▫ 2 crit Situation critique ▫ 1 alert Situation critique nécessitant une intervention immédiate ▫ 0 emerg ou panic Système inutilisable 111
  • 112. Unité 10 Les processus
  • 113. La gestion des processus • Pour chaque processus exécuté dans le système d'exploitation est stocké un certain nombre d'informations : ▫ Numéro de processus (PID); ▫ Numéro de processus parent (PPID); ▫ Numéro d'utilisateur (UID) ; ▫ Numéro de groupe (GID) ; ▫ Durée du traitement utilisée (temps CPU) et priorité du processus ; ▫ Référence au répertoire de travail courant ; ▫ Table de références des fichiers ouverts 113
  • 114. Numéro unique de processus • Sous UNIX/LINUX, plusieurs programmes peuvent être exécutés simultanément car UNIX/LINUX est multi-tâches. • Le système affecte un numéro spécifique à chaque processus individuel afin de les différencier. Il ne sait pas exécuter 2 processus ayant le même numéro. 114
  • 115. Processus parent • Chaque processus peut créer lui-même de nouveaux processus, qui se nomment alors processus enfants. • Pour que les enfants connaissent leur origine, le système leur communique le numéro d'identification de leur processus parent. • Cas particulier : init 115
  • 116. Traitement en tâche de fond • Si vous lancez un programme dans un terminal, le Shell ne vous rend la main que quand le processus ainsi lancé est terminé. • Si vous ajoutez le & à la fin de la ligne de commande, vous reviendrez directement au prompt du Shell. • On parle dans ce cas d'un processus en tâche de fond. • Le Shell et son processus enfant fonctionnent alors en parallèle. 116
  • 117. Traitement en tâche de fond 117 • Avant de placer le signe & derrière une ligne de commande, il faut être conscient de certaines contraintes : ▫ Le nouveau processus en tache de fond ne doit pas attendre de saisie au clavier ; ▫ Le processus en tache de fond ne doit pas retourner de résultats à l'écran ou sur un terminal ; ▫ Les commandes en tache de fond dépendent du Shell, car c'est lui qui les a lancées. Si vous quittez le Shell par la commande exit ou les touches Ctrl + D sur une ligne vierge, vous forcerez également la fin des processus en tache de fond.
  • 118. Messages renvoyés par un processus d'arrière-plan • Exemple : ▫ la commande ls -lR liste tous les répertoires avec récursivité. ▫ Si l'utilisateur qui lance cette commande n'a pas les droits d'accès à certains répertoires listés, il verra apparaître des messages d'erreur. Il faut donc mettre en place une redirection du canal d'erreur : ▫ $ ls -lR / > liste 2>/dev/null & 118
  • 119. 119 Liste des processus en tache de fond • La commande jobs liste les processus en tache de fond : ▫ sans option liste les processus en tache de fond en indiquant leur numéro de tache, leur état et le texte de la commande $ jobs [1]- Running /usr/lib/ICAClient/wfcmgr.bin & [2]+ Running soffice & Si vous spécifiez l'option -l, un numéro de processus s'affiche en plus.
  • 120. Statut • Un processus est doté d’un statut : 120 ▫ Running : processus qui se déroule à l'arrière plan. ▫ Done : fin normale du processus, un message au niveau du Shell indique que le processus s'est terminé. ▫ Stopped : processus temporairement suspendue. ▫ Terminated : le processus a été obligé d'arrêter son exécution à la suite d'un signal.
  • 121. Passage Arrière-plan <-> Premier plan • Un processus en cours d'exécution au premier plan doit être suspendu (et non arrêté), à l'aide de la combinaison de touches Ctrl + Z . • On peut l'envoyer à l'arrière plan avec la commande bg ; • Syntaxe ▫ bg %numéro_de_tache 121
  • 122. Exemple $ rpm -Va > liste-RPM.txt Ctrl + Z [1]+ Stopped rpm -Va >liste-RPM.txt $ jobs -l [1]+ 1162 Arrêté rpm -Va >liste-RPM.txt $ bg %1 [1]+ rpm -Va >liste-RPM.txt & $ jobs -l [1]+ 1162 Running rpm -Va >liste-RPM.txt & 122
  • 123. Passage Arrière-plan <-> Premier plan • La commande fg permet de passer un processus d'arrière plan en avant plan. • Syntaxe ▫ fg %numéro_de_ tache • Exemple : $ jobs -l [1]+ 1162 Running rpm -Va >liste-RPM.txt & $ fg %1 rpm -Va >liste-RPM.txt Ctrl + C pour arrêter ce processus. 123
  • 124. Suspendre puis reprendre un processus en arrière-plan • Pour un processus en arrière plan que l'on veut suspendre puis redémarrer, il faut utiliser la commande kill. • Exemple : On lance un processus en arrière plan : $ rpm -Va > liste-RPM.txt & [1] 1165 On liste les jobs : $ jobs -l [1]+ 1165 Running rpm -Va >liste-RPM.txt & On interrompe ce processus : $ kill -STOP %1 $ jobs -l [1]+ 1165 Signal d'arrêt rpm -Va >liste-RPM.txt On relance ce processus : $ kill -CONT %1 $ jobs -l [1]+ 1165 Running rpm -Va >liste-RPM.txt & 124
  • 125. Affichage des processus Commande ps • La commande ps affiche les caractéristiques des processus à un instant donné. • Par défaut, ps affiche les processus de l'utilisateur. • Exemple : $ ps PID TTY TIME COMMAND 341 p1 0 : 00 bash 344 p2 0 : 00 bash 1039 p3 0 : 00 bash 1219 p3 0 : 00 ps 125
  • 126. Commande ps • PID : L’identificateur du processus, • TTY : indique à quel terminal est associé le processus. • TIME : indique depuis combien de temps le processus utilise les ressources du microprocesseur. • COMMAND : précise la commande dont l'état est décrit par PID, TTY, STAT et TIME. 126
  • 127. Commande ps • L’option x permet d’afficher les processus non attachés à un terminal. • Exemple $ ps -x PID TTY STAT TIME COMMAND 240 ? S 0:01 /usr/X11R6/bin/fvwm2 246 ? S 0:00 /usr/X11/bin/xautolock -corners ++++ -time 5 -locker /usr/X 247 ? S 0:00 /usr/X11/bin/unclutter -idle 3 253 ? S 0:00 /usr/local/bin/Periodic 254 ? S 7:34 emacs --background grey79 -geometry 80x58+-4+-11 257 p0 S 0:00 bash 258 p2 S 0:00 bash 259 p1 S 0:00 bash Les commandes qui ne sont pas associées à un terminal sont reconnaissable par le point d'interrogation qui rempli le champs TTY. 127
  • 128. Commande ps • STAT : indique l'état dans lequel se trouve le processus. ▫ Sleep (S): processus endormi, ▫ Run (R) : processus en cours d'exécution. 128
  • 129. Commande ps • Options ▫ ax : affiche tous les processus de la machine de tous les utilisateurs, ▫ aux : affiche les utilisateurs associés à chaque processus,  Vous verrez alors plusieurs colonnes s'ajouter : 129  "USER" qui indique à quel utilisateur appartient le processus.  "%CPU" indique en pourcentage les ressources du microprocesseur utilisées par le processus.  "%MEM" montre en pourcentage les ressources en mémoire vive utilisées par le processus.  "RSS" donne réellement la mémoire utilisée en kilobytes par le processus.  "START" indique l'heure à laquelle le processus a été lancé.
  • 130. Arrêter d’un processus • Pour arrêter un processus en tache de fond, il faut utiliser la commande kill. • Syntaxe : kill [-Numéro-du-signal] PID • La liste des signaux : $ kill -l 130
  • 131. Arrêter un processus • Les principaux signaux : 131 ▫ 1 (SIGHUP) : Le signal de numéro 1, SIGHUP est envoyé par le processus parent à tous ses enfants lorsqu'il termine son activité. ▫ 2 (SIGINT) : Signal d'interruption d'un process. Envoyé par la combinaison de touches Ctrl + C. ▫ 9 (SIGKILL) : Tue le processus sans lui demander son avis. ▫ 15 (SIGTERM) : C'est le signal par défaut de la commande kill. Il exécute le code de terminaison et vide la mémoire. C'est donc le signal de fin d'un processus le plus propre.
  • 133. Configuration • La configuration du réseau sous Linux peut être effectuée lors de l'installation ou a posteriori en modifiant les fichiers concernés. • Le fichier /etc/sysconfig/network contient les variables : ▫ NETWORKING : initialisée à "yes" pour valider l'utilisation du réseau ▫ FORWARD_IPV4 : initialisée à "no" pour empêcher le transfert automatique des paquets ▫ HOSTNAME : contient le nom complet de la machine ▫ GATEWAYDEV : interface d'accès à la passerelle ▫ GATEWAY : adresse IP de la passerelle • Ce fichier est utilisé dans les scripts d'initialisation du réseau pour positionner les variables d'environnement. 133
  • 134. Configuration • Pour chaque interface, il faut construire, dans le répertoire network-scripts un fichier ifcfg-<nom> où nom est remplacé par le nom de l'interface utilisée :  ethN pour la Nième interface réseau ▫ Ce fichier contient les variables suivantes :  DEVICE : nom du périphérique  ONBOOT : initialisée à "yes" pour valider l'interface au démarrage  BROADCAST : contient l'adresse IP de diffusion  NETWORK : contient l'adresse IP du réseau  NETMASK : contient le masque du réseau  IPADDR : contient l'adresse IP de l'interface • Ce fichier est utilisé en paramètre des scripts ifup et ifdown d'initialisation de l'interface. L'initialisation du réseau au démarrage du système est effectuée par le script /etc/rc.d/init.d/network. 134
  • 135. Les commandes • La commande hostname permet d'afficher le nom de la machine ainsi que le nom de domaine. • La commande ifconfig permet de visualiser ou de configurer les interfaces. Lorsqu'elle est exécutée sans argument, elle affiche la configuration actuelle avec, pour chaque interface, les informations suivantes :  adresse Ethernet  adresse IP  adresse de diffusion  masque de réseau  le nombre de paquets reçus et transmis • La commande netstat permet d'afficher :  les connexions réseau actives et en attente  les tables de routage  des statistiques sur l'interface  les tables de translation d'adresse • La commande arp permet de visualiser et d'agir sur la table de résolution d'adresses Ethernet. • La commande route permet de visualiser et de modifier la table de routage de la machine. • Les commandes ping et traceroute permettent de valider le chemin réseau jusqu'à un hôte donné. La commande traceroute donne la liste des routeurs par où a transité la demande. 135
  • 136. Les fichiers • Le fichier /etc/hosts contient une liste d'adresses IP associées aux noms des machines. C'est le moyen le plus simple d'effectuer la résolution de noms pour un petit réseau. • Le fichier /etc/host.conf spécifie le mode de résolution des noms de machines. Il contient les lignes suivantes : • Option Description spécifie l'ordre d'utilisation des différents moyens de résolution de noms : order - hosts : fichier /etc/hosts - bind : serveur de noms DNS - nis : Network Information Service nospoof validé par la valeur on, cela permet de détecter les tentatives d'usurpation d'adresse IP. Alert validé par la valeur on, cela permet d'enregistrer, via syslog, les tentatives d'usurpation d'adresse IP. Multi validé par la valeur on, cela permet d'affecter plusieurs adresses IP au même hôte dans le fichier /etc/hosts Trim permet d'enlever le nom de domaine en argument avant d'effectuer une recherche dans le fichier /etc/hosts 136
  • 137. Les fichiers • Le fichier /etc/resolv.conf permet de configurer la partie DNS de la résolution de noms. Ce fichier contient : Option Description Domain spécifie le nom de domaine de la machine Nameserver donne une adresse IP d'un serveur de nom ; il est possible de spécifier trois serveurs de noms Search liste les noms de domaines à chercher • Le fichier /etc/services donne la liste des services TCP et UDP supportés par la machine. Il associe le nom du service au numéro de port et au protocole. • Le fichier /etc/inetd.conf permet de configurer le démon inetd qui est le super serveur de Linux. Ce démon est à l'écoute des demandes de connexion et gère le lancement des autres serveurs (telnet, ftp, etc.). 137
  • 138. Applications réseau • DNS Une machine Linux peut être configurée en serveur de noms DNS. Elle pourra répondre aux requêtes des autres machines du réseau pour la résolution des noms en adresse IP. • SaMBa SaMBa est l'émulation d'un serveur LAN MANAGER® et permet de fournir des disques et des imprimantes partagés à des PC sous Windows®. La partie cliente existe et permet à une machine Linux de se connecter à un disque ou une imprimante partagés. • SENDMAIL Sendmail est un logiciel de transport de courrier électronique. Il gère l'envoi et la réception du courrier en fonction des caractéristiques des adresses données. Il s'occupe du routage et de la modification éventuelle des adresses pour permettre au message d'arriver à destination. Sendmail peut gérer des listes de diffusion de courrier. • NFS Le système NFS permet de partager des disques et des imprimantes à travers le réseau. Il existe deux parties dans NFS, la partie serveur qui consiste à exporter une partie de son système de fichiers vers les machines clientes et la partie cliente qui consiste à attacher les systèmes de fichiers comme s'ils faisaient partie du système local. • NIS NIS est une base de données qui permet de diffuser et de contrôler les fichiers d'administration importants. La gestion s'effectue sur un domaine possédant un nom unique sur le réseau. 138
  • 139. Introduction au service NFS Le service NFS (Network File System), permet le partage d'un système de fichiers sur un réseau Linux
  • 140. Généralités 140 • 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)
  • 141. 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. 141
  • 142. 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". 142
  • 143. 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. 143
  • 144. 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. 144 • On peut comparer le processus à la "connexion à un lecteur réseau" sur d'autres systèmes.
  • 145. 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. 145
  • 146. 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 146
  • 147. 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] 147
  • 148. 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) 148
  • 149. • 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 149
  • 150. Options de partage • ro : droit de lecture uniquement • rw : lecture écriture • root_squash :spécifie que le root de la machine 150 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.
  • 151. Sur la station cliente • On crée un répertoire de montage, • Puis on effectue le montage: • Syntaxe de montage : 151 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
  • 152. Respect par nfs des droits 152 • 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.
  • 153. NB! • L'option rw signifie en réalité que l'utilisateur 153 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 !
  • 154. 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 154
  • 155. Options de montage • ro : droit de lecture uniquement • rw : lecture écriture • root_squash :spécifie que le root de la machine 155 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.
  • 156. Autres paramètres de montage 156 • rsize=8192 et wsize=8192 augmente le débit de nFS ? • intr interrompt une requête NFS en cas de serveur indisponible, permet d'éviter un blocage
  • 157. Fonctionnement de NIS Le service NIS (Network Information System), permet de centraliser les connexions sur un réseau local
  • 158. Généralités 158 • 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, ...)
  • 159. 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. 159
  • 160. 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). 160
  • 161. 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 ▫ …. 161
  • 162. 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. 162
  • 164. 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 . 164
  • 165. 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 165
  • 166. 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 166
  • 167. 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 167
  • 168. 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 168
  • 169. 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. 169
  • 170. 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 170
  • 171. 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 171
  • 172. • 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 172
  • 173. 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 173
  • 175. 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 175
  • 176. 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 176
  • 177. 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] 177
  • 178. 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 178
  • 179. Algorithme de recherche • Les actions par défaut sont : ▫ SUCCESS=return ▫ UNAVAIL=continue ▫ NOTFOUND=continue ▫ TRYAGAIN=continue 179
  • 180. 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 ……………….. 180
  • 181. tests #ypwhich 181 ▫ 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
  • 182. 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 182
  • 183. 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 183
  • 184. 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. 184
  • 186. • 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. 186
  • 187. 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. 187
  • 188. • 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. 188
  • 189. 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. 189
  • 190. étapes d'établissement d'une connexion SSH 1. Le serveur envoie sa clé publique au client. 2. 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. 3. 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. 4. 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). 5. 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. 190
  • 191. • 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. 191
  • 192. Installation et configuration de SSH • Paquetages à installer ▫ Openssh ▫ Openssh-server ▫ Openssh-client • Openssh utilise un fichier de configuration général /etc/sshd_config 192
  • 193. /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 193
  • 194. /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 194
  • 195. /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 195
  • 196. 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. 196
  • 197. Se logguer par SSH Authentification par clé • Au lieu de s'authentifier par mot de passe, les 197 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.
  • 198. 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. 198
  • 199. 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. 199
  • 200. 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. 200
  • 201. 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é. 201
  • 202. 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. 202
  • 203. 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 203
  • 204. Faire des tunnels SSH 204
  • 205. 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 205
  • 206. Outils graphiques d'administration Les outils Red Hat • Les outils graphiques d'administration système livrés avec la distribution Red Hat sont lancés à partir d'un panneau de contrôle affiché à l'exécution de la commande control-panel. • Les outils disponibles permettent :  la gestion de l'arrêt et du démarrage des sous-systèmes de Linux  la gestion de la date et de l'heure  la gestion des imprimantes locales ou distantes  la configuration des interfaces réseau et des tables de routage  la configuration des modems  la gestion des modules  la gestion des paquetages  le lancement de linuxconf 206
  • 207. Outils graphiques d'administration Linuxconf • Linuxconf est un outil d'administration système possédant plusieurs interfaces opérateur. Il peut être utilisé en mode ligne de commande, à travers un navigateur Web ou avec une interface graphique. • Il permet de gérer :  le réseau (DNS, routage, NFS, etc.)  Apache  SaMBa  les utilisateurs  le système de fichiers  les niveaux de démarrage Cet outil est livré en standard dans la distribution RedHat. 207
  • 208. Outils graphiques d'administration Webmin • Webmin est une interface Web pour l'administration d'un système Linux. • L'installation de cet outil est très facile et ne nécessite aucune compilation. Un simple script de mise en service permet de saisir les paramètres nécessaires. • Il se lance à partir d'un navigateur internet avec l'URL suivante : http://nom_de_la_machine:10000 (par exemple, http://localhost:10000 sur une machine locale). ▫ Le login et le mot de passe demandés la première fois sont ceux de l'administrateur (utilisateur "root"). ▫ il est possible de configurer des utilisateurs Webmin en leur donnant les droits pour administrer quelques modules. 208
  • 209. En cas de problèmes sur le système • Il peut arriver que le système soit dans un état suffisamment instable pour qu'il ne soit plus possible de pouvoir booter correctement. Les causes principales peuvent être des problèmes sur les systèmes de fichiers (physiques ou logiques), ou des problèmes liés au noyau ou aux modules. Pour restaurer le système plusieurs moyens sont disponibles. 209
  • 210. En cas de problèmes sur le système Mode Single User • Le mode Single User est un mode particulier de fonctionnement du système correspondant au niveau d'exécution 1 (runlevel 1) dans lequel seuls les services minimum sont lancés. • Dans ce runlevel, un shell root est lancé automatiquement au démarrage, et il n'est possible de travailler que depuis la console car les services réseaux ne sont pas démarrés. • Pour démarrer en mode Single User, il suffit de taper à l'invite de démarrage de Lilo : LILO : linux single 210
  • 211. En cas de problèmes sur le système Disquette de rescue • La plupart des distributions propose de réaliser une disquette de démarrage lors de l'installation. Cette disquette peut s'avérer très utile en cas de problèmes sur le serveur; il est donc fortement conseillé de la réaliser lors de l'installation. Il est toutefois possible d'en créer une après l'installation, grâce à la commande mkbootdisk. Pour réaliser une disquette de démarrage sur le lecteur de disquette par défaut (/dev/fd0), la commande est la suivante : mkbootdisk version_noyau • Pour générer une disquette pour la version courante du noyau, la commande à taper sera la suivante : mkbootdisk `uname -r` • Une fois cette disquette réalisée, il suffit de l'insérer dans le lecteur de disquettes et de (re)démarrer la machine. Si le Bios est correctement configuré, la machine va booter sur la disquette de sauvegarde et offrir un shell root, qui permettra de dépanner la machine. 211
  • 212. Réparer son système • Une fois le système de restauration démarré, il est possible de réparer le système. Les problèmes les plus courants sont les suivants : • Systèmes de fichiers endommagés ▫ Pour réparer un système de fichiers endommagés, il est nécessaire d'identifier en premier lieu la partition avec la commande : fdisk -l /dev/hda qui affichera la liste des partitions du premier disque IDE. Dans le cas d'un disque SCSI, il faudra utiliser le fichier spécial /dev/sda. • Une fois identifiée la partition endommagée, il faut la réparer avec la commande (si la partition en question est la première du premier disque IDE) : fsck /dev/hda1 212
  • 213. Réparer son système • Mot de passe root oublié 213 Dans ce cas, le mieux est de booter en mode Single User puisque l'on obtient un shell en tant que root. Il est possible ensuite d'utiliser la commande passwd qui va demander d'entrer le nouveau mot de passe.