Td corrigé UNIX - Free pdf

UNIX - Free

5.11 Corrigés des exercices. 5.11.1 Affichage de la date en ...... IP et tous les protocoles de routage associés (RIP, OSPF, etc.) IBM et l'architecture SNA.




part of the document



ction aux Systèmes Ouverts  RENVOIPAGE _Toc20190207 \h 12
1.1.11 UNIX et le domaine public  RENVOIPAGE _Toc20190208 \h 13
1.2 UNIX: System, Version, Unix like, Unix based...  RENVOIPAGE _Toc20190209 \h 13
1.3 Historique  RENVOIPAGE _Toc20190210 \h 14
1.3.1 Les pionniers (1969 - 1979)  RENVOIPAGE _Toc20190211 \h 14
1.3.2 La confusion (1979 - 1984)  RENVOIPAGE _Toc20190212 \h 14
1.3.3 L’ère industrielle (1984 - 1988)  RENVOIPAGE _Toc20190213 \h 15
1.3.4 La Normalisation (depuis 1988)  RENVOIPAGE _Toc20190214 \h 15
1.3.5 Les standards et les normes POSIX  RENVOIPAGE _Toc20190215 \h 16
1.3.6 Evolutions des outils  RENVOIPAGE _Toc20190216 \h 17
1.3.7 Unix et les Systèmes Ouverts  RENVOIPAGE _Toc20190217 \h 17
1.3.8 Le standard actuel  RENVOIPAGE _Toc20190218 \h 17
1.3.9 Historique d’UNIX  RENVOIPAGE _Toc20190219 \h 18
1.4 Architecture du système UNIX  RENVOIPAGE _Toc20190220 \h 19
1.4.1 Architecture  RENVOIPAGE _Toc20190221 \h 19
1.4.2 Architecture du noyau  RENVOIPAGE _Toc20190222 \h 19
1.4.3 La machine virtuelle UNIX  RENVOIPAGE _Toc20190223 \h 20
1.4.4 Performances  RENVOIPAGE _Toc20190224 \h 21
1.4.5 Règles de conception du Noyau UNIX  RENVOIPAGE _Toc20190225 \h 21
1.4.6 Génération du noyau  RENVOIPAGE _Toc20190226 \h 22
1.5 Evolutions d’UNIX  RENVOIPAGE _Toc20190227 \h 22
1.6 Domaines d’utilisation  RENVOIPAGE _Toc20190228 \h 24
1.6.1 Universalité d’UNIX  RENVOIPAGE _Toc20190229 \h 24
1.6.2 Domaines d’utilisation  RENVOIPAGE _Toc20190230 \h 25
1.7 Quelques systèmes UNIX en 2000  RENVOIPAGE _Toc20190231 \h 26
1.7.1 Systèmes commerciaux  RENVOIPAGE _Toc20190232 \h 26
1.7.2 Linux  RENVOIPAGE _Toc20190233 \h 27
1.8 Perspectives d’avenir et migration  RENVOIPAGE _Toc20190234 \h 27
1.8.1 Avenir d'Unix  RENVOIPAGE _Toc20190235 \h 27
1.8.2 Migration  RENVOIPAGE _Toc20190236 \h 28
1.9 Points communs des systèmes Unix  RENVOIPAGE _Toc20190237 \h 28
1.9.1 Banalisation de l'utilisation des postes de travail  RENVOIPAGE _Toc20190238 \h 28
1.10 Bibliographie  RENVOIPAGE _Toc20190239 \h 29
2. SESsION de travail sous UNIX  RENVOIPAGE _Toc20190240 \h 30
2.1 Session de travail  RENVOIPAGE _Toc20190241 \h 30
2.1.1 Ouverture d'une session  RENVOIPAGE _Toc20190242 \h 30
2.1.2 Mot de passe  RENVOIPAGE _Toc20190243 \h 30
2.1.3 Caractéristiques d'un utilisateur  RENVOIPAGE _Toc20190244 \h 31
2.1.4 Mécanisme dit d'aging  RENVOIPAGE _Toc20190245 \h 31
2.1.5 Caractéristiques d'un groupe  RENVOIPAGE _Toc20190246 \h 32
2.1.6 Syntaxe générale d'une commande  RENVOIPAGE _Toc20190247 \h 32
2.1.7 Opérations sur les utilisateurs et les groupes  RENVOIPAGE _Toc20190248 \h 32
2.1.8 Fin de session  RENVOIPAGE _Toc20190249 \h 33
2.2 Documentation  RENVOIPAGE _Toc20190250 \h 33
2.2.1 Manuel de références UNIX  RENVOIPAGE _Toc20190251 \h 33
2.2.2 Autres documentations  RENVOIPAGE _Toc20190252 \h 35
2.2.3 Utilisation de la documentation en ligne  RENVOIPAGE _Toc20190253 \h 35
2.2.4 Localisation des commandes  RENVOIPAGE _Toc20190254 \h 36
2.2.5 Interface graphique  RENVOIPAGE _Toc20190255 \h 37
2.3 L’environnement de l’utilisateur  RENVOIPAGE _Toc20190256 \h 37
2.3.1 Fichiers de configuration d’applicatifs usuels  RENVOIPAGE _Toc20190257 \h 37
2.3.2 Initialisation du terminal  RENVOIPAGE _Toc20190258 \h 38
2.3.3 Commandes diverses  RENVOIPAGE _Toc20190259 \h 39
2.4 Informations relatives aux utilisateurs  RENVOIPAGE _Toc20190260 \h 40
2.5 Impression  RENVOIPAGE _Toc20190261 \h 41
2.5.1 Impression (locale) sous SYSTEM V  RENVOIPAGE _Toc20190262 \h 41
2.5.2 Impression sous BSD  RENVOIPAGE _Toc20190263 \h 42
2.5.3 Mise en page d’un fichier pour impression  RENVOIPAGE _Toc20190264 \h 43
2.6 Généralités sur les éditeurs de textes  RENVOIPAGE _Toc20190265 \h 43
2.7 L’éditeur VI  RENVOIPAGE _Toc20190266 \h 44
2.7.1 Graphe d’état et modes de fonctionnement de vi  RENVOIPAGE _Toc20190267 \h 44
2.7.2 Appel de vi  RENVOIPAGE _Toc20190268 \h 45
2.7.3 Commandes de vi  RENVOIPAGE _Toc20190269 \h 45
2.8 l’éditeur ligne ED  RENVOIPAGE _Toc20190270 \h 49
2.8.1 Présentation  RENVOIPAGE _Toc20190271 \h 49
2.8.2 Principales commandes de ed  RENVOIPAGE _Toc20190272 \h 49
2.9 La commande script  RENVOIPAGE _Toc20190273 \h 50
2.10 Exercices: connexion et commandes de base  RENVOIPAGE _Toc20190274 \h 50
2.10.1 Ouverture de session  RENVOIPAGE _Toc20190275 \h 50
2.10.2 Commandes de base  RENVOIPAGE _Toc20190276 \h 50
2.10.3 L’éditeur vi  RENVOIPAGE _Toc20190277 \h 51
3. Systeme de gESTION DE FICHIERS  RENVOIPAGE _Toc20190278 \h 52
3.1 Conception orientée objet du système de gestion des entrées/sorties  RENVOIPAGE _Toc20190279 \h 52
3.2 Types de fichiers  RENVOIPAGE _Toc20190280 \h 52
3.2.1 Fichier ordinaire  RENVOIPAGE _Toc20190281 \h 52
3.2.2 Répertoire  RENVOIPAGE _Toc20190282 \h 52
3.2.3 Fichiers standards  RENVOIPAGE _Toc20190283 \h 53
3.2.4 Fichiers spéciaux  RENVOIPAGE _Toc20190284 \h 53
3.2.5 Lien matériel et lien symbolique  RENVOIPAGE _Toc20190285 \h 55
3.2.6 Commandes d’informations générales  RENVOIPAGE _Toc20190286 \h 56
3.3 Nommage des fichiers  RENVOIPAGE _Toc20190287 \h 57
3.3.1 Règles  RENVOIPAGE _Toc20190288 \h 57
3.3.2 Caractères spéciaux élémentaires du shell  RENVOIPAGE _Toc20190289 \h 57
3.3.3 Chemins d’accès  RENVOIPAGE _Toc20190290 \h 58
3.4 Opérations sur les fichiers standards  RENVOIPAGE _Toc20190291 \h 59
3.4.1 Redirection  RENVOIPAGE _Toc20190292 \h 59
3.4.2 Tube  RENVOIPAGE _Toc20190293 \h 61
3.5 Opérations sur les répertoires  RENVOIPAGE _Toc20190294 \h 62
3.6 Opérations sur les fichiers ordinaires  RENVOIPAGE _Toc20190295 \h 63
3.6.1 Copie  RENVOIPAGE _Toc20190296 \h 63
3.6.2 Renommage ou déplacement  RENVOIPAGE _Toc20190297 \h 64
3.6.3 Suppression  RENVOIPAGE _Toc20190298 \h 64
3.6.4 Comparaison  RENVOIPAGE _Toc20190299 \h 64
3.6.5 Concaténation  RENVOIPAGE _Toc20190300 \h 65
3.6.6 Contenu  RENVOIPAGE _Toc20190301 \h 65
3.6.7 L’heure de dernière modification  RENVOIPAGE _Toc20190302 \h 66
3.6.8 La commande fuser  RENVOIPAGE _Toc20190303 \h 66
3.6.9 Recherche récursive avec condition et traitement  RENVOIPAGE _Toc20190304 \h 67
3.6.10 Nettoyage et commande find  RENVOIPAGE _Toc20190305 \h 69
3.6.11 Recherche d’une chaîne de caractères dans un fichier  RENVOIPAGE _Toc20190306 \h 69
3.6.12 Tri d’un fichier texte  RENVOIPAGE _Toc20190307 \h 70
3.6.13 Autres commandes  RENVOIPAGE _Toc20190308 \h 70
3.7 Attributs de propriété et de sécurité  RENVOIPAGE _Toc20190309 \h 71
3.8 Gestion des attributs de propriété  RENVOIPAGE _Toc20190310 \h 72
3.9 Gestion des attributs de sécurité  RENVOIPAGE _Toc20190311 \h 73
3.9.1 La commande chmod  RENVOIPAGE _Toc20190312 \h 73
3.9.2 Masque de définition des droits d'accès par défaut  RENVOIPAGE _Toc20190313 \h 73
3.9.3 Les bits s et S  RENVOIPAGE _Toc20190314 \h 74
3.9.4 Gestion du bit suid  RENVOIPAGE _Toc20190315 \h 74
3.9.5 Le bit t  RENVOIPAGE _Toc20190316 \h 75
3.10 L’arborescence UNIX  RENVOIPAGE _Toc20190317 \h 75
3.10.1 Répertoires sous la racine  RENVOIPAGE _Toc20190318 \h 77
3.10.2 Commandes publiques  RENVOIPAGE _Toc20190319 \h 77
3.10.3 Fichiers temporaires  RENVOIPAGE _Toc20190320 \h 78
3.10.4 Bibliothèques  RENVOIPAGE _Toc20190321 \h 78
3.11 Liste de contrôle d'accès  RENVOIPAGE _Toc20190322 \h 79
3.12 Exercices  RENVOIPAGE _Toc20190323 \h 81
3.12.1 Commandes de base du SGF  RENVOIPAGE _Toc20190324 \h 81
3.12.2 Commandes d’affichage  RENVOIPAGE _Toc20190325 \h 81
3.12.3 Tube  RENVOIPAGE _Toc20190326 \h 81
3.12.4 Liens et redirection  RENVOIPAGE _Toc20190327 \h 81
3.12.5 Commandes find, grep et sort  RENVOIPAGE _Toc20190328 \h 82
3.12.6 Attributs de sécurité  RENVOIPAGE _Toc20190329 \h 83
4. Gestion des PROCESSUS  RENVOIPAGE _Toc20190330 \h 84
4.1 Définitions  RENVOIPAGE _Toc20190331 \h 84
4.1.1 Etats et transitions  RENVOIPAGE _Toc20190332 \h 85
4.1.2 Statut et transitions  RENVOIPAGE _Toc20190333 \h 86
4.2 Descripteurs associés a un processus  RENVOIPAGE _Toc20190334 \h 88
4.2.1 Identificateur  RENVOIPAGE _Toc20190335 \h 88
4.2.2 Table Proc[]  RENVOIPAGE _Toc20190336 \h 88
4.2.3 Structure U  RENVOIPAGE _Toc20190337 \h 89
4.2.4 La commande ps  RENVOIPAGE _Toc20190338 \h 89
4.3 Principes de fonctionnement des appels systèmes  RENVOIPAGE _Toc20190339 \h 90
4.4 Appels système de création et terminaison de processus  RENVOIPAGE _Toc20190340 \h 92
4.4.1 L'appel système fork : présentation externe  RENVOIPAGE _Toc20190341 \h 92
4.4.2 L'appel système canonique exec*  RENVOIPAGE _Toc20190342 \h 92
4.4.3 Données limites d’exécution d’un processus  RENVOIPAGE _Toc20190343 \h 93
4.4.4 L'appel système exit  RENVOIPAGE _Toc20190344 \h 93
4.5 Synchronisation de processus filiés  RENVOIPAGE _Toc20190345 \h 94
4.5.1 Généralités  RENVOIPAGE _Toc20190346 \h 94
4.5.2 L'appel système wait  RENVOIPAGE _Toc20190347 \h 94
4.5.3 La commande du shell wait  RENVOIPAGE _Toc20190348 \h 94
4.5.4 La commande du shell sleep  RENVOIPAGE _Toc20190349 \h 94
4.6 Signaux  RENVOIPAGE _Toc20190350 \h 95
4.6.1 Emission de signaux  RENVOIPAGE _Toc20190351 \h 96
4.6.2 Réception de signaux  RENVOIPAGE _Toc20190352 \h 97
4.7 Contrôle de l'exécution des processus  RENVOIPAGE _Toc20190353 \h 97
4.7.1 Modes d'exécution d'un processus  RENVOIPAGE _Toc20190354 \h 97
4.7.2 Commande jobs  RENVOIPAGE _Toc20190355 \h 97
4.7.3 Commandes de changement d'état  RENVOIPAGE _Toc20190356 \h 98
4.7.4 Graphe de changement d'état  RENVOIPAGE _Toc20190357 \h 99
4.7.5 Commande nohup  RENVOIPAGE _Toc20190358 \h 99
4.7.6 Commande killall  RENVOIPAGE _Toc20190359 \h 99
4.7.7 Commande lastcomm  RENVOIPAGE _Toc20190360 \h 100
4.7.8 Commandes nice et renice  RENVOIPAGE _Toc20190361 \h 100
4.8 Exercices  RENVOIPAGE _Toc20190362 \h 100
4.8.1 Commande ps  RENVOIPAGE _Toc20190363 \h 100
4.8.2 Gestion des modes d'exécution (commandes bg &fg)  RENVOIPAGE _Toc20190364 \h 100
4.8.3 Gestion des priorités  RENVOIPAGE _Toc20190365 \h 101
5. Les interprètes de commandes korn shell et bash  RENVOIPAGE _Toc20190366 \h 102
5.1 Généralités sur les interprètes de commandes  RENVOIPAGE _Toc20190367 \h 102
5.1.1 Fonctionnalités  RENVOIPAGE _Toc20190368 \h 102
5.1.2 Compatibilité historique  RENVOIPAGE _Toc20190369 \h 102
5.1.3 Le shell, langage de programmation  RENVOIPAGE _Toc20190370 \h 103
5.2 Gestion du profil de l’utilisateur  RENVOIPAGE _Toc20190371 \h 103
5.2.1 Profil de l'utilisateur  RENVOIPAGE _Toc20190372 \h 103
5.2.2 Alias  RENVOIPAGE _Toc20190373 \h 104
5.2.3 Rappels sur les caractères spéciaux élémentaires du shell  RENVOIPAGE _Toc20190374 \h 105
5.2.4 Compléments sur les caractères spéciaux  RENVOIPAGE _Toc20190375 \h 106
5.3 Variable locale, exportée, typée  RENVOIPAGE _Toc20190376 \h 109
5.3.1 Variable locale à un processus donné  RENVOIPAGE _Toc20190377 \h 109
5.3.2 Variable exportée  RENVOIPAGE _Toc20190378 \h 109
5.3.3 Déclaration de type (commande typeset)  RENVOIPAGE _Toc20190379 \h 110
5.4 Opérations sur les chaînes de caractères  RENVOIPAGE _Toc20190380 \h 111
5.5 Variables d'environnement prédefinies  RENVOIPAGE _Toc20190381 \h 112
5.5.1 Variables d'environnement initialisées par l'interprète de commandes Korn shell  RENVOIPAGE _Toc20190382 \h 112
5.5.2 Variables d'environnement utilisées par l'interprète de commandes Korn shell  RENVOIPAGE _Toc20190383 \h 112
5.6 SHELLS-SCRIPTS  RENVOIPAGE _Toc20190384 \h 113
5.6.1 Définition d'un shell script  RENVOIPAGE _Toc20190385 \h 113
5.6.2 Création d'un shell script  RENVOIPAGE _Toc20190386 \h 113
5.6.3 Exécution d’un shell-script  RENVOIPAGE _Toc20190387 \h 113
5.6.4 Mise au point d'un shell script  RENVOIPAGE _Toc20190388 \h 113
5.6.5 Macros utilisées dans les shell scripts  RENVOIPAGE _Toc20190389 \h 114
5.6.6 Contexte d'exécution des shellscripts  RENVOIPAGE _Toc20190390 \h 115
5.7 Programmation en Korn shell  RENVOIPAGE _Toc20190391 \h 116
5.7.1 Opérateur test  RENVOIPAGE _Toc20190392 \h 116
5.7.2 Structure de contrôle if  RENVOIPAGE _Toc20190393 \h 117
5.7.3 Branchement multiple : la construction case  RENVOIPAGE _Toc20190394 \h 119
5.7.4 Itérations bornées : la boucle for  RENVOIPAGE _Toc20190395 \h 119
5.7.5 Itérations non bornées : la boucle while  RENVOIPAGE _Toc20190396 \h 119
5.7.6 Itérations non bornées : la boucle until  RENVOIPAGE _Toc20190397 \h 120
5.7.7 Branchements inconditionnels  RENVOIPAGE _Toc20190398 \h 121
5.7.8 Saisie interactive des données et menu  RENVOIPAGE _Toc20190399 \h 121
5.7.9 Affectation des variables de position  RENVOIPAGE _Toc20190400 \h 122
5.7.10 Fonctions en shell  RENVOIPAGE _Toc20190401 \h 122
5.7.11 Exemple d'un fichier .profile  RENVOIPAGE _Toc20190402 \h 123
5.7.12 Exemple d'un fichier .kshrc  RENVOIPAGE _Toc20190403 \h 125
5.8 Présentation sommaire du C-shell  RENVOIPAGE _Toc20190404 \h 125
5.9 Exercices sur les fichiers d'environnement  RENVOIPAGE _Toc20190405 \h 127
5.9.1 Définition et suppression d'alias  RENVOIPAGE _Toc20190406 \h 127
5.9.2 Mécanisme d'historique  RENVOIPAGE _Toc20190407 \h 127
5.9.3 Variables d'environnement  RENVOIPAGE _Toc20190408 \h 127
5.9.4 Fichiers de paramétrage  RENVOIPAGE _Toc20190409 \h 127
5.9.5 Divers  RENVOIPAGE _Toc20190410 \h 127
5.10 Ecriture d'utilitaires en Shell  RENVOIPAGE _Toc20190411 \h 128
5.10.1 Macro  RENVOIPAGE _Toc20190412 \h 128
5.10.2 Changement de la langue de l'affichage de la date  RENVOIPAGE _Toc20190413 \h 128
5.10.3 Renommage interactif des fichiers  RENVOIPAGE _Toc20190414 \h 128
5.10.4 Sauvegarde d'un répertoire avec reconstruction de la même arborescence  RENVOIPAGE _Toc20190415 \h 129
5.10.5 Affichage de fichiers en ajoutant une bannière au début et à la fin  RENVOIPAGE _Toc20190416 \h 129
5.10.6 Recherche du nom d'un périphérique  RENVOIPAGE _Toc20190417 \h 129
5.10.7 Recherche du jour de la semaine  RENVOIPAGE _Toc20190418 \h 129
5.11 Corrigés des exercices  RENVOIPAGE _Toc20190419 \h 130
5.11.1 Affichage de la date en francais  RENVOIPAGE _Toc20190420 \h 130
5.11.2 Renommage interactif des fichiers d'un répertoire  RENVOIPAGE _Toc20190421 \h 130
5.11.3 Sauvegarde d'un répertoire avec reconstruction de la même arborescence  RENVOIPAGE _Toc20190422 \h 131
5.11.4 Affichage de fichiers en ajoutant une bannière  RENVOIPAGE _Toc20190423 \h 132
5.11.5 Recherche d'un périphérique à partir du majeur et du mineur  RENVOIPAGE _Toc20190424 \h 132
5.11.6 Recherche du jour de la semaine pour une date donnée  RENVOIPAGE _Toc20190425 \h 134
5.12 Principales commandes d'UNIX  RENVOIPAGE _Toc20190426 \h 135
6. Notions élémentaires sur l'administration  RENVOIPAGE _Toc20190427 \h 139
6.1 Rôles de l'administrateur  RENVOIPAGE _Toc20190428 \h 139
6.2 Classes d'administrateurs et d'utilisateurs  RENVOIPAGE _Toc20190429 \h 139
6.3 Gestion des Mots de passe  RENVOIPAGE _Toc20190430 \h 140
6.3.1 Stratégie  RENVOIPAGE _Toc20190431 \h 140
6.3.2 Le fichier /etc/shadow  RENVOIPAGE _Toc20190432 \h 140
6.3.3 Utilisateur synonyme de root  RENVOIPAGE _Toc20190433 \h 141
6.3.4 Terminal sécurisé et login root  RENVOIPAGE _Toc20190434 \h 142
6.4 Démarrage et arrêt du système  RENVOIPAGE _Toc20190435 \h 143
6.4.1 Chargement initial  RENVOIPAGE _Toc20190436 \h 143
6.4.2 Le fichier inittab  RENVOIPAGE _Toc20190437 \h 144
6.4.3 Shells scripts de passage en mode multi-utilisateurs  RENVOIPAGE _Toc20190438 \h 145
6.4.4 Actions exécutées pour le passage en mode multiutilisateurs  RENVOIPAGE _Toc20190439 \h 146
6.4.5 Arrêt du système  RENVOIPAGE _Toc20190440 \h 147
6.5 Protection, droits d'accès et cryptage  RENVOIPAGE _Toc20190441 \h 148
6.5.1 Classification des fichiers selon leur utilisation  RENVOIPAGE _Toc20190442 \h 148
6.5.2 Accès aux répertoires  RENVOIPAGE _Toc20190443 \h 148
6.5.3 Cryptage  RENVOIPAGE _Toc20190444 \h 149
6.6 Ordonnancement de travaux  RENVOIPAGE _Toc20190445 \h 149
6.6.1 Description des services cron  RENVOIPAGE _Toc20190446 \h 149
6.6.2 La commande at  RENVOIPAGE _Toc20190447 \h 150
6.6.3 La commande batch  RENVOIPAGE _Toc20190448 \h 151
6.6.4 Le répertoire /var/lib/cron  RENVOIPAGE _Toc20190449 \h 151
6.6.5 Le répertoire usr/spool/cron  RENVOIPAGE _Toc20190450 \h 152
6.7 Génération système  RENVOIPAGE _Toc20190451 \h 153
6.7.1 Adjonction d'une commande  RENVOIPAGE _Toc20190452 \h 153
6.7.2 Optimisation du noyau  RENVOIPAGE _Toc20190453 \h 153
6.7.3 Exemple de première installation  RENVOIPAGE _Toc20190454 \h 154
6.8 Exercices d'administration  RENVOIPAGE _Toc20190455 \h 155
6.8.1 Gestion des utilisateurs  RENVOIPAGE _Toc20190456 \h 155
6.8.2 Cheval de Troie  RENVOIPAGE _Toc20190457 \h 155
6.8.3 Démarrage et arrêt du système  RENVOIPAGE _Toc20190458 \h 155
6.9 Bibliographie sur l'administration  RENVOIPAGE _Toc20190459 \h 156
7. Administration des systèmes de fichiers  RENVOIPAGE _Toc20190460 \h 157
7.1 Création des systèmes de fichiers  RENVOIPAGE _Toc20190461 \h 157
7.1.1 Partitionnement du disque  RENVOIPAGE _Toc20190462 \h 157
7.1.2 Gestion des systèmes de fichiers  RENVOIPAGE _Toc20190463 \h 157
7.1.3 Autres commandes  RENVOIPAGE _Toc20190464 \h 159
7.2 La commande /etc/mount  RENVOIPAGE _Toc20190465 \h 159
7.3 Options de sécurité de la commande mount  RENVOIPAGE _Toc20190466 \h 160
7.4 Table des systèmes de fichiers montés  RENVOIPAGE _Toc20190467 \h 161
7.5 Droit d'exécution de la commande mount  RENVOIPAGE _Toc20190468 \h 161
7.6 Points de montage  RENVOIPAGE _Toc20190469 \h 161
7.7 Stratégie de montage des systèmes de fichiers  RENVOIPAGE _Toc20190470 \h 161
7.8 Démontage  RENVOIPAGE _Toc20190471 \h 161
7.9 Cohérence des systèmes de fichiers  RENVOIPAGE _Toc20190472 \h 162
7.9.1 Généralités sur la commande fsck  RENVOIPAGE _Toc20190473 \h 162
7.9.2 Mode opératoire  RENVOIPAGE _Toc20190474 \h 163
7.9.3 Utilisation de la commande fsck  RENVOIPAGE _Toc20190475 \h 164
1.1 Quota d'occupation des systèmes de fichiers  RENVOIPAGE _Toc20190476 \h 165
7.10 Sécurité et Gestion des zones de swap  RENVOIPAGE _Toc20190477 \h 166
7.11 Exercices sur la gestion du SGF  RENVOIPAGE _Toc20190478 \h 167
7.11.1 Montage  RENVOIPAGE _Toc20190479 \h 167
7.11.2 Commande fsck et mkfs  RENVOIPAGE _Toc20190480 \h 167
7.11.3 Gestion des périphériques et pseudopériphériques  RENVOIPAGE _Toc20190481 \h 167
7.11.4 Divers  RENVOIPAGE _Toc20190482 \h 167
8. Archivage et sauvegardes  RENVOIPAGE _Toc20190483 \h 168
8.1 Systèmes de fichiers  RENVOIPAGE _Toc20190484 \h 168
8.2 Arborescence et commande tar  RENVOIPAGE _Toc20190485 \h 168
8.3 La commande cpio  RENVOIPAGE _Toc20190486 \h 170
8.4 Copie physique  RENVOIPAGE _Toc20190487 \h 171
8.5 Autres utilitaires  RENVOIPAGE _Toc20190488 \h 172
8.6 Compression  RENVOIPAGE _Toc20190489 \h 173
8.7 Exercices sur les sauvegardes  RENVOIPAGE _Toc20190490 \h 174
9. SERVICES RESEAUX traditionnels dans le monde TCP/IP  RENVOIPAGE _Toc20190491 \h 176
9.1 Historique  RENVOIPAGE _Toc20190492 \h 176
9.2 Présentation des services traditionnels  RENVOIPAGE _Toc20190493 \h 176
9.2.1 Services de la DARPA  RENVOIPAGE _Toc20190494 \h 176
9.2.2 Services BSD (Berkeley)  RENVOIPAGE _Toc20190495 \h 179
1.1.1 Services traditionnels basés sur des protocoles de communication asynchrones  RENVOIPAGE _Toc20190496 \h 180
1.1.2 Autres services Berkeley  RENVOIPAGE _Toc20190497 \h 180
1.1.3 Service de noms  RENVOIPAGE _Toc20190498 \h 181
1.1.4 Autres services réseau  RENVOIPAGE _Toc20190499 \h 181
1.1.5 Contraintes de sécurité  RENVOIPAGE _Toc20190500 \h 182
9.3 Le réseau Internet  RENVOIPAGE _Toc20190501 \h 183
9.3.1 Historique et architecture  RENVOIPAGE _Toc20190502 \h 183
9.3.2 Philosophie de l'Internet  RENVOIPAGE _Toc20190503 \h 183
9.3.3 Les services disponibles  RENVOIPAGE _Toc20190504 \h 183
9.3.4 World Wide Web  RENVOIPAGE _Toc20190505 \h 184
9.3.5 Le service des news  RENVOIPAGE _Toc20190506 \h 185
9.4 Commandes usuelles  RENVOIPAGE _Toc20190507 \h 186
9.4.1 Notions sur la Base de données réseau  RENVOIPAGE _Toc20190508 \h 186
9.4.2 Services DARPA (ftp-telnet)  RENVOIPAGE _Toc20190509 \h 187
9.4.3 Services BSD (r-commandes)  RENVOIPAGE _Toc20190510 \h 189
9.4.4 Impression distante  RENVOIPAGE _Toc20190511 \h 190
9.5 Communication entre utilisateurs  RENVOIPAGE _Toc20190512 \h 191
9.5.1 Validation de la réception de messages  RENVOIPAGE _Toc20190513 \h 191
9.5.2 Dialogue interractif  RENVOIPAGE _Toc20190514 \h 191
9.6 Messagerie  RENVOIPAGE _Toc20190515 \h 192
9.6.1 Graphe de fonctionnement de la messagerie  RENVOIPAGE _Toc20190516 \h 193
9.6.2 Convention d'adressage et types de stations  RENVOIPAGE _Toc20190517 \h 193
9.6.3 Agents utilisateurs  RENVOIPAGE _Toc20190518 \h 195
9.6.4 Fichiers de configuration de la messagerie électronique  RENVOIPAGE _Toc20190519 \h 197
9.7 Services répartis et distribués  RENVOIPAGE _Toc20190520 \h 198
9.7.1 NFS  RENVOIPAGE _Toc20190521 \h 198
9.7.2 NIS  RENVOIPAGE _Toc20190522 \h 200
9.7.3 Informations générales sur l'état du réseau  RENVOIPAGE _Toc20190523 \h 200
9.8 L'interface graphique XWindow  RENVOIPAGE _Toc20190524 \h 201
9.8.1 Généralités sur XWindow  RENVOIPAGE _Toc20190525 \h 201
9.8.2 Historique  RENVOIPAGE _Toc20190526 \h 202
9.8.3 Architecture de XWindow  RENVOIPAGE _Toc20190527 \h 202
9.8.4 L'interface homme-machine (IHM)  RENVOIPAGE _Toc20190528 \h 203
9.8.5 Les boites à outils  RENVOIPAGE _Toc20190529 \h 203
9.8.6 La bibliothèque Xlib  RENVOIPAGE _Toc20190530 \h 204
9.8.7 Les applications X  RENVOIPAGE _Toc20190531 \h 204
9.8.8 Les gestionnaires de fenêtres  RENVOIPAGE _Toc20190532 \h 205
9.8.9 Lancement de X11  RENVOIPAGE _Toc20190533 \h 206
9.9 Réseaux bureautiques  RENVOIPAGE _Toc20190534 \h 207
9.9.1 Connexion PCTCP/IP  RENVOIPAGE _Toc20190535 \h 207
9.9.2 Le monde McIntosh  RENVOIPAGE _Toc20190536 \h 208
9.9.3 L'architecture Novell  RENVOIPAGE _Toc20190537 \h 208
9.10 L'architecture client-serveur et les bases de données  RENVOIPAGE _Toc20190538 \h 209
9.10.1 Historique  RENVOIPAGE _Toc20190539 \h 209
9.10.2 Serveur  RENVOIPAGE _Toc20190540 \h 209
9.10.3 Normes  RENVOIPAGE _Toc20190541 \h 209
9.10.4 Le moteur  RENVOIPAGE _Toc20190542 \h 210
9.10.5 Les SGBDOO  RENVOIPAGE _Toc20190543 \h 211
9.10.6 Les clients  RENVOIPAGE _Toc20190544 \h 211
9.10.7 DCE  RENVOIPAGE _Toc20190545 \h 212
9.10.8 Tuxedo  RENVOIPAGE _Toc20190546 \h 212
9.10.9 Encina  RENVOIPAGE _Toc20190547 \h 213
9.10.10 Conclusions  RENVOIPAGE _Toc20190548 \h 214
9.11 Graphe récapitulatif des services réseaux  RENVOIPAGE _Toc20190549 \h 215
9.12 Etudes de cas  RENVOIPAGE _Toc20190550 \h 215
9.12.1 Réseaux  RENVOIPAGE _Toc20190551 \h 215
9.12.2 Services  RENVOIPAGE _Toc20190552 \h 216
9.13 Exercices  RENVOIPAGE _Toc20190553 \h 216
9.13.1 Services DARPA-BSD  RENVOIPAGE _Toc20190554 \h 216
9.13.2 Outils de communication divers  RENVOIPAGE _Toc20190555 \h 217
9.13.3 Exercices sur l'utilisation de XWindow  RENVOIPAGE _Toc20190556 \h 218
9.14 Bibliographie du présent chapitre  RENVOIPAGE _Toc20190557 \h 218
10. Index  RENVOIPAGE _Toc20190558 \h 220
 GENERALITES SUR LE système UNIX
L’évolution historique vers les systèmes ouverts
Nous présentons dans le présent paragraphe les évolutions qui ont conduit les utilisateurs à vouloir utiliser les systèmes distribués et les systèmes ouverts au détriment des systèmes propriétaires.
Relations entre les utilisateurs et les gros systèmes
Les services
Une grande variété de services est disponible à savoir:
les performances du système central,
la puissance de calcul,
la disponibilité,
la variété des outils,
la sécurité (confidentialité des informations stockées, sécurité d’accès aux système d’informations, cryptage possible des données, authentification des utilisateurs et des services),
des droits d’accès convenables,
la garantie de système d’informations cohérents (intégrité des données).
Les contraintes
l’utilisateur n’a pas la liberté de choix de son système (matériel, logiciel éventuellement du domaine public, système d’exploitation, ) car dans un environnement d’un système propriétaire, tout est imposé par le constructeur (normes ou absence de norme, outils, etc.),
il n’a pas d’autonomie d’action sur le système car il doit être passif,
il ne dispose pas d’une interface utilisateur conviviale (multifenêtrage donnant la possibilité de faire interactivement plusieurs travaux simultanés sur un même poste de travail),
il n’a pas la garantie de l’universalité de son développement (problèmes de portage bien connus),
le système est fermé car les ouvertures sur le monde extérieur manquent,
il ne dispose pas d’un poste de travail virtuel unique avec un environnement de travail uniforme,
il ne peut pas satisfaire tous ses besoins, par exemple des postes de CAO sur un système non prévu pour,
le processus d’évolution du système d’informations est très lourd et très coûteux.
Les conséquences
L’utilisateur est un acteur passif n’ayant que la liberté de fournir des données. Il n’est pas un acteur majeur pouvant choisir son mode d’utilisation du système.
L’approche gros système est différente de celle des systèmes ouvert qui est représente des systèmes d’informations décentralisés coopératifs fonctionnant selon le modèle clientserveur.
Contraintes financières des systèmes propriétaires
investissement initial trop élevé et non modulaire,
nécessité d’une salle machine et d’équipement spéciaux complémentaires (groupe, onduleur...),
coût d’exploitation important (équipe d’exploitation pléthorique, maintenance très élevée),
le système n’est pas suffisamment évolutif (niveau de granularité insuffisant) et il est difficile de bien le dimensionner,
prix déterminés et imposés par le monopole du constructeur et non par la loi du marché,
Autres obligations des systèmes propriétaires
culture informatique monolithique,
indices de satisfaction très dépendant de la connaissance par le constructeur des produits qu’il diffuse (estce un constructeur ou un commerçant ?),
mariage plus souvent politique que fondé,
relations déséquilibrées entre le fournisseur et le client.
Révolutions techniques
Evolutions matérielles
La révolution technique associée à l’évolution de la puissance des microprocesseurs depuis 1975 (du 6800 jusqu’au Pentium III) qui permettent aujourd’hui pour un coût de l’ordre de 10 KF de disposer localement d’une puissance de calcul que même les gros systèmes n’offraient pas il y a seulement 5 ans.
Evolution des solutions distribuées
explosion des réseaux locaux et des services associés (répartis, distribués),
évolution vers des systèmes hétérogènes capables de communiquer ensemble de façon transparente ce qui constitue la définition de l’interopérabilitéex «interopérabilité» (par exemple couper/coller entre une fenêtre UNIX et une fenêtre Windows),
communications entre des systèmes centralisés tout puissant et des postes de travail distribués offrant une interface de type bureautique avec n’importe quel type de services,
émergence des systèmes coopératifs et des approches clientsserveurs.
Evolution des logiciels
les logiciels sont de plus en plus performants,
ils sont développés conformément aux règles de portabilitéex «portabilité» définies par les organismes de normalisation,
leur interface d’accès est de plus en plus normalisée,
les concepts d’utilisation ergonomiques s’imposent (souris, écran tactiles, multimédia).
Révolution culturelle
L’utilisateur devient un acteur majeur de l’informatique. Il veut comprendre et disposer d’outils efficaces et ergonomiques standards. Il ne veut plus dépendre d’un constructeur unique.
Evolution de l’organisation du travail dans l’entreprise
La recherche de la qualité du service clientèle impose à l’utilisateur fournisseur de disposer d’informations privées immédiatement accessibles donc de ressources informatiques locales, lui permettant éventuellement des traitements immédiats et personnalisés pour répondre aux demandes de ses clients.
Evolutions de la population des utilisateurs
L’informatique rentre progressivement dans toutes les entreprises et dans les foyers. Elle devient omniprésente.
Les utilisateurs, depuis une vingtaine d’années ont essayés de résoudre ce problème de deux façons opposées. La première approche est la normalisation imposée des systèmes informatiques (matériels, logiciels). L’autre approche est celle des utilisateurs qui développent eux mêmes un système d’exploitation et les outils associés.
La normalisation
La normalisation par des organismes nationaux et internationaux (ISO, CCITT, etc.) auxquels participent les utilisateurs, les constructeurs, les représentants des administrations centrales ont permis de mieux interconnecter les systèmes.
La législation, en imposant des systèmes normalisés dans les marchés publics, a obligé les constructeurs à respecter les normes.
Les groupes d’utilisateurs ont permis de mieux prendre en compte leurs besoins (X/OPEN avec les normes POSIX).
Portabilité
Rappelons quelques caractéristiques de la portabilité
Stratégie et finance
Indispensable pour permettre aux utilisateurs de s'affranchir de leur dépendance visàvis des constructeurs, la portabilité est un facteur d'économie car elle fait jouer la concurrence entre les différents acteurs.
Aspect données
Il est nécessaire de figer les règles de définition des données pour garantir un portage aisé des applications et des données qui constituent la richesse de l'entreprise.
Aspect humain
Le besoin d'une interface normalisée est reconnu par tous. Il concerne l'intégralité des postes de travail mis à la disposition des utilisateurs.
Types de portage
Le portage peut être effectué de différentes façons :
portage d'une application vers un autre environnement informatique (programmes, procédures, données),
portage d'une partie de l'application vers une autre s'appuyant sur le même ou un autre environnement graphique,
portage des données vers une autre application dans un même ou un autre environnement.
Introduction aux Systèmes Ouverts
Standard de facto
Lorsqu'une nouvelle application apparaît, il existe une phase d'expansion aux cours de laquelle de très nombreux produits incompatibles existent sur le marché. La concurrence pousse à l'innovation et les bonnes idées sont reprises par les autres constructeurs et éditeurs de logiciels jusqu'à ce que le marché sélectionne un ou plusieurs produits. C'est la première étape du processus de normalisation.
Exemples
NFS (Sun), SQL (IBM)
Groupes de travail
Les organismes de normalisation disposent de nombreux groupes de travail dont certains sont orientés portabilité. Ils rassemblent les principaux acteurs du marché (constructeurs, éditeurs de logiciels, représentant des administrations, groupe d'utilisateurs).
Le groupe le plus connu aujourd'hui est P1003, appelé encore groupe POSIX.
Organismes de normalisation
La dernière étape consiste à mettre au point, avec un minimum d'ambiguïté, un document accepté par tous. C'est le processus le plus long et il conduit souvent à des batailles homériques comme celle des normes associées au langage de programmation Java de Sun.
Il existe des organismes de normalisation nationaux (AFNOR en France), internationaux (ISO et CCITT).
Profils et certification
Une fois définies les normes et les spécifications, il reste à les utiliser pour réaliser un système ouvert. La réalisation des profils a pour objectif de choisir les normes et standards à utiliser.
Il est alors possible de définir des suites de validation de profil permettant de tester la conformité d'un produit aux normes.
Profils X/Open
Le consortium X/Open est constitué d'un ensemble de constructeurs informatiques, éditeurs de logiciels, utilisateurs, représentant des administrations.
Des guides définissent les profils dont le plus important est le guide de Portabilité.
Conclusion sur les Systèmes Ouverts
Un système ouvertex «système ouvert» contient des éléments qui communiquent entre eux à travers des interfaces standards.
Un autre définition est celle de l’IEEE: c’est un ensemble de standards internationaux d’informations technologiques spécifiant les interfaces, les services et les formats d’informations supportés pour réaliser l’interopérabilitéex «interopérabilité» et la portabilitéex «portabilité» des systèmes, des applications et des données.
UNIX et le domaine public
UNIX est un système d’exploitation à vocation universelle qui s’est développé sous la pression conjointe du département de la défense américaine (premier client mondial de services informatiques) dans le cadre du projet DARPAex «DARPA» (Defence Advanced Research Project Agencyex «Defence Advanced Research Project Agency») et des utilisateurs entre 1978 et 1988. Cette promotion s’est déroulée en trois étapes:
définition d’un protocole de communication permettant aux différentes architectures réseaux des systèmes propriétaire de coopérer, à savoir TCP/IP,
définition d’une interface programmatique simple permettant d’utiliser les protocoles TCP/IP pour développer des applications réseaux dans des environnements hétérogènes,
imposition en 1988 du système UNIX, normalisé par ATT, dans ses appels d’offres.
De plus, la pression des utilisateurs d’UNIX qui ont développé sur toutes plates-formes matérielles existantes (depuis le PC jusqu’au CRAY) des outils du domaine publics constituant la plus grande bibliothèque de logiciels gratuits du monde s’est faite de plus en plus insistante.
UNIX: System, Version, Unix like, Unix based...
UNIX est le nom générique d’une famille de systèmes d’exploitation aujourd’hui présents sur tous types d’ordinateurs, du PC, Macintosh au super calculateur (CRAY II). Les différentes versions d’UNIX ont pour nom V7, SYSTEM III, SYSTEM V, 4.3 BSD, XENIX, ULTRIX, etc. Pour s’y retrouver, il est nécessaire de fixer les terminologies et de présenter l’historique des différentes versions.
Les systèmes UNIX authentiques sont produits par ATT et par l’université de Berkeley. Des Laboratoires Bell (Bell labs) sont issues les versions (V6, V7...) et d’ATT les systèmes (SYSTEM III, SYSTEM V). BSD (Berkeley Software Distribution) est le nom donné à la famille UNIX, réalisée à partir de la version V6 des laboratoires Bell, par l’université de Berkeley.
Les systèmes UNIX dérivés se composent de deux sousfamilles: les systèmes basés (UNIX basedex «UNIX based») sur les UNIX authentiques (toute diffusion n’est autorisée qu’après paiement d’une redevance à ATT), les systèmes UNIX likeex «UNIX like» qui, tout en reprenant la philosophie UNIX, s’en démarquent suffisamment pour ne pas avoir à payer de redevances.
Historique
Les concepts de base de fonctionnement des systèmes d’exploitation, mis en évidence lors du projet MULTICS auquel participaient la General Electric, le MIT, et les laboratoires BELL, sont las suivants:
la notion de processus est rigoureusement définie,
pour s’affranchir des contraintes liées à l’écriture d’un système d’exploitation en assembleur (difficultés d’écriture, de maintenance et de mise au point, dépendance complète vis à vis du matériel), MULTICS est écrit dans un langage évolué, le PL/1,
l’organisation des fichiers est arborescente,
les entrées/sorties sont banalisées (tout périphérique est géré comme un fichier) permettant ainsi la redirectionex «redirection».
Tous ces concepts sont progressivement repris par UNIX dont l’histoire a connu jusqu’à présent quatre phases.
Les pionniers (1969 - 1979)
C’est en 1969 que Ken Thompsonex «Ken Thompson» et Denis Ritchieex «Denis Ritchie» réalisent la première version d’UNIX, écrite en assembleur sur PDP7, puis sur PDP9. Le système est monoutilisateur et interactif. Le noyau a une taille d’un6 KOctets, un processus est limité à 8 KOctets et un fichier à 64 KOctets.
Après plusieurs tentatives d’écriture d’UNIX dans un langage évolué (langage A, langage BCPL de Martin RICHARD, langage B, dérivé de BCPL), Brian Kernighanex «Brian Kernighan» et Denis Ritchie définissent le langage C, vers 1972 avec lequel UNIX est réécrit dès 1973 et implémenté sur PDP11. Cette première version portable est la version V6 dont les caractéristiques essentielles sont les suivantes: multiprogrammation, généralisation de l’interface fichier et des entrée/sorties, gestion des processus, des fichiers et des volumes... Cette version a un grand succès à l’intérieur et à l’extérieur des laboratoires Bell.
ATT n’ayant pas le droit, suite à un accord passé avec le gouvernement des USA (1956) de commercialiser ou de supporter des produits informatiques, les premières licences sont alors cédées pour un prix symbolique aux universités de Berkeley (USA) et de Galles (Australie).
Le premier portage d’UNIX est effectué vers 1975 sur Interdata 8/32 en quelques mois. La version UNIX V7 est réalisée en 1976, date charnière dans l’histoire de l’informatique, puisque de cette époque datent les microprocesseurs 8 et 16 bits. La disponibilité d’un système d’exploitation portable devient une nécessité sur un marché de la micro et de la miniinformatique en pleine évolution.
En 1977, Ken THOMPSON passe une année sabbatique à l’Université de Berkeley où il donne le grand départ des développements indépendants d’UNIX. Le nombre de systèmes UNIX installé est de l’ordre de 500.
La confusion (1979 - 1984)
UNIX est sorti de sa petite enfance. Jusqu’à cette date, il s’est développé dans l’enceinte des laboratoires Bell qui lui ont offert une large base de développement. La rencontre d’un marché demandeur lui permet ensuite de se développer commercialement hors de cette structure.
Le portage est effectué sur VAX 11/780 en 1979 et sur IBM 370 en 1980. Par suite de la déréglementation aux USA, ATT commercialise UNIX SYSTEM III en 1982, UNIX SYSTEM V en 1983. La société Microsoft distribue XENIX en 1982. Les versions commercialisées par l’université de Berkeley comportent des améliorations très importantes: meilleure efficacité du système d’exploitation, communications entre processus distants, gestion de la mémoire virtuelle et pagination, système de gestion de fichiers rapide et efficace, outils réseau.
De nombreuses versions UNIX like et UNIX based sont diffusées. Il y a alors plus de 100 000 systèmes UNIX installés dans le monde.
L’ère industrielle (1984 - 1988)
Depuis fin 1984, la normalisation d’UNIX a provoqué la disparition des systèmes dérivés d’UNIX. Dès cette époque, UNIX est consacré comme système d’exploitation à vocation universelle. Il est adopté par Dec (ULTRIX sur Vax), Gould (UTX), Hewlett Packard (HPUX), Data General, Prime, Harris, Cray... Plus de 500 000 systèmes UNIX sont alors installés dans le monde.
En 1988, UNIX s’impose dans et avec le monde des stations de travail (APOLLO, DEC, IBM 6150, SUN, BULL DPX...). C’est le standard où deux tendances prédominent:
UNIX SYSTEM V (release 3 en 1988 puis release 4 en 1991) dont les points forts sont les streams de la V8 ain

si que le système de gestion de fichiers distribués RFS), utilisé en gestion,
les systèmes à vocation scientifique, issus des versions Berkeley BSD 4.2 (DEC, SUN...) avec le système de gestion de fichiers distribué NFS) qui ont une avance importante sur celles d’ATT dans les domaines des réseaux et des fichiers distribués. Certains constructeurs offrent des systèmes offrant simultanément les fonctionnalités SYSTEM V et 4.3 BSD: par exemple SUN avec SUNOS et GOULD avec UTX/32.
La Normalisation (depuis 1988)
Les SVID
ATT fait une première tentative de normalisation en définissant les normes de conception et d’utilisation d’UNIX (SYSTEM V Interface DefinitionEX «SYSTEM V Interface Definition» ou SVIDEX «SVID») et en essayant de les imposer à l’ensemble de la communauté informatique (1986).
L’OSF
L’OSF (Open Software Foundation) est crée en 1988 par IBM, DEC, BULL, HEWLETT PACKARD, PHILIPS pour la promotion d’un «véritable» standard, en opposition à l’ex alliance ATT/SUN, dont l’objectif est identique.
L’X/OPEN
Les groupes d’utilisateurs internationaux (en Europe, l’X/OPEN), les organismes de normalisation (IEEE, ANSI) font de nombreux tentatives pour définir un système permettant le portage de toute application. Il est nécessaire que les applications développées soient développées conformément à des normes. L’ANSI définit la norme X3J11 du langage C.
Les standards et les normes POSIX
Le seul accord concerne les normes d’interface (norme POSIXex «POSIX»), qui doivent assurer la compatibilité des applications dans un proche avenir.
Un standard de faitex «standard de fait» est un produit du marché qui s’impose par ses qualités intrinsèques. Par exemple NFS. Toutefois, ses fonctionnalités n’étant pas normalisées, les implémentations peuvent différer.
Un produit du domaine publicex «produit du domaine public» est décrit selon des spécifications accessibles pour tous. Le produit est pratiquement gratuit, par exemple XWindow, du MIT.
Une normeex «norme» est élaborés, au sein de groupes de travail des organismes de normalisation à l’échelon d’un pays, d’un continent, ou mondial.
Les normes POSIXex «POSIX» (Portable Operating Systems Interface for Computing Environnementex «Portable Operating Systems Interface for Computing Environnement») utilisées dans le temps réel sont définies par l’IEEE. Les premières normes de ce type datent d’un983. Plus de 500 compagnies y ont participées. La première norme POSIX a été publiée en 1986. La proposition de norme (draftex «draft»), publiée en Août 1988, est la norme POSIX 1003.1. Elle est cours de validation à l’OSI sous le projet DIS 9945. Le respect de cette norme est fondamental pour l’avenir d’UNIX et un grand nombre de constructeurs prétendent s’y confirmer, même avec des systèmes propriétaires (VMS de DEC). Les principaux groupes de travail de l’organisation sont les suivants:
Guide de l’environnement POSIX P1003.0
Spécification indépendantes des langages P1003.1
Interface système et extensions nouvelles à P1003.1 P1003.1a
Commandes du shell et utilitaires P1003.2
Extension pour la portabilité au niveau user P1003.2a
Suite de vérifications pour la norme P1003.1 P1003.3.1
Suite de vérifications pour la norme P1003.2 P1003.3.2
Extensions temps réel P1003.4
Activité multiple P1003.4a
Ada P1003.5
Extension de Sécurité P1003.6
Administration système des imprimantes P1003.7.1
Logiciel d’administration P1003.7.2
Accès transparents aux fichiers (TFA) P1003.8
Fortran P1003.9
Profil des application sur les super calculateurs P1003.10
Transactionnel P1003.11
Indépendance des protocoles réseau P1003.12
Temps réel AEP P1003.13
Support des application multiprocesseurs P1003.14
Extension pour le traitement par lot P1003.15
Langage C P1003.16
Services des répertoires réseau P1003.17
Profil POSIX P1003.18
Fortran 90 pour la norme P1003.1 P1003.19
Extension temps réel ADA pour la norme P1003.1 P1003.20
Interfaces utilisateur dans les environnement multi fenêtres P1201.1
Boites à outils modulaires pour l’environnement X11 (MOTIF) P1295.1
Boites à outils modulaires pour l’environnement X11 (SUN) P1295.2
Evolutions des outils
Une condition nécessaire de réalisation d’applications portables sur différents systèmes est la disponibilité et l’utilisation par les équipes de développeurs de compilateurs, de bibliothèques dont les fonctionnalités sont normalisées, par exemple le langage C est normalisé depuis 1990 (norme ANSI X3J11).
La normalisation des outils de développements, des environnements de travail, des appels systèmes, permet de faire des développements portables sur différentes plates-formes. C’est aujourd’hui une nécessité industrielle. Le meilleur exemple est fourni par le produit XWindowex «XWindow» du MIT, qui offre un système d’affichage graphique distribué, fonctionnant sur n’importe quel plateforme matérielle UNIX.
Les versions OSF/1 et SYSTEM V Release 4 se rapprochent des normes POSIX. Cela implique en particulier la conformité de l’interface utilisateur (appels système, langage de commandes, outils de développement).
Unix et les Systèmes Ouverts
La notion de Système Ouvertex «système ouvert» apparaît au début des années 80. L’idée fondamentale est que des systèmes hétérogènes doivent dialoguer par des interfaces standards, quelque soit le constructeur, de façon simple et même transparente (par exemple utiliser des fichiers d’une autre machine sans s’en rendre compte). Aujourd’hui, on s’en approche de plus en plus. On peut ainsi connecter des PC à un réseau de stations UNIX, conserver et accéder, depuis MS/DOS, à des fichiers MS/DOS stockés sur un serveur UNIX, faire du couper/coller entre applications, l’une s’exécutant sur un serveur UNIX, l’autre sur un PC.
En terme d’environnement, un système ouvert est formé d’un ensemble de standards techniques et fonctionnels spécifiant les interfaces, les services, les formats de données supportés pour garantir l’interopérabilité et la portabilité des applications.
Il est donc possible de créer un système d’Informations composé de machines issues de différents constructeurs, chacune ayant ses points forts car les utilisateurs ne veulent plus dépendre d’un constructeur. Des exemples de solutions UNIX, cinq fois moins coûteuses que des systèmes propriétaires sont aujourd’hui monnaie courante. Il ne faut donc pas craindre de diversifier son parc, même au prix d’une certaine difficulté d’exploitation. L’environnement réseau (TCP/IP, NFS, NIS, KERBEROS) permet d’accéder, de façon transparente à n’importe quelle machine d’un réseau faisant partie d’un réseau local dans un environnement sécurisé.
Le standard actuel
UNIX SYSTEM V R4 est le standard actuel vers lequel se rapprochent toutes les implémentations comme le montre le schéma cidessous:
INCORPORER Designer \s \* fusionformat
Les implémentations d'Unix proposés par les principaux constructeurs (SUN, HP, IBM, SCO, Linux...) sont toutes basés sur SVR4.
Historique d’UNIX
ANNEE Berkeley Belllabs ATT AUTRES
1969 assembleur
1974 V5
1975 V6
1977 1.0 BSD IDRIS
1978 2.0 BSD
1979 3.0 BSD V7 ONYX
1980 XENIX
4.0 BSD SMX
1981 MPX
1982 4.1 BSD SYSTEM III SOL
1983 4.2 BSD SYSTEM V
1984 SYSTEM V R1 XENIX
1985 V8 SYSTEM V R2 AIX
1986 4.3 BSD SUNOS, ULTRIX
1987 SYSTEM V R3 IX/370, A/UX,
1991 4.4 BSD SYSTEM V R4
1992 SYSTEM V R4.1 OSF/1
1994 Linux SYSTEM V R4.2
1999 CDE basé sur SVR4.3
Historique des Systèmes UNIX
Architecture du système UNIX
Architecture
Le système UNIX est composé de trois parties essentielles:
L’interface matériellogiciel
C’est le noyau du système d’exploitation.
L’interface homme machine
En mode texte, l’interprète de commandes (shell de Bourne, Cshell, ou Kornshell), est un langage de programmation puissant pouvant être utilisé comme système de développement.
En mode graphique, l'environnement CDE est devenu le standard du marché.
Les outils
Ils sont classiques et nombreux :
assembleur, éditeur de liens, compilateurs, débogueurs (adbex «adb», sdbex «sdb», dbxex «dbx»...),
éditeurs de texteex «emacs»,
interface homme machine avec multifenêtrage (Open Lookex «Open Look», XWindow, Motif, CDEex «Motif»),
services réseaux (uucpex «uucp», uuxex «uux», nfsex «NFS», rfsex «RFS», nisex «NIS» (ex yellow pageex «yellow page»),...),
services Internet (serveur Web, navigateur, moteurs de recherche).
Architecture du noyau
Le noyau traditionnel, monolithique, est composé des soussystèmes suivants:
Le soussystème de contrôle des processus
Il assure la création, la synchronisation, la terminaison, les communications et la gestion des processus.
Le soussystème de gestion de la ressource processeur
Il est assuré par le processus ordonnanceur (scheduler).
Les soussystèmes de gestion mémoire
Ils assurent la gestion des allocations statique ou dynamique de mémoire avec les sous systèmes suivants :
swappeur,
gestionnaire de pages,
gestionnaire de segments
gestionnaire de mémoire virtuelle,
gestionnaire de mémoire partagée,
gestionnaire du cache,
gestionnaire des streams.
Le soussystème de gestion des fichiers
Il assure la gestion des fichiers, alloue les espaces disponibles, contrôle les accès, sauvegarde les données. Les performances des entrées/sorties sont améliorées par l’utilisation d’un système de tampons qui régule les flots de données entre le noyau et les périphériques. C’est une portion de la mémoire centrale appelée mémoire cacheex «mémoirecache» ou cache disqueex «cache disque».
Il gère tous les types de systèmes de fichiers :
systèmes de fichiers Unix (FFS, UFS, AFS, EAFS, etc.)
systèmes de fichiers Dos/Windows (fat16, Fat32, NTFS),
systèmes de fichiers virtuels,
systèmes de fichiers logiques.
Les pilotesex «pilote»(device driversex «device driver»)
Ils gèrent les entrées/sortie entre le noyau et les périphériques. On distingue les périphériques gérés en mode bloc, vus par l’ensemble du système comme des périphériques à accès aléatoire, utilisant le cache, et les périphériques n’utilisant pas le cache, quelquefois abusivement nommés périphériques caractères.

Le noyau monolithique d’UNIX est lourd. Les architectures micronoyaux vont amener une nouvelle conception de ce système d’exploitation, tout en conservant l’intégralité des fonctionnalités des soussystèmes.
La machine virtuelle UNIX
L’utilisateur a une vision presque uniforme de la machine virtuelle UNIX puisque les interfaces homme machine sont en voie de normalisation (normes POSIX).
Le système UNIX s’adapte à tous les environnement et à toutes les architectures de machine. Le noyau du système est dépendant de la machine réelle sur laquelle il est implémenté. Ainsi, UNIX V7, UNIX SYSTEM V.2, UNIX 4.3 BSD, XENIX, VENIX... sont des implémentations particulières d’UNIX que chaque constructeur peut modifier à sa guise. C’est à la fois un avantage et un inconvénient:
un avantage car cela permet au système UNIX d'évoluer,
un inconvénient car il est quelquefois difficile de savoir comment un constructeur à implémenté une fonction spécifique.
Le programmeur appelle des services du noyau par l’intermédiaire de fonctions de la bibliothèque C, d’un appel systèmeex «appel système» (interface directe entre l’utilisateur et le noyau), d'une commande de l’interprète, ou par l’émission d’un signal imposant à un processus d’exécuter la routine système appropriée.
Performances
Généralités
Les performances du système UNIX évoluent avec la technologie ainsi qu’avec les versions d’UNIX. En 1986, SUN commercialisait des stations de travail d’une puissance d’un à 4 MIPS. Aujourd’hui, les performances sont de l’ordre de 10 à 100 MIPS sur un bureau et du Giga-flops sur un système type CONVEX. Demain, elles seront multipliées par 10 ou plus.
Le système d’exploitation UNIX est naturellement performant. Le rôle de l’administrateur est complémentaire.
La SSBA
L'AFFU (Association Française des Utilisateurs d'Unix et des Systèmes Ouverts) a développé depuis plusieurs années un programme de mesures des performances et de la portabilité des machines : la SSBA. C'est un outil reconnu aujourd'hui, gratuit, fourni avec les programmes sources et en principe simple d'utilisation.
Règles de conception du Noyau UNIX
La philosophie de conception du système UNIX est résumée par le dicton: "Small is beautiful". Les normes de développement utilisées sont les suivantes:
utilisation de l’arborescence standard pour le stockage de l’application dans les répertoires.
écriture du noyau en C avec un découpage modulaire pour effectuer tous types de compilations. Chaque fonction, localisée dans un fichier regroupant les différentes fonctions d’une même routine, est utilisable dans différents modules.
déclaration des tables système, des structures de données, des variables globales et des variables externes, définitions des constantes par le préprocesseurex «préprocesseur» dans des fichiers dont le nom est suivi du postfixe .h (header). Tout programme commence par les ordres d’inclusion des fichiers contenant la définition des structures de données et des tables systèmes consultées. Les noms des variables commencent par la première lettre de la structure définie dans le fichier.
non utilisation de fonctionnalités dépendantes d'un compilateur C donné (ordre d’évaluation des arguments d’une fonction (ordre d’évaluation de certains opérateurs), dépendantes de la machine ou du système local.
utilisation systématique de la bibliothèque standard C.
écriture de l’application indépendante de la machine: par exemple, les programmes sont indépendants de la taille du mot machine si on utilise l’opérateur sizeof pour connaître et paramètrer la taille des objets utilisés et l’opérateur de transtypage (cast) pour les conversions de type. Par contre, l’utilisation de nombres entiers de type int provoque la dépendance de l’application ce type ayant une représentation interne dépendante de la machine utilisée.
définition des constantes d’adaptation du noyau à un site donné dans des fichiers séparés.
Génération du noyau
Il existe trois types de distribution du système UNIX:
la distribution de fichiers exécutables et des fichiers de définition des paramètres systèmes et ne permettant pas de générer un noyau,
la distribution constituée des fichiers nécessaires à l’édition de liens du noyau permettant de modifier certains paramètres ou certains fichiers et de le régénérer,
la distribution complète avec les fichiers sources à condition d’acquérir la licence.
Le noyau s’adapte à une configuration matérielle donnée, soit /
par l’intermédiaire d’un fichier de configuration décrivant les fonctionnalités à installer (écran bit mapex «écran bit map»), imprimante laser, type du disque, etc.),
par l’intermédiaire d’une interface d’administration (par exemple sysadmshex «sysadmsh» (UNIX SCO), smitex «smit» (AIX), samex «sam» (HP), admintool (Sun), Linuxconf (Linux)...). D’autres fonctions sont modifiables sans génération: par exemple les processus init pour lesquels il suffit de modifier dynamiquement le fichier /etc/inittab.
Evolutions d’UNIX
Le système UNIX actuel est la résultante des contributions de différents acteurs divers (utilisateurs, développeurs, constructeurs) depuis 1969. Nous présentons dans le présent paragraphe leurs apports successifs.
Les versions successives du système UNIX ont été enrichies de la façon suivante:
Systèmes de fichiers
Les tailles de blocs des fichiers sont variables sur les différentes implémentations. Initialement de 512 octets, elles augmentent à 1024, 4096 puis 8192 octets dans les versions BSD, et de 512 à 1024 octets dans les versions ATT. Des algorithmes de plus en plus performants sont implémentés. Il existe aujourd’hui plusieurs types de systèmes de fichiers:
les systèmes de fichiers BSD (Fast File System (FFS), UNIX File System (UFS)),
les systèmes de fichiers ATT (SV),
Andrew File System (AFS),
les systèmes de fichiers définis par OSF/DCE (Local File System (LFS)),
les systèmes de fichiers Veritas (1993), fiables, dotés d'un gestionnaire de cache très performant, permettant aux système de redémarrer sans perte de données, même en cas de panne brutale du système, garantissant des systèmes à tolérance de pannes pouvant fonctionner plusieurs années sans interruption.
Gestion mémoire
L’université de Berkeley propose la version 3.0 BSD avec une gestion de mémoire virtuelle par page alors qu’ATT reste fidèle à la segmentation sans mémoire virtuelle jusqu’à SYSTEM V Release 3.
Signaux
Les processus peuvent se synchroniser en échangeant des signaux. La version UNIX V7 en propose dixsept, UNIX SYSTEM III dixneuf et UNIX 4.2BSD vingtneuf. Aujourd4hui, nous en sommes à trente trois.
Verrouillage d’enregistrement
Le système ONIX a été le premier à implémenter un système de verrouillage d’enregistrement pour la gestion des transactions. Cette idée est reprise dans UNIX 4.2 BSD avec l’appel système flock et dans UNIX SYSTEM III avec la primitive lockf, permettant de gérer des verrous impératifs et consultatifs, indispensable pour les systèmes gestionnaires de bases de données.
Communications entre processus
Dans la version UNIX V7 sont implémentés les tubeex «tube»s (pipeex «pipe»s), fichiers temporaires où deux processus filiés se synchronisent suivant le modèle du producteur et du consommateur.
Ils sont généralisés à des processus quelconques (modèle des lecteurs et des rédacteurs) dans la version UNIX SYSTEM III par les tubes nommés.
Les apports de la version UNIX 4.2 BSD sont les priseex «prise»s (socketex «socket»s), essentielles aux développements des réseaux homogènes et hétérogènes. Il est alors possible de communiquer de manière transparente avec un processus local ou distant. Ces apports nécessitent la définition de protocoles réseaux adaptés (familles de protocoles TCP, IP...).
Les services réseau sont le point fort d’UNIX car aujourd’hui, il est possible d’accéder, très simplement, au reste du monde depuis son poste de travail.
Les apports de la version UNIX SYSTEM V Release 3 sont les mécanismes de mémoire partagéeex «mémoire partagée», de gestion de messageex «message»s, de sémaphoreex «sémaphore»s, appelés IPC (Inter Processus Communications) .
La version UNIX V8 des Laboratoires Bell intègre les flots d’entrées/sorties (streams), nouvelle implémentation des entréessorties en mode caractère permettant de choisir et de paramètrer le ou les protocoles désiré(s). Ainsi, toutes les fonctionnalités réseau offertes dans l’environnement BSD ont été réimplémentées à partir d’UNIX SYSTEM V Release 3.
Micro-noyau
Le noyau a du intégrer de nouvelles fonctionnalités, par exemple les protocoles TCP/IP (1980) ce qui a amené une croissance de sa taille. Dès 1992, des implémentations commerciales d’UNIX, à base de micro-noyauex «micro-noyau» sont disponibles (UNIX SYSTEME V Release 4.2 intégrant le noyau CHORUS, OSF/1 intégrant le noyau MACH de l’Université Carmegie Mellon). L’idée de base est de recréer un noyau performant de petite taille, permettant à des soussystèmes satellites de gérer localement ou de faire des requêtes distantes.
Activités multiples d’un processus
Dans les implémentations classiques, il est nécessaire de créer un processus par requête, même si n requêtes identiques s’y exécutent simultanément. Dans les implémentations prenant en compte l’activité multiple d’un processus, un même processus peut gérer plusieurs unités d’exécution (threads) simultanément.
Architectures multiprocesseurs
Le noyau a été modifié pour tenir compte des architectures multiprocesseurs, de plus en plus répandues.
Chargement dynamique des pilotes
Les pilotes de périphériques peuvent être chargés dynamiquement dans AIX/V3.
La taille d’un système de fichiers peutêtre modifiée dynamiquement sans avoir à faire de sauvegarde (notion de volume logique d’AIX/V3).
Système de fichiers virtuels
La notion de fichier virtuel permet de faire des opérations d’entrée/sortie transparentes à l’application dans un environnement distribué hétérogène (Networked File System).
Exemple
Gestion des systèmes de fichiers aux formats Fat 16, Fat 32.
Gestion de volumes logique
IBM a introduit, dans AIX, la gestion des volumes logiques ce qui permet de répartir des systèmes de fichiers sur plusieurs disques physiques et de créer des volumes virtuels d'une taille arbitraire (700 Goctets à la météorologie nationale).
Systèmes de fichiers dynamique et tolérance de panne
Les disques logiques ont une capacité que l'administrateur peut redéfinir à tout moment.
Les systèmes (de fichiers) à tolérance de pannes apparaissent dès 1991, avec la gestion des disques miroir (HPUX). Ils sont gérés selon les architectures Raid0, Raid1, Raid5 (méthodes du mirroring et du duplexing).
HP offre la gestion d'armoires de cartouches DLT (sauvegarde sur média de 15 à 30 Goctets).
Domaines d’utilisation
Universalité d’UNIX
Les raisons du succès du système UNIX sont les suivantes:
Sa conception générale est simple et universelle. Les points forts du système Multics y ont été progressivement implémentés.
Son noyau est écrit en C, le rendant facile à lire, à comprendre et à modifier. Le système est ainsi devenu portable et efficace. D’une taille de 1 à 2 Méga octets, son portage est aisé puisqu’il ne comporte qu’environ 5% d’assembleur. La portion de code dépendante de la machine est de l’ordre de 50 %. Ritchie a estimé que les premiers systèmes écrits en C étaient de 20 à 40 % plus lents que ceux écrits en assembleur. Mais les avantages résultants de l’écriture du système d’exploitation en C sont tels qu’ils ont fait disparaître ces inconvénients.
Le nombre des utilitaires disponibles (plus d’un 5000 en 1999) est tel que l’environnement utilisateur est aussi riche que celui des systèmes propriétaires de DEC ou IBM.
Il est possible de créer de nouveaux outils sans modification du noyau.
Le système UNIX s’adapte facilement aux évolutions technologiques ce qui lui permet d’évoluer en permanence.
Exemple: évolution de la gestion mémoire
Dans la version UNIX V7, des algorithmes de gestion mémoire complexes permettent l’optimisation de systèmes dont la mémoire réelle est réduite. Avec la version UNIX 4.3 BSD, les systèmes utilisent davantage de mémoires (centrale et secondaire), cellesci étant disponibles à un moindre coût.
Domaines d’utilisation
Gestion de réseaux hétérogènes
Les systèmes UNIX peuvent être serveurs et clients de réseaux hétérogènes (TCP/IP, Internet, MVS, VMS, Netbeui, Appletalk) avec les fonctionnalités suivantes :
routeur multiprotocoles,
passerelle,
serveur de messagerie,
serveur de fichiers
serveur d'impression,
serveur d'affichage,
serveur de ressources CPU,
serveur Web,
serveur de modems,
administration de réseaux homogènes et hétérogènes.
Calcul scientifique
Les stations de travail SUN, HP, IBM, Linux sont adaptées au calcul scientifique (analyse numérique, mécanique, physique).
CAO
Utilisation par des architectes, des cinéastes (Jurassic Park)
Temps réel
Conception de maquettes en aéronautique et simulateur de vol (Airbus)
Calculs parallèles
Aérodynamique et mécanique des fluides sur CRAY.
Bureautique
La suite bureautique Star Office, développé à l'INRIA, intègre la bureautique microsoft. Elle fonctionne en particulier sur Linux.
Gestion
Utilisation massive d'UNIX dans le monde de la gestion (réseaux bancaires, chaînes de caisses dans les hyper marchés).
Aujourd’hui, UNIX offre une grande variétés de produits:
domaine public: l’une des plus grandes bibliothèque de logiciels gratuits du monde,
offre constructeur: de plus en plus vaste et de plus en plus performante.
Evolution du marché
Le parc de machines fonctionnant sous UNIX est de l’ordre de 25% en 1999. C’est plus que le deuxième constructeur mondial, qu’il soit Américain ou Japonais.
Constructeurs et portabilité
UNIX est la référence actuelle pour la portabilité des applications ce qui est justifié dans la mesure où les standards sont respectés (utilisation des Normes POSIX).
Certains constructeurs ne jouent pas toujours le jeu de la portabilité: cela dépend si UNIX est leur système ou si c’est un concurrent de leur système propriétaire.
Quelques systèmes UNIX en 2000
Systèmes commerciaux
Tous les systèmes actuels ont aujourd'hui des noyaux SYSTEM V avec l'ensemble des fonctionnalités BSD.
Stations de travail à architecture RISC
Leurs domaines d’utilisation sont surtout le calcul scientifique, la CAO, les serveurs de communications et de plus en plus, l'informatique de gestion.
parts de marché architectures Caractéristique
SOLARIS (SUN) 30% multiprocesseurs Unix standard, parc installé,
HP-UX (HP) 30% multiprocesseurs Unix standard, robustesse,
AIX (IBM) 11% multiprocesseurs Unix propriétaire vers IBM,
ULTRIX (DEC) 2% monoprocesseur non stratégique,
Stations de travail avec processeurs INTEL
Compte tenu du nombre de PC dans le monde, le parc installé est très important, même si le nombre de PC fonctionnant sous UNIX n’en représente que 5 à 10%.
parts de marché architectures
SCO UnixWare 75% multiprocesseurs gestion sérieux,
Solaris PC 5% multiprocesseurs Unix standard
BSD 4.4 2% monoprocesseur universitaire, gratuit,
LINUX 15% multiprocesseurs universitaire, gratuit.
Informatique de gestion
SEQUENT multiprocesseurs transactionnel
ENCORE multiprocesseurs transactionnel
Supercalculateurs
Cray multiprocesseurs calcul scientifique
Linux
Linux est devenu un produit Unix lorsqu'il a commencé à être reconnu dans le monde comme une version stable d'Unix sur PC. Le nombre des développeurs écrivant des logiciels pour Linux augmentant, ce système est devenu de plus en plus intéressant à utiliser.
Caractéristiques
Linux est une implémentation d'Unix dans le monde Intel doté de la totalité des évolutions du système et d'un grand nombre de pilotes de périphériques. Il est donc :
multitâches, multiutilisateurs, serveurs de réseau, dotés d'une grande variété d'utilitaires et de l'interface graphique classique Xwindow. Il fonctionne actuellement sur tous les processeurs Intel depuis le 80486 et permet donc de récupérer les vieux PC.
C'est un produit du domaine public, développé par Linus Torvalds à l'université d'Helsinki à partir de 1991. C'est un système clone d'Unix, ne comportant aucune ligne du code d'origine d'Unix mais doté de l'ensemble de ses fonctionnalités.
Droits d'auteur
Linux est distribué gratuitement. Toutefois, son code source est protégé par la Licence Publique Générale GNU dont les caractéristiques sont les suivantes :
redistribution libre et gratuite du code source et de ses composants dont l'auteur conserve ses droits d'origine.
Linux est livré sans aucune garantie.
Linux est vendable. Le vendeur peut modifier le code source à sa convenance ce qui ne lui donne aucun droit d'auteur. En outre, il doit mettre dans le domaine public le code source des programmes modifiés.
Les auteurs et développeurs de Linux ne perçoivent aucune royalties.
Perspectives d’avenir et migration
Avenir d'Unix
L'X/Open est aujourd’hui propriétaire d’UNIX qui impose donc ses normes d'évolution.
L’interface homme machine XWindow est généralisée sous la forme de l'environnement CDE (Common Developpment Environnment).
Après une baisse de régime de deux ou trois ans avec la montée en puissance commerciale de Windows NT, les ventes de systèmes Unix sont plus dynamiques que jamais, dans la mesure où ce système s'avère toujours stable, puissant, sécurisé, universel et très bon marché alors que Windows NT ne tient pas les promesses commerciales de son lancement. De nombreuses sociétés utilisent Linux comme serveur de réseau, même si ce produit est non supporté et dans le domaine public.
Un grand nombre de société refusent le "tout Microsoft" de la même façon qu'historiquement, il y a eu un front du refus devant le "tout IBM".
Les freins historiques à l'utilisation d'Unix, qui sont rappelés cidessous, s'estompent progressivement.
Migration
Choc culturel
Des utilisateurs, même chevronnés, ayant travaillé dans un autre environnement (DEC ou IBM) ont quelquefois du mal à accepter de changer d’outil de travail, surtout s’il est imposé sans qu’ils en comprennent la nécessité. Il est donc nécessaire d’entreprendre une campagne de démystification d’UNIX. Il faut aussi impérativement former les utilisateurs de cet outil, complexe et puissant.
Choc organisationnel
Les systèmes ouverts permettent de passer d’une informatique centralisée à une informatique répartie. L’organisation du système d’informations est donc repensée.
Sécurité
UNIX offre aujourd’hui des services analogues à ceux des systèmes d’exploitation tels VMS ou MVS. Mais ce problème est avant tout un problème lié à l’administration du système (administration sécurisée possible) et à la formation des utilisateurs.
Conclusion
Bien utiliser UNIX nécessite un effort de communication important dans l’entreprise ainsi qu’une formation des utilisateurs et de l’équipe système. Cette formation est de l’ordre de 5 à 15 jours minimum suivant les objectifs recherchés et les profils techniques des personnes concernées.
Points communs des systèmes Unix
Banalisation de l'utilisation des postes de travail
Utilisation
Quelle que soit la variante d'Unix utilisée, son utilisation est similaire sur la plupart des plateformes (AIX, Solaris, Linux, SCO UnixWare, HP-UX) dans ses aspects suivants 
interprète de commandes (shell de Bourne, Korn Shell, Bash, Csh…),
environnement de développement riche et complet, doté d'outils de programmation (compilateurs, éditeurs de liens, bibliothèques, outils de génie logiciel) dont les appels systèmes (système, réseau, graphique) sont conformes à la norme Posix,
architecture des services réseaux complète et ouvertes (gestion des réseaux TCP/IP dotée de l'intégralité des protocoles de communication entre les différents mondes informatiques à savoir :
monde PC microsoft (netbeui, samba, etc.)
IPX/SPX
IP et tous les protocoles de routage associés (RIP, OSPF, etc.)
IBM et l'architecture SNA
DEC et l'architecture VMS,
etc.
bibliothèques de logiciels du domaine public la plus importante du monde, en particulier avec la fondation GNU,
bibliothèques d'outils propriétaire très étoffée chez les grands acteurs du marché (Sun, Hp, Ibm, Sco, etc.).
Bibliographie
Ouvrages de références sur le système UNIX
The Design of the UNIX (SYSTEM V R2) operating system - M.J. Bach
Editeur: Prentice Hall
The Design and the implementation of the 4.3 BSD UNIX operating system
Leffler, McKusick, Karels, Quarterman
Editeur Addison Weslay
The Magic garden explained: the Internals of Unix SYSTEM V Release 4 Berny Goodheart & James Cox
Editeur: Prentice Hall
Programmation système
POSIX Programmers Guide - D. LEWINE
Editeur: O’Reilly & Associates, Inc
Ouvrage général sur les systèmes d’exploitation
Modern Operating systems - A. TANENBAUM
Editeur: Prentice Hall
Programmation réseau
Unix Network Programming - W. Richard Stevens
Editeur: Prentice Hall

SESsION de travail sous UNIX
Session de travail
Tout utilisateur sous UNIX doit être référencé dans le système par l’administrateur. Cette opération est la suivante:
attribuer un identificateur à chaque utilisateur,
définir et répartir les utilisateurs en différents groupes,
définir et réserver un espace de travail (un répertoire) à chacun,
préciser la commande exécutée à la connexion (en général un interprète de commandes).
Deux fichiers sont utilisés:
/etc/passwd,EX «/etc/passwd» contenant la liste de tous les utilisateurs locaux déclarés,
/etc/group,EX «/etc/group» définissant les groupes et leurs membres.
L’utilisateur qui souhaite se connecter doit indiquer, en réponse à l’invitation à se connecter login: son identificateur (lognameEX «logname»), et éventuellement un mot de passe, en réponse au message passwd:
Si ces informations sont correctes, l’interprète de commandes indique qu’il est en attente d’une commande en affichant l'invitation à saisir une commande : le prompt (par défaut le caractère $).
L’utilisateur dispose alors d’un environnement de travail par défaut (prompt, répertoire de travail...) qu’il a peut personnaliser par le fichier de commandes (shell script) .profile s’il existe.
Ce shell script est exécuté à chaque connexion. On peut donc y modifier des variables, lancer des commandes, etc.
Ouverture d'une session
L'identificateur de l'utilisateur doit respecter les règles suivantes:
Il doit être exact.
Les lettres majuscules et minuscules sont prises en compte car considérées comme différentes.
Les caractères de contrôle (^C, ^U ^W, etc.) sont autorisés.
Exemple
Login: philipp
Passwd: 
Mot de passe
L’utilisation du mot de passe suit les règles suivantes:
il n’apparaît pas sur l’écran (absence d’écho),
il doit être parfaitement exact,
il est indispensable pour la sécurité,
il doit être constitué d'au moins 6 caractères alphanumériques (chiffres et lettres) sur la plupart des implémentations actuelles,
il faut le changer régulièrement avec la commande /bin/passwd.EX «/bin/passwd»
Exemple
passwd
Changing passwd for user philipp
new passwd
retype new passwd
Changing passwd for philipp
Le service NIS est un gestionnaire d'une base de données distribuée de certains fichiers systèmes permettant de gérer les utilisateurs d'un réseau. Lors de son utilisation, la commande yppasswdEX «yppasswd» remplace souvent la commande passwd EX "passwd" .
Caractéristiques d'un utilisateur
Ce fichier (système) est utilisé pour la gestion des utilisateurs.
Chaque enregistrement comporte 7 champs séparés par des deux points. Ils ont l’interprétation suivante:
1 identificateur de connexion,
2 mot_de_passe crypté (remplacé souvent par le caractère l’un des caractères *, x, !)
3 UID (numéro caractéristique de l’utilisateur),
4 GID (numéro caractéristique de groupe (groupe principal si l’utilisateur est défini dans plusieurs groupes),
5 commentaire, arbitraire,
6 répertoire dont l’utilisateur est propriétaire (home directory),
7 interprète de commandes ou application lancé au début de la session de travail.
Exemple
root:x:0:1:Superuser:/:/bin/ksh
lp:x:71:18:Printer administrator:/usr/spool/lp:
audit:x:79:17:Audit administrator:/tcb/files/audit:
ingres:x:777:50:Database administrator:/usr/ingres:
philipp:F40kjhbg47:85:50::/home/philipp:/bin/ksh
user1:x:200:100::/home/user1:/bin/ksh
Un utilisateur système important
L’utilisateur, qui a pour identificateur root, est, par définition, le super utilisateurEX «super utilisateur» (super user)EX «super user». Il a tous les droits et il est l’administrateur système. Sur la plupart des implémentations d’Unix, son numéro UID est 0 et son numéro GID est 1.
Mécanisme dit d'aging
Sur les systèmes actuels sécurisés, le mot de passe crypté est dans un fichier inaccessible aux utilisateurs /etc/security/passwdEX «/etc/security/passwd» ou /etc/shadowEX «/etc/shadow. Le caractère x remplace le mot de passe crypté.
Son également présentes dans ce fichiers des informations de gestion du compte (durée de validité, stratégie de verrouillage, stratégie de gestion du mot de passe, etc…

Caractéristiques d'un groupe
Ce fichier définit les groupes d’utilisateurs. Il comporte 4 champs, séparés par le caractère:
Exemple
staff:*:500:philipp,dupond,durand.
1 nom du groupe
2 passwd (sans effet)
3 GID (identificateur du groupe
4 liste des utilisateurs constituant le groupe.
Syntaxe générale d'une commande
La forme générale d'une commande est appelée synopsis EX "synopsis" .
Une commande peut avoir des options et/ou des arguments optionnels, qui sont notés entre [].
La forme la plus générale d'une commande est :
Synopsis
commande [-option(s)][argument(s)]
Les différents mots de la commande sont séparés par un (ou plusieurs) caractère d'espacement.
Opérations sur les utilisateurs et les groupes
Affichage du nom de l’utilisateur et de son groupe
Synopsis
idEX «id»
logname EX "logname" 
Exemple
uid=0(root) gid=1(other)
Changement d’identité
Il est possible dans sa session de travail de changer d’identité par utilisation de la commande suEX «su».
Synopsis
su [-][nom_de_l’utilisateur_cible]
Description
su sans argument permet de devenir super utilisateur.
su suivi du – permet d’utiliser le contexte d’environnement de l’utilisateur cible. Son absence permet de conserver le contexte d’environnement de l’utilisateur d’origine.
Exemples
su dupond
Passwd:xxxx
Il faut alors indiquer le mot de passe de l’utilisateur dupond.
Le contexte d’exécution est celui de l’utilisateur appelant sauf si la commande su a été utilisée avec l’option -
Exemple
su - dupond
Passwd:xxxx
Changement de groupe
Le groupe courant (groupe par défaut) est celui qui est défini par l'administrateur dans le fichier /etc/passwd.
La commande newgrp EX "newgrp"  permet d’en changer pendant une session.
Synopsis
newgrp nouveau_groupe_de_travail_courant
Liste des groupes de travail d'un utilisateur
Synopsis
groups
Description
Affichage de la liste des groupes dans lesquels l'utilisateur est référencé.
Fin de session
Mode texte
L’utilisateur se déconnecte et termine sa session par émission du signal Ctrl D (appui simultané sur les touches Ctrl et D) qui représente la marque de fin de fichier sous UNIX.EX «logout» La session en cours est fermée et le message login (invitation à se connecter) réapparaît sur le terminal.
Les commandes exitEX «exit» ou logout permettent également de terminer une session selon l’interprète de commandes (resp ksh et csh utilisé).
Mode multifenêtres
On utilise le menu de sortie général de la session.
Documentation
Manuel de références UNIX
Validité
Quelle que soit l’implémentation utilisée, c’est toujours la documentation en ligne qui sert de référence.
Utilisation
La documentation standard ou manuel de référence UNIX, est accessible en ligne par l’appel de la commande (en mode texte) du shell man, ou encore par la commande xman & (en mode graphique, sous Xwindow). Chaque élément de la documentation est référencé par un numéro (sa section) éventuellement suivi d’une lettre précisant son domaine d’utilisation (m pour maintenance ou administration, c pour communication, g pour graphique...).
Sur les implémentations les plus conviviales, la documentation est accessible à partir d’un navigateur (par exemple Netscape) EX "Netscape"  au format HTML EX "HTML" .
Manuel sous SYSTEM V
Les sections sont regroupées par thèmes, par exemples
ADM administration,
C langage C,
CMD commandes de base,
DOS commandes DOS sous UNIX,
HW Hardware Dependant,
LM Lan Manager,
LOCAL commandes locales,
X XWindow.
Manuel sous UNIX BSD
Le manuel se décompose en 8 sections décrivant les différentes entités d’UNIX classées par ordre alphabétique.
Section 1: commandes du système
Commandes générales (1)
Commandes de communications(1c)
Commandes graphiques (lg)
Commandes SYSTEM V (1v)
Section 2: appels système
Section 3: bibliothèques
Fonctions primaires(3)
Fonctions de la bibliothèque standard d’E/S(3S)
Fonctions de communications(3N)
Fonctions pour compatibilité avec les autres systèmes(3C)
Fonctions appelables de Fortran(3F)
Fonctions mathématiques(3M)
Fonctions diverses(3X)
Section 4: fichiers spéciaux (répertoire /dev
Section 5: format des fichiers systèmes
Section 6: jeux (en général pas installé)
Section 7: documentations diverses
Section 8: commandes de maintenance et divers utilitaires.
Le guide de l’utilisateur présente une description des commandes et outils les plus communs.
Regroupement des sections
manuel de référence administrateur (sections 1M78),
manuel de référence utilisateur (sections 16),
manuel de référence programmeur (sections 2345).
Autres documentations
Les constructeurs fournissent en outre les manuels spécifiques de la station, les guides complémentaires (guide du débutant, utilisation de l’assembleur, guide administrateur...).
La documentation fournie aux licenciés comprend:
les manuels de référence,
le guide opérateur (mise en route du système),
le guide administrateur,
le guide utilisateur (guide pour débutant sur UNIX, le shell, les éditeurs...),
le guide programmeur (utilisation des compilateurs, bibliothèques, etc.),
le guide des fonctions graphiques,
le manuel de référence des erreurs (messages d’erreurs),
le guide des outils standards (make, adb...).
L’index offre:
la description du contenu de chacune des sections du manuel,
une table des références croisées.
Utilisation de la documentation en ligne
Le manuel de référence UNIX décrit la syntaxe d’utilisation des commandes accessibles par l’utilisateur. Il fournit les informations suivantes:
NAME brève description de la commande,
SYNOPSIS les syntaxes autorisées,
SYSTEM V SYNOPSIS les syntaxes autorisées sous SV,
DESCRIPTION la description complète de la commande,
OPTIONS la description des (éventuelles) options,
EXEMPLES des (rares) exemples d’utilisation,
SEE ALSO les liens avec d’autres commandes,
FILES les fichiers utilisés par la commande,
DIAGNOSTICS le code de retour de la commande,
BUGS les restrictions d’utilisation.
Synopsis
man [numéro_de_section] nom_de_commande
Localisation des commandes
Les commandes publiques sont dans divers répertoires (/usr/etc, /usr/bin, /bin, /etc, /usr/local, etc.). Les commandes permettant de les localiser sont:
whereisEX «whereis»
Localisation des fichiers sources, exécutables et des sections correspondantes du manuel de référence UNIX.
Exemple
whereis who
who /bin/who /usr/bin/who /usr/man/who.l
whichEX «which»
Localisation du fichier exécutable ou d’un éventuel alias.
Exemples
which who
/bin/who
which ll
ll: aliased to "clear ; pwd ; ls –l"
aproposEX «apropos»
Affiche une liste de commandes "proches" de la commande indiquée.
Exemple
apropos ls
whatisEX «whatis»
Description très sommaire d’une commande.
Exemple
whatis ls
Interface graphique
Deux types d’implémentation :
La commande xman,
L’environnement HTML permettant de naviguer dans la documentation.
L’environnement de l’utilisateur
Des fichiers permettent de configurer l’environnement de travail de chaque utilisateur.
Leur mise au point par l'utilisateur ou l'administrateur dont c'est une responsabilité majeure est indispensable.
L’utilisateur, s’il en a le désir et les compétences, peut ensuite les modifier.
Fichiers de configuration d’applicatifs usuels
Il est possible de configurer les applicatifs suivants:
les interprètes de commandes,
les variables d’environnement relatives à un environnement donné, par exemple celui d’Oracle,
les éditeurs de textes (vi ou emacs),
les interfaces graphiques multifenêtres (Xwindow (classique), Motif (l’ex standard), Open Look (ex standard Sun), CDE (le standard actuel), KDE (environnement Linux),
la messagerie électronique,
les utilitaires de transfert de fichiers (ftp, rcp, etc.),
etc.
Tous ces fichiers ont un identificateur commençant par le caractère .
Interprètes de commandes
Le fichier .profileEX «.profile» initialise les interprètes de commandes Bourne shell (l’ex standard) et Korn shell (le standard POSIX actuel).
Le fichier .bash_profile initialise l'interprète de commande bash.
Les fichiers .loginEX «.login» et .cshrcEX «.cshrc» initialisent l’interprète de commandes Cshell.
Le fichier .kshrcEX «.kshrc» contient les alias utilisés par l’interprète de commandes Kornshell.
Exercice
A partir de la commande ls -a, afficher les fichiers constituant votre profil d’utilisateur.
Editeurs de textes
Le fichier .exrcEX «.exrc» initialise l’éditeur viEX «vi».
Le fichier .emacsrcEX «.exrc» initialise l’éditeur emacsEX «emacs».
Services TCP/IP et services de l'Internet
Les fichiers de configuration des services TCP/IP sont:
.mailrcEX «.mailrc» messagerie électronique,
.netrcEX «.netrc» commande ftp,
.xinitrc, etc.EX «.xinitrc» XWindows,
.mwmrc, etc.EX «.mwmrc» gestionnaire de fenêtres.
Initialisation du terminal
La commande stty
La commande stty EX «stty»définit les paramètres de communication du terminal (caractères spéciaux, bit de parité, gestion de l’écho, etc.). Son intérêt essentiel pour un utilisateur est la redéfinition du caractère d'effacement.
Exemples
Modification de la touche associée au caractère d’effacement
stty erase ’^H’
Affichage des paramètres de gestion du terminal
stty -a
speed 9600 baud ; ispeed 9600 baud ; ospeed 9600 baud ;
line = 0 ; intr = DEL ; quit = ^\ ; erase = ^H ; kill = ^U ; eof = ^D ; eol = ^@ ;
swtch = ^@ ;susp = ^Z ;start = ^Q ;stop = ^S ;
parenb parodd cs8 cstopb hupcl cread clocal loblk ortsfl ctsflow rtsflow
ignbrk brkint ignpar parmrk inpck isprip inlcr igncr icrnl iuclc
ixon ixany ixoff
isig icanon xcase echo echoe echok echonl noflsh iexten tostop xclude
opost olcuc onlcr ocrnl onocr onlret ofill ofdel
isscancode
La commande tput
La commande tputEX «tput» EX «tput «initialise et gère les attributs du terminal par défaut (défini par la variable TERM ), en utilisant la base de données associée (terminfoEX «terminfo» sous SYSTEM V, termcapEX «termcap» dans l’environnement BSD).
Synopsis
tput EX "tput"  [-Ttype_du_terminal] action
Description
La commande tput exécute une des actions ciaprès sur le terminal EX «TERM».
bell sonnerie,
blink mode clignotant,
bold mode surbrillant,
civis curseur invisible,
clear effacement de l’écran,
cols affichage du nombre de colonnes utilisables,
cup ligne colonne déplace le curseur (ligne,colonne),
cvvis curseur visible,
flash vidéo inverse si possible ou sonnerie sinon,
init réinitialisation du terminal selon l’émulation décrite par la variable TERM,
longname affichage du nom en clair du terminal,
reset réinitialisation du terminal selon son type(option -T),
rev inversion vidéo,
rmso arrêt du mode (voir l’action smso),
sgro annulation de tous les attributs en cours,
smso retourne le code permettant la mise en évidence d'une partie du texte (en général l’inversion vidéo.
Commandes diverses
Identification d'un terminal
La commande tty permet d'identifier le terminal virtuel utilisé.
Gestion de l’affichage
clearEX «clear» effacement de l’écran
Gestion de la date
dateEX «date» affichage de la date et de l'heure courante
Cette commande permet également de modifier la date du poste de travail. Elle est alors réservée au super utilisateur.
Synopsis
dateEX «date» mmddhhmm
avec yy l’année, mm le mois, dd le jour, hh les heures, mm les minutes.
Affichage d'une chaîne de caractère
Synopsis
echo EX «echo»[-n] texte
Description
Affichage du texte saisi sur l’écran. L'utilisation de l’option -n est utilisée permet une saisie sans passage à la ligne.
Recopie simultanée sur fichier et moniteur
Synopsis
tee EX «tee «[-a] fichier
Description
Recopie simultanée du flot d’entrée sur le périphérique d'affichage et dans le fichier (utile dans les tubes pour les résultats intermédiaires). L’option -a permet d’ajouter les données dans le fichier sans l’écraser.
Statistiques temporelles
Synopsis
timeEX «time» commande_du_shell
Description
Exécution de la commande puis affichage (peu précis) de son temps d’exécution (en secondes) en mode système et en mode utilisateur.
Exemple
time ps
PID TTY TIME COMMAND
1736 p7 0:00 ksh
1786 p7 0:03 xman
1806 p7 0:00 ps
real 0m0.34s
user 0m0.03s
sys 0m0.05s
Attente d'un travail
Synopsis
wait
Description
Attente de la fin des processus lancés en tâche de fond.
Informations relatives aux utilisateurs
whoEX «who»
Affichage de la liste des utilisateurs connectés, des identificateurs logiques des terminaux virtuels associés ainsi que des heures de début de session.
Exemple
philipp ttya May 31 19:22
root console May 31 12:17
root ttyp0 May 31 12:18
fingerEX «finger»
Affichage d'informations complémentaires à la commande who.
Synopsis
finger identificateur_utilisateur
Exemple
finger root
Login name: root In real life: Superuser
Directory: / Shell: /bin/ksh
On since Jun 30 17:32:14 on ttyp8 2 minutes 59 seconds Idle Time
No Plan.
w
Liste des utilisateurs connectés, des commandes en cours d’exécution, de la charge du système.
Exemple
19:10pm up 3 days, 12:17, 2 users, load average:1.04, 1.00, 0.54
User tty login idle JCPU PCPU what
philipp ttya 10:41 am 1 2 3:43 3:25 more /etc/termcap
rusersEX «rusers»
Liste des utilisateurs connectés dans un réseau local. A utiliser de préférence à la commande rwho pour des raisons de performances.
rwhoEX «rwho»
Similaire à rusers.
Impression
Les commandes associées au service d’impression sont différentes dans les environnements SYSTEM V et BSD.
Impression (locale) sous SYSTEM V
Requête d’impression
Synopsis
lp EX «lp»[option(s)] fichier(s)
Description
Envoi d’une requête d’impression. Ses principales options sont:
c recopie du fichier (par défaut, seul un lien est crée),
dX choix d’une destination X (imprimante ou classe),
m requête de notification de fin d’impression par un courier électronique,
nx nombre de copies (par défaut une),
s suppression des messages de la commande lp,
tTitre impression d’un titre (bannière),
w émission d’un message électronique en fin d’impression,
o0pt options spécifiques de l’imprimante.
Etat des requêtes d’impresssion
Synopsis
lpstat EX «lpstat»[option(s)]
Description
Indication de l’état du service lp et des requêtes d’impression en attente. Les principales options sont:
d destination par défaut,
o état des requêtes,
p état des imprimantes,
r état du service lp (scheduler),
t les informations précédentes.
Suppression d’un requête d’impression
Synopsis
cancel EX «cancel»id(s)
Description
Suppression de la requête d’impression id (réponse par le numéro de la requête supprimée).
Impression sous BSD
Envoi d’une requête d’impression.
Synopsis
lpr [option(s)] fichier(s)
Options
Pet_logique choix d’une imprimante par son étiquette logique,
n n copies du document,
t  fichier à imprimer au format nroff/troff.
Affichage du contenu de la file d’attente du spoule d’impression.
Synopsis
lpq [-Petiquette_logique]
Suppression d’une requête d’impression.
Synopsis
lprm [-Petiquette_logique] numéro_de_job
Exemples
lpq -Plp2
lp is reading and printing
Rank Owner Job Files Total Size
active donald 420 win 127586 bytes
active philipp 421 standart input 123456 bytes
lprm -Plp2 421
Mise en page d’un fichier pour impression
Synopsis
prEX «pr» [option(s)] fichier(s)...
Description
Impression des fichiers avec un en-tête contenant la date, le nom du fichier et le numéro de la page. Les principales options sont:
n format de sortie sur n colonnes,
+n impression commençant page n,
h xxx remplace le nom du fichier de l’en-tête par xxx,
wn n caractères par ligne, par défaut 72 ,
ln n lignes par page, par défaut 66,
t suppression de l’impression de l’en-tête,
sc séparateur de colonnes c, caractère de tabulation par défaut,
a impression simultanée des fichiers (un par colonne).
Généralités sur les éditeurs de textes
Il existe plusieurs types d’éditeurs sous Unix.
Les éditeurs lignes (antérieur à l'ère primaire)
Ils sont indépendants du terminal utilisé.
L’éditeur ligne sous Unix est ed. Il n’est pas très convivial (c’est un euphémisme) mais il est standard et peut être appelé depuis un shell script.
L’éditeur sed
L’éditeur non interactif sedEX «sed» (stream editor) utilise la même syntaxe que celle de l’éditeur ed sur des flots de données obtenus, soit à partir d’une autre commande (via un tube), soit à partir d’un fichier ordinaire. Le principe est le suivant:
lecture des données sur l’entrée standard,
exécution des commandes désirées,
écriture du résultat sur la sortie standard, ce qui permet l’insertion de l’appel à sed dans une suite de commandes reliées par des tubes.
Les éditeurs pleine page
Plus agréables à utiliser, ils nécessitent une interfaçe selon le terminal utilisé (définition de ses caractéristiques dans la base de données /etc/termcap (BSD) ou /usr/lib/terminfo (SYSTEM V)). L'association entre le terminal et la base de données est réalisée par la variable du shell associée TERM.
Exemple
TERM=xterm
export TERM
On les classe en deux catégories:
les éditeurs lancés en mode commande par défaut dont le plus connu est viEX «vi»,
les éditeurs lancés en mode insertion par défaut dont le plus connu est emacsEX «emacs». De nombreux éditeurs utilisant la même syntaxe mais avec moins de fonctionnalités ont été développés (eminEX «emin», winnieEX «winnie», win)EX «win»...
Les éditeurs multifenêtres
Ces éditeurs fonctionnent sur des stations de travail dans des environnements multifenêtres (X11/Motif, OpenWindows, CDE, HP-OpenVue) ce qui rend leur utilisation normale. Les plus connus sont texteditEX «textedit» (SUN), xedit EX «xedit»(XWindow).
L’éditeur VI
Il est important de le connaître car c’est l’éditeur standard pleine page interactif d’UNIX. Il a été développé à l’université de Berkeley par Bill Joy (un des fondateurs et dirigeants de la société Sun)EX «Bill Joy».
Il utilise les attributs vidéo des terminaux qu’il reconnaît par la variable du shell TERM ainsi que le système d’adressage (caractères et lignes) et de substitution de l’éditeur edEX «ed».
Son jeu de commandes est puissant. Il peut opérer sur les caractères, les mots, les lignes, l'intégralité du fichier (opérations d'ajout, de suppression, de remplacement, etc.).
Comme l’éditeur ed, il travaille dans un tampon en mémoire qui est l’image du fichier lu sur le disque. Les fichiers manipulés par vi sont compatibles avec ceux utilisés par les autres éditeurs de texte.
Malheureusement, compte tenu de son âge vénérable (cet éditeur a plus de 20 ans), l’utilisateur habitué aux éditeur multifenêtres ne l’appréciera vraisemblablement pas. Tyranosaurus Rex est son surnom.
Graphe d’état et modes de fonctionnement de vi
L’éditeur vi fonctionne selon un des trois modes:
mode commande (utilisation des commandes internes de vi),
mode insertion de texte "effectuée au km",
mode ligne (utilisation de directive dont la portée est une ligne de texte).
Le graphe des états de vi est le suivant
INCORPORER Designer \s \* fusionformat
Appel de vi
vi [identificateur_fichier]
Un fichier existant est chargé en mémoire et son nombre de caractères affiché.
Un fichier inexistant n'est effectivement créé que lors de la sauvegarde du contenu du tampon.
Exemples et variantes
vi +n fichier édition à partir de la ligne n du fichier,
vi + fichier édition à partir de la fin du fichier,
vi +/chaîne fichier édition à partir de la ligne du fichier contenant la chaîne spécifiée,
vi -r fichier tentative de récupération du tampon associé à un fichier après un "plantage".
Commandes de vi
On distingue plusieurs types de commandes de l’éditeur:
les commandes de sauvegarde et de sortie,
les commandes d’insertion,
les commandes de remplacement de caractères,
les commandes de concaténation de ligne,
les commandes de positionnement dans la ligne ou le fichier,
les commandes de manipulation de chaînes de caractères,
les commandes de suppression (caractères, mots, lignes),
les commandes d’annulation des effets de la dernière commande,
les commandes de recherche et de substitution de chaînes de caractères,
l’utilisation de plusieurs tampons de travail,
les options de fonctionnement paramétrables et sauvegardables de l’éditeur de texte,
l’accès direct à l’interprète de commandes.
Les commandes de sauvegarde du tampon de travail et de sortie de l’éditeur (hors mode d’insertion)
:w sauvegarde du ficher en cours d’édition,
:wq sauvegarde du fichier et sortie de l’éditeur,
:w fichier sauvegarde du fichier défini,
:n,mw fichier idem avec la sauvegarde des lignes n à m,
:q abandon de la session courante sans prise en compte des modifications du fichier,
:q! abandon sans sauvegarde du tampon associé au fichier en cours modifié,
:e! fichier abandon de la session en cours sans sauvegarde et démarrage d’une nouvelle session.
Les commandes de passage en mode insertion
i passage en mode insertion devant le curseur,
I passage en mode insertion en début de ligne saisie,
a passage en mode insertion après le curseur,
A passage en mode insertion en fin de ligne,
• passage en mode insertion à la ligne suivante,
• passage en mode insertion à la ligne précédente avec ajout d’une ligne,
:r fichier insertion du fichier à partir de la ligne suivante,
v inhibition d’un caractère en mode insertion, très pratique pour insérer un caractère Esc.
Les commandes de remplacement (caractère, mot)
[n]r,s remplacement du (de n) caractère(s) courant et passage en mode insertion,
R remplacement du reste de la ligne et sortie du mode insertion par Esc,
C ou cw remplacement du mot courant et sortie du mode insertion par Esc,
c$ remplacement du caractère courant jusqu’à la fin de la ligne et sortie du mode insertion par Esc,
c^ remplacement du début de la ligne jusqu’au caractère courant.
La concaténation de lignes
J concaténation de la ligne courante et de celle qui la suit.
Les commandes de positionnement dans le tampon
Esc h ou Esc = déplacement d’un caractère à gauche,
Esc l ou Esc - déplacement d’un caractère a droite,
Esc j déplacement à la ligne suivante,
Esc k ou Esc + déplacement à la ligne précédente,
Ctrl f déplacement à la page suivante,
Ctrl b déplacement à la page précédente,
Ctrl d déplacement à la ½ page suivante,
Ctrl u déplacement à la ½ page précédente,
w déplacement d’un mot à droite,
b déplacement d’un mot à gauche,
) déplacement en fin de phrase,
( déplacement en début de phrase.
Les commandes de manipulation de texte
:f ou:nu demande de la position courante,
:n positionnement au début de la ligne n,
^ positionnement au début de la ligne courante,
$ positionnement à la fin de la ligne courante,
n+ avance de n lignes,
n- recul de n lignes,
Ctrl g taux d’occupation de la ligne dans le tampon,
G positionnement à la fin du tampon.
La fin de phrase est détectée soit:
par une ligne vide,
par les caractères ! ? suivi d’au moins deux caractères d’espacement.
Les commandes de suppression
x suppression du caractère courant,
nx suppression de n caractères à partir du caractère courant.
dw suppression du mot pointé par le curseur,
ndw suppression de n mots pointé(s) à partir du curseur,
dd suppression de la ligne courante,
ndd suppression de n lignes à partir de la ligne courante,
dA suppression depuis le début de la ligne jusqu'au curseur,
d$ suppression depuis le curseur jusqu'à la fin de la ligne,
Annulation de la dernière commande
u annule l’action de la commande précédente.
Les commandes de recherche de chaînes de caractères
/xxx recherche de la chaîne xxx suivante,
?xxx recherche de la chaîne xxx précédente,
/^xxx recherche de la prochaine ligne commençant par la chaîne xxx,
/[xy]xx recherche de la chaîne xxx ou yxx suivante (les crochets sont des véritables crochets),
n relance la dernière commande.
Les commandes de substitution de chaînes de caractères
:s/xxx/yyy/ substitue la chaîne yyy à la première occurrence de la chaîne xxx dans la ligne courante,
:s/xxx/yyy/g substitue toutes les occurrences de la chaîne xxx par la chaîne yyy dans la ligne courante,
:0,$s/xxx/yyy/g substitue la chaîne yyy à la chaîne xxx dans tout le fichier sans demande de confirmation,
:n1,n2s/xxx/yyy/g substitue la chaîne yyy à la chaîne xxx entre les lignes n1 et n2 sans demande de confirmation,
:0,$s/xxx/yyy/cg substitue la chaîne yyy à la chaîne xxx dans tout le fichier avec demande de confirmation,
[xy] l’un des caractères x ou y
[a-e] un caractère de l'ensemble [a,e].
Utilisation des tampons de travail
Stockage dans un tampon
yy ou Y mémorisation de la ligne courante dans le tampon par défaut,
"xyy ou "xY idem mais mémorisation dans le tampon x,
nyy ou nY mémorisation de n lignes dans le tampon par défaut,
n"xyy ou n"xY mémorisation de n lignes en utilisant le tampon x,
y$ mémorisation de la portion de ligne située entre le curseur et la fin de la ligne.
Si la lettre référençant le tampon est majuscule, les mémorisations s’exécutent en mode ajout.
Récupération du contenu d'un tampon
p écriture du tampon par défaut derrière la position du curseur ou à la ligne suivante en fonction du contenu du tampon,
P idem mais écriture à la ligne précédente,
"xp ou "xP idem mais utilisation du tampon x.
Exécution de commandes de l’interprète depuis vi
:! commande_du_shell
La terminiaison de la commande provoque le retour à l’éditeur.
Exemple
!pwd
Appel de l’interprète de commandes depuis vi
:!sh
L’édition est suspendue par un appel à l’interprète de commandes. Le retour à l’éditeur s’effectue par l’utilisation du caractère Ctrl D ou de la commande de sortie de l’interprète exit.
Récupération du résultat d'exécution d’une commande dans un texte édité
!! commande
Le résultat de la commande est inséré à la ligne qui suit la position du curseur.
Exemple
!!date
Les options de paramétrage de l’éditeur vi
:set all affichage des options définies.
:set showmode affichage du mode courant d’exécution (insertion, ajout, etc.).
:set [no]autoindent indentation automatique des paragraphes.
:set [no]mesg autorisation de réception de courriers électronique en cours d’édition.
:set [no]number affichage des numéros de lignes de l’édition courante.
:set [no]list affichage des caractères non visualisés par défaut à savoir $ (fin de ligne), A (tabulation).

Le fichier .exrcEX «.exrc» du répertoire de travail de l’utilisateur permet de définir des options de fonctionnement permanentes.
Il est constitué d'une suite de lignes de directives respectant la syntaxe précédente.
Ces commandes peuvent aussi être définies dans le fichier .profile avec la variable EXINIT.
Exemple
:set showmode
:set nu[mber]
:set no[mesg
:set autoindent
l’éditeur ligne ED
Présentation
L’éditeur ligne standard d’Unix est edEX «ed». Il permet d’éditer des fichiers textes (ASCII uniquement) de 28 Koctets au plus et il ignore les caractères NULL ou postérieurs au dernier Return.
Synopsis
ed [fichier]
Description
L’éditeur ed affiche le nombre d’octets du fichier lu (soit le nombre de caractères) ou ? si le fichier n’existe pas ou est inaccessible, ou rien du tout si l’appel de ed est sans argument.
Il n’affiche pas de prompt pour indiquer qu’il est en attente de commande. Il répond simplement par le caractère ? quand il ne peut pas exécuter une commande (erreur de syntaxe ou impossibilité).
Principales commandes de ed
Chaque commande est constituée d’un seul caractère précédé éventuellement d’une numérotation sous la forme n pour la ligne n ou n,p pour les lignes de n à p. Elle est terminée par le caractère RETURN.
Insertion de texte
na ajout du texte saisi au clavier après la ligne n,
ni insertion du texte saisi au clavier avant la ligne n.
La sortie du mode insertion est effectuée en tapant un point (.) en début de ligne.
Affichage
n,pl affichage des lignes n à p,
/ch/ affichage de la première ligne contenant la chaîne ch,
?ch? idem en parcourant le fichier en arrière,
n affichage de la ligne n,
• affichage de la ligne suivant la ligne courante (idem RETURN),
• affichage de la ligne précédent la ligne courante.
Gestion des lignes
n,pd destruction des lignes n à p,
n,pc destruction des lignes n à p et passage en mode insertion,
n,piq recopie des lignes n à p après la ligne q,
n,ptq duplique les lignes n à p après la ligne q,
n,ps/chl/ch2/ remplacement de la chaîne de caractères chl par ch2 de la ligne n à la ligne p. Seule la première occurrence de chaque ligne est remplacée. Le caractère / n’est pas un caractère spécial mais seulement un délimiteur n'apparaissant dans aucunes des chaînes chl et ch2.
Gestion des fichiers
n,pw écriture des lignes n à p sur le fichier courant,
nr f1 lecture du fichier fichier1 après la ligne n,
f affiche le nom du fichier courant.
Commandes diverses
q sortie de l’éditeur (ed répond ? si les modifications n’ont pas été sauvegardées, un deuxième appel à q force la sortie),
!commande exécution d'une commande du shell depuis l'éditeur,
g traitement global pour certaines commandes.
Exemple
s/ta/ti/ remplacement de la première occurrence ta par ti sur la ligne courante,
s/ta/ti/g remplacement de toutes les occurrences ta par ti sur la ligne courante.
Caractères spéciaux
. ligne courante ou un caractère quelconque,
$ fin d’une ligne ou dernière ligne du fichier,
^ début d’une ligne,
.= affichage du numéro de la ligne courante,
RUBOUT abandon d’une commande (l’éditeur répond ?).
La commande script
La commande script EX «script «permet d’enregistrer le déroulement partiel ou total d’une session de travail dans un fichier.
Exercices: connexion et commandes de base
Ouverture de session
1°) Rappeler les principes de base d’une connexion sous UNIX.
2°) Se connecter, se déconnecter, se reconnecter.
3°) Changer son mot de passe (commande passwd ou yppasswd). Essayer un mot de passe de 2 caractères puis un mot de passe ne contenant aucun caractère alphanumérique.
Commandes de base
1°) Afficher votre nom de connexion, votre groupe, et votre répertoire de travail.
2°) Afficher la liste des utilisateurs connectés.
3°) Rappeler les fonctions des commandes clear, man.
4°) A partir de la commande man et de la commande ls, afficher tous les fichiers du répertoire de travail. Si vous travaillez dans un environnement multi fenêtre, même question à partir de l’exécution de la commande xman &
5°) Dans les environnements Motif ou CDE, vous disposez probablement d'une aide contextuelle en hypertexte au format HTML. Qu’en pensez vous ?
6°) Rappeler le rôle des commandes who, stty.
L’éditeur vi
1°) Utiliser l’éditeur de textes vi pour créer un fichier appelé avis qui contient vos impressions d’utilisation à son inventeur Bill Joy. La première version de la lettre sera truffée de fautes d’orthographe car la saisie sera effectuée au kilomètre et l’éditeur ne vous est pas familier. La dernière version devra être bien présentée, respectueuse, sans faute d’orthographe car Bill Joy est un des dirigeants de Sun. Vous avez même le droit de lui écrire en Anglais si vous vous en sentez capable. Il faudra ensuite sauvegarder ce fichier et le rappeler pour ajouter le postscriptum de votre choix.
L’idéal serait que la lettre comporte environ 100 lignes. 10 lignes sont tout de même acceptées car la torture est, en principe, bannie de ce monde, même avec TRex...N’essayez pas d’y insérer des accents sauf dans une fenêtre xterm (et encore).
2°) Pour vous aider dans cette tâche, n’oublier de modifier votre fichier .exrc de telle sorte que:
le mode d’utilisation de l'éditeur vi apparaîsse sur le moniteur,
le numéro de la ligne apparaîsse sur le moniteur,
l’indentation automatique soit prise en compte.
3°) Insérer une ligne contenant la chaîne de caractère /usr/lib/etc.
4°) A partir des commandes dd et p, la dupliquer.
5°) Concaténer ces deux lignes (commandes J).
6°) A partir de la commande Y, faire une duplication de 3 lignes à partir de la ligne courante.
7°) Remplacer en une seule commande la chaîne de caractères /usr/lib/etc par la chaîne de caractères /etc/bin/lib.
Systeme de gESTION DE FICHIERS
Conception orientée objet du système de gestion des entrées/sorties
L’utilisateur a une vision uniforme des entrées sorties que cellesci s’effectuent sur des fichiers, des périphériques ou des IPC (outils de communications interprocessus). La notion de fichiers est donc très générale puisque qu’un fichier est la représentation abstraite d’un périphérique (par exemple le disque /dev/dk0) ou bien d’une unité logique de stockage (par exemple /home/prof/livre).
La sémantique des appels systèmes d’accès aux fichiers et leurs protections est identique quelque soit leur type.
Un système de fichiers est arborescent et défini récursivement.
Types de fichiers
Le systèmes de gestion de fichiers définit essentiellement cinq types de fichiers :
Fichier ordinaire
Un fichier ordinaireex «fichier ordinaire» (ou encore normal, régulier, banalisé) est constitué d’une suite finie d’octets sans organisation particulière, et d’un pointeur sur l’octet courant.
Il ne faut pas confondre les fichiers ordinaires et les fichiers standards (définis ciaprès).
Répertoire
Un répertoireex «fichier répertoire» est un conteneur d'autres fichiers, d'un type quelconque.
La racine de l'arborescence est le conteneur racine.
Il permet d'associer le nom du fichier et sa position dans l'arborescence.
INCORPORER Designer \s \* fusionformat
L’utilisateur perçoit l'arborescence d’UNIX sous la forme d’un arbre où les noeuds sont des répertoires (hiérarchisés) et les feuilles des fichiers ordinaires. Le noeud le plus élevé est appelé racine (root) et notée /. C’est le répertoire à partir duquel l’utilisateur va désigner un fichier par son chemin d’accès (pathnameex «pathname») représenté par un arc orienté.
INCORPORER Designer \s \* fusionformat
Un répertoireex «répertoire» se distingue des fichiers ordinaires par son type et la structure de ses blocs structurés en entrées de longueur variable jusqu’à 255 caractères depuis les versions 4.2 BSD et SYSTEM V R4), correspondant chacune à un fichier, ou à un sous répertoire.
Description sommaire
Le répertoire /bin contient les commandes binaires publiques.
Le répertoire /etc contient les fichiers et sous répertoires utilisés au démarrage du système.
Le répertoire /dev contient les fichiers de description de tous les périphériques du système.
Le répertoire /lib contient les bibliothèques.
Le répertoire /usr contient les outils publics destinés aux utilisateurs.
Le répertoire /home contient tous les répertoires de travail (home directories) des utilisateurs référencés.
Fichiers standards
Trois fichiers utilisés pour la saisie et l'affichageex «fichier standard», appelés fichiers standards sont ouverts au début de toute session de travail. Ce sont:
le fichier standard d’entréeex «fichier standard d’entrée»: le clavier, dont le pointeur est stdinex «stdin» et le descripteur 0,
le fichier standard de sortieex «fichier standard de sortie»: l’écran, dont le pointeur est stdoutex «stdout» et le descripteur 1,
le fichier standard d’affichage des messages d’erreurs système ex «fichier standard d’affichage des diagnostics d’erreurs»: l’écran, dont le pointeur est stderrex «stderr» et le descripteur 2.
 INCORPORER Word.Picture.6 
L’appellation fichier standard ne signifie pas que les autres fichiers ne sont pas des fichiers "normaux" : cela veut seulement dire qu’ils sont différents des fichiers stdin, stdout, stderr Les fichiers autres que les fichiers standards sont les fichiers ordinairesex «fichier ordinaire».
Fichiers spéciaux
Définition
Un fichier spécialex «fichier spécial» est défini dans le répertoire /dev ou un de ses sous répertoires. Il représente un périphérique fonctionnant dans un des trois modes de suivants :
mode c (caractère)ex «mode c»: tous les périphériques,
mode b  (bloc)ex «mode bloc»: ce sont les supports magnétiques de stockage (disque, bande, etc.) structurés dont les entrées/sorties sont gérées par le système de gestion des fichiers via le cacheex «cache»,
tubes nommés (named pipe)ex «tube nommé».
La représentation par la commande shell ls l de ces types de fichiers est la suivante:
- pour les fichiers ordinaires,
d pour les fichiers répertoire,
b pour les fichiers spéciaux en mode bloc,
c  pour les fichiers spéciaux en mode non bloc,
Les autres types de fichiers sont:
p pour les fichiers spéciaux tube nommé
l pour les liens symboliques,
s pour les sockets,
m pour une entrée partagée.
Entrées/sorties de haut niveau
Les opérations d’entrées/sorties de haut niveau assurent le transfert des données entre le processus utilisateur et le noyau.
Entrées/sorties de bas niveau
Les opérations d’entrées/sorties de bas niveau assurent le transfert des données entre le noyau et le support physique.
Entrées/sorties sur les fichiers ou en mode bloc
Elles assurent la lecture et l’écriture de fichiers d’un système de fichiers avec autorisation de lecture anticipé (read aheadEX «read ahead») et d’écriture différée (delayed writeEX «delayed write») dans le cache. Les transferts sont réalisés au niveau supérieur par les primitives de haut niveau et au niveau inférieur par les pilotes de périphérique en mode bloc. L’accès au périphérique est indépendant de l’application.
Entrées/sorties en mode caractère
L’application gérant ellemême le tampon d’entrées/sorties utilise directement la structure des systèmes de fichiers sur le disque et n’utilise pas le cache. Les données sont transmises aux pilotes de périphérique en mode caractère.
Entrées/sorties en mode cruEX «mode cru» (mode rawEX «mode raw»)
L’application gère ellemême les tampons associés et l’opération d’entrée/sortie, usuellement exécutée en mode bloc, n’utilise pas le cache.
INCORPORER Designer \s \* fusionformat
Lien matériel et lien symbolique
Inode
Le descripteur d'un fichier est appelé inode.
Lien matérielex «Lien matériel»
Un lien matériel représente le nombre de chemins d’accès à un fichier donné dans un même système de fichiers. Le fichier est supprimé si ce nombre devient nul.
Le lien matériel est réalisé entre deux fichiers associés à un même inode. C’est un élément d’un répertoire qui fait référence à un fichier. Un même fichier (avec ses caractéristiques propres: taille, protections, etc.) peut comporter plusieurs liens. On ne peut établir de lien matériel sur un fichier d'une autre partition. La seule façon de reconnaître un lien matériel entre deux fichiers est de visualiser leur numéro d’inode et de constater qu’ils sont identiques. Quand deux fichiers pointent sur le même inode, le fait d’en modifier un modifie automatiquement l’autre.
Un inode est accessible par une entrée d’un répertoire qui crée un lien matériel entre le fichier et l’inode le matérialisant. Il peut avoir plusieurs chemin d’accès à un inode dans son système de fichiers donc plusieurs liens matériel sur un même inode. Le concept de lien matériel est fondamental: les inodes ne font pas partie d’un répertoire donné. Ils existent séparément et sont accessibles par les liens matériels. Quand le nombre de liens d’un inode devient nul, l’inode est désallouée.
Un lien matériel définit un deuxième chemin d’accès à un fichier sans en faire de copie effective. Il n'existe qu'une unique occurrence du fichier même si différents chemins d’accès permettent d’y accéder.
INCORPORER Designer \s \* fusionformat
Lien symbolique
Un deuxième type de liens est défini: le lien symbolique.
Ce dernier définit un chemin d’accès synonyme de celui du fichier (ordinaire ou répertoire). C’est une entrée d’un répertoire quelconque de l’arborescence définissant un nouvel inode contenant un nouveau chemin d’accès (absolu ou relatif) d’un inode existant (banalisé ou répertoire) d’un système de fichiers quelconque de l’arborescence.
On en déduit la représentation suivante :
INCORPORER Designer \s \* fusionformat
Le lien symbolique, entre deux fichiers, s’exécute sur des numéros d’inodes différents et peut associer des fichiers se trouvant sur des systèmes de fichiers différents.
Le lien symbolique généralise la notion de liens matériel à un système de fichiers quelconque. Toutefois, contrairement à un lien matériel, le déplacement ou la suppression d’un fichier ne modifie pas un lien symbolique sur ce fichier qui ne pointera sur rien si le fichier n’est pas remplacé ou qui pointera sur le nouveau fichier dont l’inode est identique au fichier antérieur.
Le lien symbolique sur un répertoire est très utile mais n’est pas symétrique. Un changement de répertoire relatif à un fichier accédé par un lien symbolique peut laisser l’utilisateur perplexe quand à sa position dans l’arborescence.
Le protocole NFS a permis de généraliser la notion de lien symbolique sur des systèmes de fichiers distants ce qui est d’un intérêt considérable pour l’administration de réseaux.
OSF/DCE introduit la notion de lien symbolique avec temporisationex «lien symbolique avec temporisation»: le fichier cible est contrôlé périodiquement et le lien détruit s’il est inexistant.
Création d’un lien (matériel ou symbolique avec l’option s)
Synopsis
lnEX «ln» [-s] fichier_origine lien_destination
Suppression
La suppression d’un lien est effectuée à partir de la commande usuelle de suppression d’un fichier rm.
Commandes d’informations générales
ls
Synopsis
ls EX «ls»[option] [fichier(s)] [répertoire(s)]
Description
La commande ls sans options affiche le nom des fichiers du répertoire courant.
Quelques options
a affichage les fichiers silencieuxEX «fichier silencieux» (.mailrc,.profile,...).
l affichage (format long) des informations suivantes:
nom,
type (fichier ordinaire, répertoire, périphérique, lien, etc.),
date de dernière modification,
taille (en octets),
attributs de sécurité et de propriétés.
R affichage (récursif) du contenu des sousrépertoires.
file
Synopsis
file nom_de_fichier
Description
Affichage des informations de type d'un fichier.
Exemple : file *
Types de fichiers:
ascii text
archive random library
C program text
data
cpio archive
directory
empty
executable shell script
mc68020 executable
symbolic link
roll nroff or eqn input text
Nommage des fichiers
Règles
Un identificateur d’un fichier est une chaîne de caractères alphanumériques significatifs, pouvant être constitué de lettres majuscules, minuscules, chiffres et caractères spéciaux du shell (-, _ etc.).
Dans le système UNIX, les lettres majuscules et minuscules sont différentes.
Les caractères spéciaux suivants sont d'usage réservés : (,[,),],{,},/, \,*, ’,’’, ^, $, ‘,).
Dans les environnements actuels, la longueur du nom est limitée à 256 caractères.
Les fichiers silencieuxEX «fichier silencieux»
Leur nom commence par un point (.) et ils sont utilisés pour personnaliser l’environnement utilisateur. On visualiser leurs caractéristiques avec la commande ls -a.
Exemple
.login .cshrc .profile .logout
Caractères spéciaux élémentaires du shell
Définition
Les caractères spéciaux permettent de remplacement de caractères explicites par des métacaractères, dans les éditeurs de textes ou avec les commandes du shell.
Exemple
Les fichiers peuvent être désignés de façon explicite (en indiquant le chemin d’accès absolu ou relatif) où générique si on utilise des caractères spéciaux qui permettent la substitution du nom.
Le caractère spécial *
Il remplace un nombre quelconque de caractères donc toute chaîne de caractères, à l'exception du caractère point.
Le caractère spécial ?
Il remplace un unique caractère.
Le caractère backslash
Le caractère spécial qui suit le caractère \ EX "\"  (backslash EX "backslash" ) perd sa signification et est considéré comme un caractère ordinaire par le shell. Ainsi, le caractère \ précédant un caractère CR permet de poursuive l'instruction sur la ligne suivante.
Les crochets
Les crochets [] délimitent un ensemble de caractères et permettent de compléter une chaîne de caractères par une des occurences de la liste.
Exemple
ls nom[abc] affichage noma, nomb ou nomc
ls nom[123] affichage nom1, nom2 ou nom3
ls nom[ab1] affichage noma, nomb ou nom1
Crochet et -
L'expression[f-j] représente un des caractères de l'intervalle (ordre lexicographique) défini entre les deux caractères.
Exemples
ls nom[a-z]
ls nom[0-9]
Crochet et !
L'expression [! représente le début du complément d'un ensemble.
L'expression ] représente la marque de fin de l'ensemble.
Exemple
ls [!d-z]
Chemins d’accès
Chemin d’accès absolu
Le chemin d’accès EX "chemin d’accès"  (path name) à un ficher peut-être absolu EX " ou relatif EX "relatif" . Les différents répertoires utilisés sont décrits dans l’ordre décroissant de l’arborescence de la gauche vers la droite et séparés par le caractère spécial /.
Le chemin d’accès absolu décrit la chaîne des répertoires depuis la racine (root = /) jusqu’au répertoire courant.
Exemple
/home/philipp/f1
Chemin d’accès relatif
Le chemin d’accès est relatif aux fichiers et répertoires du répertoire courant.
Exemple
philipp/f1
Commandes associées
Synopsis
basename chemin_absoluEX «basename» affichage du nom relatif du fichier à partir du chemin absolu,
dirname chemin_absoluEX «dirname « affichage du répertoire d'appartenance du fichier.
Répertoires particuliers
Le répertoire courant EX "répertoire courant"  est noté .
Le répertoire père est noté ..
Opérations sur les fichiers standards
Redirection
Définition
La redirection d’un fichier est une modification de son descripteur de telle sorte que l’inode cible par défaut soit modifiée.
Redirection des fichiers standards
La redirection des fichiers standards sur des fichiers ordinaires (saisie ou résultat) est possible avec l’interprète de commandes.
Une redirection n’est valable que pour la commande courante.
Redirection de la sortie standard
Le caractère spécial utilisé par l'interprète de commande pour rediriger la sortie standard est le caractère > suivi de l'identificateur du fichier (ordinaire ou spécial) sur lequel on souhaite l’effectuer.
Exemples
ls Affichage sur la sortie standard de la liste des fichiers du répertoire courant,
ls > liste Stockage de la liste des fichiers du répertoire courant dans le fichier liste.
ls > /dev/tty12 La liste des fichiers du répertoire courant est redirigée sur le terminal virtuel associé au périphérique /dev/tty12.
Remarque
La redirection de la sortie standard permet de créer un fichier vide en shell de Bourne ou en Korn shell. Il suffit d’exécuter la commande
cp /dev/null > fic
Ordre d’exécution des opérateurs
Le fichier cible de la redirection est détruit (s’il existe) puis recrée lors de son exécution ce qui provoquer des conséquences inattendues. Soit la commande:
cat f1 f2 > f1
utilisée pour concaténer les fichiers f1 et f2 en appelant f1 le fichier résultat. Le fichier f1 d’origine est détruit puis recréé, identique à f2.
Redirection en mode ajout
Il est possible d’éviter cette destruction en utilisant le symbole >> au lieu du symbole > qui s’exécute selon le principe suivant: si le fichier existe, l’information est ajoutée à sa fin. Il est créé sinon.
Exemple
ls > liste création du fichier liste,
date >> liste ajout de la date courante en fin du fichier liste,
cat f2 >> f1 ajout de f2 après f1.
Redirection du fichier standard d'affichage des messages d’erreur
Pour rediriger le fichier standard d'affichage des messages d’erreurs (stderr), les symboles > ou >> doivent être précédés de l’étiquette logique 2.
Exemple
cc pg.c 2> pg.e compilation du fichier pg.c avec redirection des messages d'erreur dans le fichier pg.e
Redirection de l’entrée standard
Le caractère de redirection est le caractère < suivi du nom du fichier à partir duquel on souhaite faire la redirection.
Exemple
crypt cle < clair
le fichier clair (prééxistant) est redirigé sur l’entrée standard. Il est crypté (ou décrypté) et le résultat est affiché à l’écran.
Redirections simultanées
On peut exécuter simultanément des redirections sur les fichiers standards d’entrée et de sortie.
Exemple
crypt cle < clair > code
Le résultat n’est plus affiché sur la sortie standard mais stocké dans le fichier code.
Autre forme de la redirection de l’entrée standard
Une deuxième forme de redirection de l’entrée standard, surtout utilisée dans les shell scripts, est représentée par le symbole /tmp/liste
Recherche à partir du répertoire /etc des fichiers d’une taille comprise entre 10000 et 20000 caractères.
find /etc -size +10000c -size -20000c -print
Recherche à partir du répertoire / de tous les fichiers appartenant à l’utilisateur betty et suppression.
Pratique, mais dangereux car la commande rm ne requiert pas de confirmation.
Attention aux caractères d'espacement.
find / -user betty -exec rm -f {} \;
Recherche à partir du répertoire /home de tous les fichiers core et des fichiers suffixés par .o auxquels personne n’a accédé depuis plus de 2 jours et suppression.
find /home -type f \( -name core -o -name '*.o' \) -atime +2 -exec rm {} \;
Recherche à partir du répertoire /usr des fichiers ayant le numéro d’inode (inumber) 4156.
find /usr -inum 4156 -print
Nettoyage et commande find
Tout système d’exploitation crée de nombreux fichiers temporaires qu'il faut donc purger régulièrement. Ce sont les fichiers crées à la suite d'un "plantage" d'un processus (fichier core), qui, si l'on n'y prend garde, vont rapidement infester l'ensemble des répertoires systèmes et utilisateurs, les fichiers crées dans /tmp ou /usr/tmp par les utilitaires gcc, lint, vi... qui doivent subir le même sort deux ou trois jours après leur création.
La commande findex "find" est tout à fait adaptée pour les trouver et les supprimer. Il suffit de la lancer périodiquement (par exemple tous les matins à 4h) à partir de la table des services d'ordonnancement (services cron).
Recherche d’une chaîne de caractères dans un fichier
La commande grep recherche toutes les instances d’une chaîne de caractères d’un fichier (texte) et affiche (par défaut) toutes les lignes la contenant.
Synopsis
grep [option(s)] expression fichier(s)
Les principales options sont:
v affichage des lignes ne contenant pas l’occurrence recherchée,
c affichage du nombre de lignes contenant l’occurrence recherchée,
l affichage du nom des fichiers,
n affichage pour chaque ligne de son numéro,
b affichage pour chaque ligne du numéro du bloc la contenant,
s suppression des messages d’erreur,
h pas d’affichage du nom des fichiers,
i pas de distinction entre lettres majuscules et minuscules,
e exp expression à rechercher.
Expression régulière
L’expression à rechercher est une expression régulière au sens de l’éditeur ed. Elle a en particulier la signification suivante avec les caractères spéciaux ciaprès :
. un caractère quelconque,
[...] un ensemble de caractères,
[^..] caractères n’appartenant pas à l’ensemble indiqué,
[a-e] les caractères compris entre a et e,
exp* répétition de l’expression exp n fois (n CARSPECIAUX 179 \f "Symbol" 0),
exp+ idem avec n > 1,
exp ?. Idem avec n=0 ou 1,
^exp expression exp en début de ligne,
exp$ expression exp en fin de ligne,
e1 | e2 l'expression e1 ou l’expression e2.
Remarque
Les variantes de la commande grep sont egrep, qui interprète d’autres caractères spéciaux, et fgrep, plus rapide mais qui ne recherche que des chaînes fixes.
Tri d’un fichier texte
Synopsis
sort [-option(s)] [-o f_resultat] [+pos1 [-pos2]].. fichier(s)
Description
La commande sort tri des fichiers dans l’ordre lexicographique.
Un champ par défaut est un ensemble de caractères séparés par un caractère d’espacement ou de tabulation.
Les options +posl et -pos2 limitent le tri à un champ précis au lieu de la ligne entière (défaut). Elles sont définies sous le format m,n où m est le nombre de champs à ignorer depuis le début de la ligne et n le nombre de caractères à ignorer depuis le début du champ.
fichier_resulat est un nom de fichier résultat (par défaut stdout).
Les principales options sont:
b ignore les caractères d’espacement et tabulations en fin de champ,
d tri par ordre alphabétique (lettres, chiffres et caractères d’espacement),
f conversion des lettres majuscules en lettres minuscules,
i ignore les caractères de contrôle,
n tri d'un champ numérique de la forme -n ou n,
r inverse l’ordre des comparaisons,
tx le caractère x est séparateur de champ au lieu du caractère d’espacement,
c vérification que le fichier est trié,
m fusionne les fichiers préalablement triés.
Autres commandes
Cryptage
Synopsis
crypt EX «crypt «clef < f1 > fichier2
crypt clef < fichier2
Description
Création d’un fichier fichier2, version cryptée du fichier fichier1 à partir d’une clé de chiffrement cle,
affichage du fichier fichier2 crypté avec la clé de chiffrement clef.
Gestion des lignes d'un fichier texte
Synopsis
uniqEX «uniq» [option(s)] f_source [f_cible]
Description
Suppression des lignes identiques du fichier trié f_source, résultat dans f_cible.
Les options sont:
u copie des lignes n’ayant qu’une seule occurrence (défaut),
d copie une seule occurence des lignes en ayant plusieurs (défaut),
c indique le nombre d’occurences d’une ligne,
n ignore les n premiers champs des lignes dans la comparaison,
+n ignore les n premiers caractères de la ligne ou du champ spécifié.
Attributs de propriété et de sécurité
Un fichier est caractérisé par ses attributs de propriété ( ex «attribut»propriétaire, groupe) et de sécurité (droits d’accès).
Propriétaire
L'utilisateur propriétaire ou plus simplement propriétaireex «propriétaire», défini dans le fichier /etc/passwdex «/etc/passwd» (souvent le créateur) est celui auquel le fichier est rattaché dans le système.
Par définition, c'est l'utilisateur qui va pouvoir modifier les attributs de sécurité et les drapeaux d'accès du fichier.
Son identité est modifiable sur la plupart des implémentations par l’administrateur du système avec la commande chownex «chown.
Groupe
Un groupeex "groupe" est un ensemble d’utilisateurs, définis par l’administrateur, avec des droits communs.
Un utilisateur peut appartenir à plusieurs groupes, définis dans le fichier /etc/group EX "/etc/group" .
Le groupe par défaut d'une session est celui qui est défini dans le fichier /etc/passwd.
Le groupe de travail d’un fichier est modifiable par l’utilisateur avec la commande shell chgrpex «chgrp.
Synopsis
chgrp nouveau_groupe_de_travail fichier(s)
Droits d'accès
Les droits d’accèsex «droits d’accès» d'un fichier en définissent les protections par des drapeaux.
Ils sont répartis en trois champs: un pour l'utilisateur propriétaire, un pour le groupe et un pour les autres utilisateurs. Chaque champ contient trois drapeaux d’accès : rwx. Leur signification est variable selon que le fichier est ordinaire ou répertoire.
r w x
fichier ordinaire lecture écriture shell script
suppression fichier exécutable
modification
répertoire listable modification traversable
création, ajout
suppression
Exemple
Un fichier ordinaire avec les droits rwxrx—x peut être lu, écrit et exécuté respectivement par le propriétaire, lu et exécuté par les membre de son groupe et seulement exécuté par les autres utilisateurs.
Commandes associées
La commande shell lsex «ls» permet de visualiser les attributs de sécurité d’un fichier.
La commande shell chmodex «shell chmod» permet de les modifier.
Sur certaines implémentations fantaisistes, la destruction d’un fichier (rm) ne nécessite que le droit d’écriture dans le répertoire où le fichier est enregistré mais pas le droit d’écriture sur le fichier luimême. Un fichier accessible en lecture seule peut donc être détruit si le répertoire est accessible en écriture. Dans ce cas, la commande shell rm s’exécute avec une requête de confirmation.
En complément des droits rwx, un fichier peut avoir un des trois attributs s, S, t. Ce dernier permet de résoudre le problème posé au paragraphe précédent.
Gestion des attributs de propriété
chown
Modification du propriétaire d’un fichier. C'est un acte irréversible pour l'ex propriétaire.
Synopsis
chown nouveau_propriétaire fichier(s)
Cette commande n’est accessible que par l’utilisateur root sous BSD.
Sous SYSTEM V, le (futur ex) propriétaire du fichier peut également l’utiliser.
chgrp
Modification du groupe d’appartenance d’un fichier part le propriétaire ou l'administrateur.
Synopsis
chgrp nouveau_groupe EX «chgrp»fichier(s)
Gestion des attributs de sécurité
La commande chmod
Synopsis
chmodEX «chmod» modif_autorisations_courantes fichier(s)
Cette commande permet de modifier les attributs de sécurité d’un fichier ou d’un répertoire. Elle a deux syntaxes.
Méthode symbolique
UTILISATEURS OPERATEURS PERMISSIONS
u propriétaire + ajouter r
g groupe - supprimer w
o autres (others) = assignation x
Exemple
chmod go-rx archive
chmod g+w donnees
Méthode octale
Les droits d'accès d'un fichier sont définis par l'interprétation (par 3) des 9 drapeaux en octal.
LECTURE = 4 ECRlTURE = 2 EXECUTlON = 1
644 -rw-r—-r-- droits par défaut pour fichier
755 drwxr-xr-x droits par défaut pour répertoire
Masque de définition des droits d'accès par défaut
La commande umask EX «umask»permet de modifier le masque de création des bits de sécurité utilisé lors de la création des fichiers et des répertoires pour définir leurs attributs par défaut. Il n’agit que sur les bits rwx.
Droits par défaut définis par défaut sur les fichiers ordinaires et les répertoires
Sur les fichiers ordinaires, les droits par défaut sont définis selon la règle:
droits_par_defaut=non(masque) et 666
Sur les répertoires, les droits par défaut sont définis selon la règle:
droits_par_defaut=non(masque)
Droits définis par défaut usuels
L’exécution de la commande umask EX «umask»indique la valeur par défaut du masque courant, souvent 022.
Exemple
Avec le masque précédent, on obtient:
Fichiers ordinaires rw-r—r—
Répertoires rwxr-xr-x
ce qui constitue des droits d’accès raisonnables. Le masque de protection peutêtre défini soit par l’administrateur, éventuellement comme paramètre du noyau, soit redéfini par l’utilisateur dans son fichier .profile (ou équivalent).
Il est fondamental pour l'administrateur de définir la variable umask dès que possible (lors de la génération système ou dans le fichier /etc/profile).
Les bits s et S
Le bit suid (fichier ordinaire)
Le bit sex "Le bit s" aussi appelé bit sUID (set user id). S'il est positionné, un utilisateur autre que le propriétaire du fichier est autorisé à emprunter temporairement son identité pour l'exécuter avec les droits du propriétaire. Le propriétaire réelex "propriétaire réel" d'un processus en cours d'exécution est l'utilisateur qui a lancé le processus. Le propriétaire effectifex "propriétaire effectif" est le propriétaire du fichier exécutable qui en a défini les droits d'accès, autorisant, par l'appel système setuidex "setuid" d'autres utilisateurs à les exécuter.
Synopsis
chmod 4555 fichier_exécutable
On obtient les droits r-sr-xr-x
Exemple
Le fichier /etc/passwd contient la liste des utilisateurs ainsi que leur mot de passe crypté. Il appartient au super-utilisateur avec les droits rw-r--r--. Pourtant, un utilisateur peut modifier son mot de passe par la commande /bin/passwd qui lui permet d'écrire dans le fichier /bin/passwd alors qu'il n'a pas le droit en écriture. Les droits de cette commande, qui appartient au super-utilisateur, sont rwsr-xr-x.
Tous les fichiers avec le bit s sont des fichiers sensibles car ils peuvent être des failles dans la sécurité du système. Il faut donc éviter d'en créer (shell-scripts).
Le bit suid (répertoire)
Tout fichier créé dans ce répertoire hérite du groupe du répertoire doté des droits drwxrwsr-x.
Le bit Suid
Le bit Sex "bit S" est aussi appelé bit SGID. C'est l'équivalent du bit SUID pour le groupe et les fichiers exécutables, comme héritage sur les répertoires et comme descripteur de comportement de verrouillage sur les fichiers de données.
Synopsis
chmod 2555 fichier_exécutable
On obtient les droits r-xr-sr-x
Gestion du bit suid
Il faut minimiser l'utilisation des programmes suid. Si possible, éviter que leur propriétaire soit le superutilisateur. De plus en plus, des utilisateurs spécifiques sont crées, par exemple lp ou uucp. Par exemple, la restriction d'un droit d'accès à une base de données n'implique pas l'utilisation d'un programme suid root. Il est plus facile de créer un pseudo utilisateur avec des droits d'accès limités, et de rendre le programme suid avec cet utilisateur.
Un fichier exécutable avec le suid ne doit pas être accessible en lecture, un pirate pouvant profiter des erreurs de programmation pour l'utiliser à l'insu de l'administrateur. Ainsi, quand ces programmes utilisent des appels systèmes, les chemin d'accès aux fichiers utilisé doivent être impérativement absolus, les propres programmes de l'administrateur risquant de devenir des chevaux de Troie sinon.
Le bit t
Le bit de collageex "bit de collage" (sticky bitex "sticky bit") a deux utilisations distinctes : l'une sur les fichiers et l'autre sur les répertoires.
Fichier
Il permet le maintien de l'image du fichier en mémoire à la fin de son exécution. Les plus fréquents sont les éditeurs et les outils de production de logiciels : compilateurs, assembleurs, éditeur de liens....
Répertoire
Appelé bit t, le bit de collage est utilisé sur des répertoires d'accès publics (rwxrwxrwx) avec les versions UNIX 4.3 BSD et UNIX SYSTEM V R4. Il permet d'interdire à un utilisateur de détruire des fichiers dont il n'est pas propriétaire.
Synopsis
chmod 1777 répertoire
On obtient les droits drwxrwxrwt
L’arborescence UNIX
Les commandes non résidentes sont organisées dans des répertoires dont chacun a un rôle précis. Tout programmeur doit respecter l’organisation de l’arborescence pour faciliter la portabilité de logiciels. Une des fonctions de l’administrateur d’un système est de veiller à l’existence et à l’accessibilité des répertoires dont les noms sont quelquefois figés dans le code de certaines commandes.
Cidessous un schéma des répertoires standards traditionnels d’UNIX ainsi qu'une description des rôles des répertoires dédiés aux utilisateurs.
INCORPORER Designer \s \* fusionformat
Racine (root)
Au sommet de l’arborescence se trouve le répertoire root noté / qui sert de référence aux noms absolus des fichiers.
Il faut distinguer le sens du caractère / selon sa position dans le nom du fichier: à gauche, il représente la racine; ailleurs il sert de séparateur des différents répertoires référencés.
Chaque répertoire créé contient au moins deux entrées symbolisées par. qui représente le répertoire courant et par.. qui représente le répertoire parent. Une particularité du répertoire root est qu’il est le seul répertoire tel que. =.
Répertoires sous la racine
/mntex «/mnt»
Le rattachement par la commande /etc/mount d’un système de gestion de fichiers sur l’arborescence peut se faire sur un répertoire quelconque (les différentes partitions d’un disque sont ainsi montées à l’initialisation). Le répertoire /mnt, en général réservé pour le rattachement de systèmes de fichiers en provenance de supports amovibles externes (cartouches, lecteur de disquettes...). dont l’utilisation est en général temporaire (récupération de fichiers, copies, archivage...).
/lost+foundex «lost+found»
Chaque système de fichiers doit impérativement contenir le répertoire lost+foundex «lost+found» dans lequel sont transférés les blocs récupérés lors de l’exécution de la commande fsck, avec comme nom leur numéro d’inode.
/unixex «/unix»
Le fichier /unixex «/unix» (ou vmunix, hp-ux, vmlinuz, etc...ex «/vmunix») est le noyau du système. Les systèmes dotés plusieurs noyaux correspondant à diverses configurations doivent effectuer un lien au démarrage entre le noyau chargé et l’entrée /unix.
Commandes publiques
L’exécution d’un commande par l’interprète nécessite la consultation des répertoires dans l’ordre où ils sont définis dans la variable shell PATH.
/bin EX "/bin"  et /usr/bin EX "/usr/bin" 
Ces deux répertoires contiennent le binaire exécutable des commandes publiques.
Leur utilisation était liée historiquement aux caractéristiques physiques des disques: un disque d’accès rapide mais de faible capacité pour le répertoire /bin contenait les commandes les plus utilisées, en particulier celles qui étaient nécessaires au démarrage (boot).
Les autres commandes (dans le répertoire /usr/bin) étaient stockées sur un disque plus lent. Cette organisation subsiste aujourd’hui: elle permet d’équilibrer les échanges avec les disques et de faciliter la maintenance par la création de systèmes de fichiers gérés séparément.
Il est conseillé à tout utilisateur de créer sous son répertoire de connexion un sousrépertoire bin pour y stocker ses propres commandes (binaires exécutables ou shell scripts). Il lui suffit alors d’ajouter $HOME/bin à sa variable PATH. L’ordre des répertoires indiqués dans la variable PATH étant significatif (de gauche à droite), cela permet à l’utilisateur de réutiliser le nom des commandes publiques. C'est néanmoins déconseillé car cela oblige à donner un nom absolu pour accéder à la commande publique traditionnelle.
/5binex «/5bin»
Ce répertoire de l'environnement BSD contient les commandes compatibles SYSTEM V.
/usr/lbinex «/usr/lbin»
Ce répertoire contient des fichiers binaire locaux (ATT).
/usr/ucb et /usr/local/bin
Le répertoire /usr/ucb contient les commandes compatibles BSD.
Le répertoire /usr/local/bin contient des commandes spécifiques à un site.
Une des taches de l’administrateur est de veiller à ce que les répertoires des commandes publiques soient accessibles par tous en lecture et que leur droit en écriture y soit limité au propriétaire (en général bin ou root).
Fichiers temporaires
/tmp et /usr/tmp
L’utilisation de certains utilitaires (éditeurs, compilateurs) provoque la création de fichiers temporaires dont le répertoire standard est /tmpex «/tmp» (pour les mêmes raisons qu’avec /bin et /usr/bin, certains utilitaires utilisent /usr/tmpex «/usr/tmp»), les versions actuelles tendant à éliminer cette particularité).
Le répertoire /tmp doit avoir les droits rwx pour tous les utilisateurs. Il est utilisé par différents utilitaires pour y créer des fichiers temporaires lors d’édition de textes ou de compilation.
Par convention, les noms des fichiers temporaires comportent le plus souvent deux parties: l’une littérale identifiant la fonction assurée, et l’autre numérique garantissant l’unicité du nom (souvent le PID du processus associé).
Les utilitaires créant des fichiers dans le répertoire /tmp doivent normalement les détruire à leur terminaison.Toutefois, certains fichiers peuvent y subsister. Aussi lors du démarrage du système, le répertoire /tmp est normalement purgé. Il est judicieux de le charger directement en mémoire (ramdisk) ce qui permet une accélération importante des entrées/sorties qui l’utilisent. Attention au gros fichiers qui risquent alors de saturer la mémoire.
Bibliothèques
/lib et /usr/lib
Les bibliothèques standards d’UNIX sont stockés dans les répertoires /libex «/lib» et /usr/libex «/usr/lib» (l’existence de deux répertoires provient des mêmes considérations historiques que pour /bin et /usr/bin).
Convention des noms des bibliothèques
Chaque bibliothèque a pour nom libxxx.a où xxx précise sa nature (c pour le langage C, f77 pour fortran...) et a le suffixe signifiant archive. Sur SYSTEM V R4, l’édition de liens dynamiqueex «édition de liens dynamique» est possible. Dans ce cas, les bibliothèques concernées sont suffixées par.so (shared objectsex «shared objects») ou .sl (shared library EX "shared library" ).
Ordre de recherche
Les sous programmes des bibliothèques sont examinées séquentiellement ce qui pose des problèmes si un sousprogramme fait référence à un sousprogramme placé avant lui. Il faut alors soit examiner deux fois la bibliothèque, soit la réorganiser pour garantir que toutes les références sont en avant. La répartition des bibliothèques entre /lib et /usr/lib dépend de l’implémentation sur chaque système en fonction des outils disponibles.
Commandes de gestion des bibliothèques
Il existe des bibliothèques pour les langages (C, PASCAL...), mathématiques (IMSL, NAG,...), graphiques (PHIGS,...), pour la gestion de terminaux, pour divers utilitaires (yacc, profil...), pour la génération du noyau. Des commandes spécifiques (ar, ranlib...) permettent de les gérer.
Autres répertoires
Les répertoires /lib et /usr/lib sont de plus en plus souvent complétés par des fichiers utilisables par tous de façon transparente, regroupés quelquefois en sousrépertoires. On trouve ainsi:
les programmes associés aux différentes passes des compilateurs (cpp...) ainsi que les fichiers objets (crto.o...),
les programmes et fichiers associés aux commandes uucp, learn... regroupés dans des sous répertoires du même nom,
les macros utilisés par les utilitaires nroff et troff regroupées dans tmac,
les caractéristiques des terminaux pour troff regroupées sous term,
les polices de caractères (fontesex «fonte») recroupées dans font,
les fichiers associés au service cron regroupés dans cron (ou les fichiers crontab et atrun en version Berkeley),
des fichiers isolés associés aux commandes calendar, lint, spell, units, cref, xref, yacc..
Liste de contrôle d'accès
Sur les implémentations d'UNIX actuelles, il devient en outre possible de définir des listes de contrôle d'accèsex "listes de contrôle d'accès" (LCAex "LAC") ou ACLex "ACL" (Access Control Listex "Access Control List").
La norme POSIX P1006.3 définit les LCA comme un moyen formel d'exprimer des opérations sur des objets, selon l'identité de l'entité émettrice de la requête.
Une LCA est une entrée dans un fichier de la forme :
:type:principal:permissions
Le champ type spécifie l'interprétation du champ principal, par exemple le propriétaire du fichier, un autre utilisateur (local ou distant), un groupe (local ou distant).
Le champ principal est le nom de l'entité à qui appliquer les droits.
Le champ permission est l'ensemble des drapeaux suivants :
les droits classiques RWX
les drapeaux CID, avec les interprétations
C habilité à modifier les ACL,
I droits d'insertion de fichiers dans un répertoire,
D droits de destruction de fichier dans un répertoire.
Exemple 1
root:/etc:RWXCID
Exemple 2 : ACL sur AIX
Sur AIX, la sémantique suivante est utilisée : les ACL comportent les informations suivantes :
attributs
permissions de base
permissions étendues.
Attributs
Les attributs indiquent les attributs spéciaux du fichier ou du répertoire (bit s, S, t).
Permissions de base
Les permissions de base décrivent les attributs traditionnels définis par les commandes chmod, chown, etc.
Permissions étendues
Les permissions étendues sont décrites sous la forme d'ACEEX "ACE" (Access Control EntryEX "Access Control Entry"), qui, pour chaque instance décrite, suit le format :
opération type_d'accès [[info_utilisateur] [info_groupe]
Opérations
Trois types d'opérations sont supportés :
deny interdit le type d'accès spécifié
permit autorise le type d'accès spécifié
specify définition du type d'accès.
Types d'accès
L'utilisateur ou le groupe auquel s'appliquent les droits décrits est précédé du suffixe u: ou g:.
Une entrée est crée pour chaque utilisateur ou groupe.
Il est possible de combiner plusieurs utilisateurs ou groupes dans une seule entrée.
Exemple
attributes
base permissions
owner(philipp): rwx
group(root): r-x
other: r--
extended permissions:
enabled
deny rwx g:staff
permit rwx u:root, g:staff
permit r-x g:sysadm
Commandes associées
aclgetEX "aclget" affichage d'une ACL,
aclputEX "aclput" définition d'une ACL,
acleditEX "acledit" modification d'une ACL.
Exercices
Commandes de base du SGF
1°) Rappeler le rôle des commandes pwd, cd, mkdir, cp, ls, mv.
2°) Créer le répertoire tempo dans votre répertoire de travail, puis s’y déplacer. Y copier en une seule commande, le fichier /etc/hosts dont on affichera ensuite la taille et le contenu.
3°) Supprimer le répertoire tempo à partir de la commande rmdir.
4°) Réexécuter le 2° puis déplacer la copie du fichier /etc/hosts dans le répertoire père. Supprimer, en une seule commande différente de la précédente le répertoire tempo.
5°) Déplacez vous dans l’arborescence d’UNIX pour étudier les répertoires /, /etc, /usr, /home et essayer d’y détruire des fichiers au hasard (vous n'êtes pas root!!).
6°) Y atil une différence entre les commandes:
rm *.o et rm * .o
Commandes d’affichage
1°) Rappeler les fonctions des commandes clear, tail, head, more, man.
2°) Afficher les 10 premières lignes du fichier /etc/profile ou du fichier /etc/termcap.
3°) Afficher les 10 dernières lignes du fichier /etc/profile ou du fichier /etc/termcap.
4°) A partir des commandes ls, more ou de la commande pg, afficher de façon lisible le contenu détaillé du répertoire /dev.
Tube
A partir des commandes who et wc, calculer le nombre d'utilisateurs connectés.
who | wc -l
Liens et redirection
1°) A partir de l’opérateur de redirection et de la commande ls, créer un fichier liste contenant la liste de tous les fichiers du répertoire courant.
2°) A partir de la commande ln, créer un lien matériel sur le fichier liste appelé liste2.
3°) Avec l’éditeur de votre choix, modifier le fichier liste2 et constater que cette modification est visible dans le fichier liste.
4°) A partir de la commande ls -l, constater l’existence de deux liens matériels.
5°) Supprimer le fichier liste et constater que le contenu du fichier liste2 est toujours accessible.
6°) A partir de la commande ln, créer un lien symbolique sur le fichier liste2 appelé liste3.
7°) Avec l’éditeur de votre choix, modifier le fichier liste2 et constater que cette modification est visible dans le fichier liste3.
8°) A partir de la commande ls -l, constater l’existence du lien symbolique.
9°) Supprimer le fichier liste2 et constater que le fichier liste3 existe toujours mais que son contenu n’est plus accessible.
10°) Recréer un nouveau fichier liste2 et constater qu’il est à nouveau accessible par liste3.
Commandes find, grep et sort
1°) Rechercher dans le répertoire /dev, tous les fichiers qui ne sont ni de type bloc ni de type caractère.
find /dev ! -type b ! -type c -print
2°) Rechercher dans le répertoire /usr/adm les fichiers non modifiés depuis 24 H.
find /usr/adm -mtime +l -print
3°) Rechercher dans le répertoire /etc, les fichiers ayant une taille comprise entre 10000 et 20000 octets et afficher leurs attributs.
find /etc -size +10000c -size -20000c -exec ls -l {} \;
4°) Rechercher dans tous les fichiers du répertoire courant ceux qui contiennent la lettre a, puis ceux qui contiennent la lettre a en premier caractère d’une ligne.
grep a *
grep "^a" *
5°) Rechercher, quand c’est possible, dans le fichier /etc/passwd ou dans le fichier /etc/shadow les utilisateurs sans mot de passe
grep "^[:]*::" /etc/passwd
6°) Afficher à l’écran le fichier /etc/passwd trié selon l’ordre lexicographique inverse.
sort -r /etc/passwd
7°) Afficher à l’écran le fichier /etc/passwd trié selon le champ GID.
sort -t: +3n -4 /etc/passwd
8°) Afficher à l’écran le fichier /etc/passwd trié selon le champ GID et en cas d’égalité sur le numéro décroissant du champ UID.
sort -t: +3n -4 +2nr -3 /etc/passwd
Attributs de sécurité
1°) Déplacez vous dans l’arborescence d’UNIX pour étudier les répertoires /, /etc, /usr, /home et essayer d’y détruire des fichiers au hasard (vous n'êtes pas root!!).
2°) Rappeler les fonctions des commandes chmod, chgrp, umask, basename, file, du, size, od.
3°) Utiliser la commande umask pour définir le masque de création de fichiers 777.
Créer un fichier liste à partir de la commande ls -l > liste
Quels sont ses droits ?
Créer un répertoire tempo et constater ses droits. Conclusion.
4°) Refaire la question précédente avec le masque 000. Conclusion.
5°) Aller chez votre voisin et essayer de lui détruire un de ses fichiers ou répertoires. Conclusion ?
6°) Que pensez vous du masque 022 ?
7°) Afficher un dump du fichier .profile.
8°) Quels sont les droits du répertoire /tmp. Essayer d'y détruire un fichier au hasard. Conclusion ?
9°) Supprimer le bit t sur le répertoire /tmp (ou le positionner s'il est absent) et refaire la question précédente. Conclusion.
Gestion des PROCESSUS
Définitions
Processus sous UNIX
L'image d'un processusex "image d'un processus" en mémoire est l'ensemble des instructions et des données exécutables par un ordinateur dont un processus est l'exécution dynamique. Toutes les processus s'exécutent en multiplexage temporel sur le processeur fonctionnant en mode systèmeex "mode système" ou noyau (kernel) ou en mode utilisateurex "mode utilisateur" ou usager (user).
Mode système
Un processus en mode système exécute le code du noyau.
Plusieurs processus en mode système sont activables simultanément.
Le respect de l'intégrité du noyau interdit la préemption EX "préemption"  d'un processus en mode système par un autre. C'est la solution adoptée par le système UNIX traditionnel pour résoudre le problème de l'exclusion mutuelle et garantir le franchissement des sections critiques lorsque certaines interruptions sont masquées.
La durée de fonctionnement du mode système est limitée et sa terminaison "normale"  se traduit par un retour à l'état originel.
Unix et le temps réel
L'exécution d'un processus en mode système étant non préemptible, la reprise d'un traitement suite à une interuption peut être différée jusqu'à la fin de l'appel système courant. Deux conséquences essentielles :
le traitement résultant d'une interruption étant par nature différé, le système UNIX dans ses implémentations traditionnelles n'a aucune vocation temps réel.
Toute nouvelle fonctionnalité intégrée dans le noyau du système d'exploitation doit être la plus courte possible.
Mode utilisateur
Un processus en mode utilisateur exécute une application dans un mode non privilégié. Il accède aux ressources de la machine (sous contrôle) par l'utilisation d'appels système ce qui lui permet d'exécuter du code du noyau. Le changement de mode d'exécution doit impérativement être réalisé par matériel.
Exemple
La création d'un processus utilisateur, en shell se déroule comme suit : le processus système, l'interprète de commande shell, contrôle ce que l'utilisateur saisit au clavier. Un processus fils, appelé sous-shell, exécutant la commande est alors créé.
INCORPORER Designer \s \* fusionformat
Un processus shell peut lancer l'exécution de plusieurs processus en parallèle qui par définition sont ses fils.
Un processus shell s'exécute en général en mode utilisateur avec un niveau de priorité qui baisse selon le temps CPU consommé.
Remarque
Il ne faut pas confondre le mode d'exécution d'un processus (système ou utilisateur), sa priorité d'exécution et ses autorisations d'exécution.
Exemple
Un processus démon s'exécute en mode non privilégié, peutêtre avec les droits du super utilisateur.
Le processus de pagination s'exécute en mode privilégié avec une priorité fixe très élevée.
Changement de mode d'exécution
Trois situations provoquent la commutation du mode utilisateur au mode système :
un appel système d'un processus utilisateur fait un appel explicite à des services du noyauex "appel système",
une anomalie (trap EX "trap" ) d'exécution du processus utilisateur provoque un déroutementex "déroutement",
une interruptionex "interruption" système provoque l'exécution d'un traitement particulier dans le noyau.
Le passage en mode système est réalisé par :
matériel : il y a une commutation de l'espace d'adressage et le noyau dispose d'un ensemble d'instructions privilégiées supplémentaires.
logiciel : il y a une exécution d'un code spécifique.
Etats et transitions
Les évolutions des transitions des modes d'exécution des processus sont les suivantes :
INCORPORER Designer \s \* fusionformat
Le graphe des transitions ex "graphe des transitions "des modes d'un processus est un graphe orienté dont les noeuds représentent les états que peut prendre un processus et dont les arcs représentent les événements qui provoquent son changement d'état. Ceux-ci sont définis quand il existe un arc d'un état vers un autre état. Plusieurs transitions sont possibles à partir d'un état donné mais un processus n'en suivra qu'une selon l'événement produit. Au cours de son exécution, l'état d'un processus évolue selon son degré d'avancement ou son mode de fonctionnement.
Les principaux états sont les suivants :
SIDL le processus en cours de création est dans un état inconsistant donc inexécutable.
SRUN le processus est activable, en attente de sélection par l'ordonnanceur (le scheduler).
SUNPROC le processus est actif et détient la ressource processeur.
SSLEEP le processus est en attente d'événement (par exemple une attente de fin d'entrées/sorties). La primitive d'interruption dont l'exécution sera provoquée par l'événement attendu rendra activable le processus endormi.
SWAIT le processus est activable, en attente de terminaison d'un processus fils.
SZOMB le processus est zombi car son ex "zombie"exécution est terminé (appel système exit ). Les ressources attribuées (mémoire, disque, etc..) sont restituées. Il doit, avant de disparaître complètement, transmettre ses variables de gestion interne (état au moment de sa terminaison, temps cpu consommé, temps de résidence, etc.) pour prise en compte au processus père. Il occupe encore un point d'entrée de la table des processus proc qui sera restitué dès la transmission de ces informations.
SSTOP le processus est arrêté ou son exécution est contrôlée par un débogueur.
SXBRK le processus est en cours de commutation de contexte.
INCORPORER Designer \s \* fusionformat
Statut et transitions
Le statutex "statut" d'un processus représente sa localisation dans la mémoire (virtuelle) du système. Il évolue au cours de son existence et peut être l'un des suivants :
SLOAD chargé en mémoire, swappable,
SSYS processus crée par le système (swapper ou démon),
SLOCK chargé en mémoire centrale avant une opération de swapout,
SSWAP chargé en mémoire centrale après une opération de swapin,
STRC processus en mode trace (sous contrôle du débogueur),
SULOCK chargé en mémoire centrale, non swappable,
SPAGE en attente de rechargement de page (mécanisme de pagination),
SWEXIT en cours de terminaison,
SPHYSIO opération d'entrée/sortie physique en cours.
Le couple (état, statut), caractérisant un processus à un instant donné, peut être l'un des suivants :
1 le processus s'exécute en mode utilisateur.
2 le processus s'exécute en mode système.
3 le processus est chargé en mémoire, inactif, prêt devenir actif dès sa sélection par le ordonnanceur.
4 le processus est endormi en mémoire.
5 le processus est swappé out, prêt à être activé. Il doit être préalablement chargé en mémoire.
6 le processus est swappé out, endormi.
7 le processus, préempté par le noyau pour permettre à un autre processus de passer en mode système, passe du mode système au mode usager.
8 le processus vient d'être crée et son état est transitoire : il existe mais il n'est ni prêt ni endormi.
9 le processus exécute l'appel système exit, passe à l'état SZOMB.


Descripteurs associés a un processus
Un processus est décrit par les structures de données essentielles présentées ci-dessous.
Identificateur
Un processus a deux identifiants : son pid EX "pid"  et un index dans la table (système) proc[].
Le pid (process id) est un représenté par nombre entier positif borné.
Exemples
L'ordonnanceur (swapper) est souvent le processus 0 et le processus init (l'ancêtre de tous les processus) le processus 1. A l'exception du processus 0, tous les processus sont crées par d'autres processus par l'appel système fork.
Table Proc[]
Deux tables systèmes sont utilisées pour la gestion des processus : la table proc, résidente en mémoire centrale, et la structure U, swappable avec le processus.
La table procex "table système proc"[], résidente, contient la liste de tous les processus présents dans le système ainsi que les informations nécessaires au noyau pour en assurer la gestion permanente. Elle est décrite dans le fichier /usr/include/sys/proc.h et contient les vecteurs `'état de l'ensemble des processus en cours d'exécution. Pour chacun d'entre eux, on y trouve son état et son statut, ses temps d'exécution en mode utilisateur et en mode système, son identité (PID), sa priorité pour l'ordonnancement, les signaux reçus, en attente, masqués, son propriétaire, sa localisation en mémoire, sa taille, etc. En voici quelques champs extraits :
Champs et structures utilisées par l'ordonnanceur,
addr adresse de la table des pages,
usrpri priorité de l'utilisateur propriétaire du processus f(cpu, nice),
pri priorité courante du processus,
cpu durée de dernière utilisation du processeur central par le processus,
stat utilisé par l'appel système stat,
time temps de résidence en mémoire pour le calcul de la priorité par l'ordonnanceur,
nice utilisé pour les requêtes d'ordonnancement de l'utilisateur.
Gestion des signaux reçus
sig signaux suspendus en attente d'émission,
sigmask signal masqué,
sigignore signaux ignorés,
sigcatch signaux captés.
Informations statistiques
pgrp nom du processus leader de la session,
pid identificateur (pid) du processus,
ppid identificateur (pid) du processus père,
xstat exit status, utilisé par l'appel système wait,
wchan événement attendu par le processus.
Structure U
La structure Uex "structure U" est l'extension de la table proc contenant les informations swappables du processus nécessaires à son exécution. Un processus en mode utilisateur y a indirectement accès par utilisation de la commande shell ps.
Les informations qu'elle contient sont :
le mode d'exécution (noyau ou utilisateur),
l'état de retour des appels systèmes,
la table des descripteurs,
les informations comptables,
les informations de contrôle des ressources,
la pile d'exécution du processus.
La commande ps
La commande ps fournit des informations sur l'état et le statut des processus actifs.
Synopsis
ps [options]
Les principales options, quelquefois différentes dans les environnements System V et BSD, sont :
BSD SYSTEM V
a e tous les utilisateurs,
l l forme longue,
u f sortie orientée utilisateur,
x détache les terminaux.
Selon les options, les informations affichées sont :
F, indicateur du statut
01 en mémoire,
02 processus système,
04 entrée-sortie en cours,
10 processus swappé,
20 processus en mode pas à pas (trace).
STAT, indicateur d'état
0 inexistant,
D swappé,
S en sommeil (sleep) depuis moins de 20 secondes,
I en sommeil (interrupt) depuis plus de 20 secondes,
W en attente de la fin d'un processus fils (wait),
R en cours d'exécution (run),
Z terminé (zombi),
T arrêté (stop).
Autres champs
UID uid de l'utilisateur propriétaire du processus,
PID identificateur (entier) du processus,
PPID identificateur (entier) du processus père (créateur),
STlME heure de démarrage du processus,
PRI priorité courante du processus (plus ce nombre est élevé, plus la priorité est faible),
ADDR adresse en mémoire ou sur disque si le processus est swappé,
SZ nombre de blocs en mémoire de l'image du processus,
WCHAN événement attendu par le processus quand son état est S(sleep) ou W(wait), ou ,
TTY adresse logique du terminal associé à l'exécution du processus,
TlME temps d'exécution CPU,
COMMAND nom de la commande exécutée.
Exemple
F S UID PID PPID C PRI NI ADDR1 SZ WCHAN STIME TTY TIME CMD
31 S root 0 0 0 0 20 ded 0 f0219534 Jun 30 ? 0:00 sched
20 S root 1 0 0 39 20 254 36 e0000000 Jun 30 ? 0:00 init
31 S root 2 0 0 0 20 256 0 f00c215c Jun 30 ? 0:00 vhand
31 S root 3 0 0 20 20 258 0 f00b9074 Jun 30 ? 0:00 bdflush
20 S root 449 1 0 28 20 275 48 f01000cc 17:43:41 ? 0:00 -ksh
20 S root 224 1 0 26 20 3e4 88 f01cd8d6 17:43:14 ? 0:00 /etc/cron
Principes de fonctionnement des appels systèmes
Les mécanismes de base de gestion des processus : 
appel système,
matérialisation d'un événement par un signal,
gestion d'un événement par un processus (mécanismes de synchronisation et appels système correspondants) sont présentés dans le présent chapitre.
Programmation objet et appel système
L'appel systèmeex "appel système" est l'unique interface permettant à un processus utilisateur d'accéder aux ressources de la machine en exécutant en mode système une fonction du noyau. Il protège donc la machine vis à vis de la programmation d'application par un mécanisme d'encapsulation. Leur écriture est du domaine du programmeur système.
Utilisation
Du point de vue de l'utilisateur, un appel système est un appel de fonction qui provoque un changement de mode d'exécution par un mécanisme matériel adapté. L'interruption générée par l'appel système est traitée en mode noyau dans le contexte du processus utilisateur appelant par la primitive de bas niveau syscallex "syscall" qui se déroule en trois phases :
Transfert des arguments et changement de contexte
Transfert des arguments d'appel depuis la pile utilisateur vers la pile système ce qui permet au noyau de contrôler la validité de l'appel dans son espace d'adressage propre.
Choix de l'appel et exécution
Détermination de l'appel système et contrôle de la validité des arguments d'appel,
exécution éventuelle de l'appel système.
Fin d'exécution et retour en mode utilisateur
Deux situations :
succès de l'appel : le code de retour de l'appel système est nul et les valeurs sont transférés de la pile système à la pile utilisateur.
échec de l'appel : le code de retour de l'appel système vaut -1 et le champ erreur que l'utilisateur peut tester (variable errno) contient le code associé à l'erreur détectée.
Un processus revient du mode système avec le contexte du mode utilisateur au moment du changement de mode d'exécution. Le lien le plus direct entre le mode utilisateur et le mode système est la structure U, seule structure présente et stable dans les deux modes. On y stocke le résultat de l'appel système (code de retour) et le champ erreur. Le passage en mode système et le retour en mode utilisateur se déroulent suivant des conventions parfaitement établies. Voici par exemple le déroulement de l'appel système read.
Synopsis
int read(int fd, char *buf, unsigned nbyte);
Description
fd est le descripteur de fichier.
buf est l'adresse du tampon en mémoire contenant les données à transférer.
nbyte est le nombre de bytes à transférer.
INCORPORER Designer \s \* fusionformat
Appels système de création et terminaison de processus
Les mécanismes élémentaires de création et de terminaison de processus sont présentés cidessous.
L'appel système fork : présentation externe
La création d'un processus est réalisée par la duplication (clonage) de son créateur : l'image du processus fils crée est identique à celle de son créateur, le processus père. Les différences sont le pid et quelques champs de la table proc (time, etc.)
Synopsis
pid_t fork(void);
Le code de retour de l'appel système fork dans le processus père est la valeur du pid du processus fils crée. Dans le processus fils, le code de retour de cet appel système est nul ce qui permet d'écrire la séquence traditionnelle :
n=fork();
if (n "
}
Retour d'und fonction
Une fonction se termine après l'exécution de la dernière commande précédent l'accolade fermante.
La fonction interne return permet d'en sortir directement.
Synopsis
return ou return code_retour (code_retour est un entier)
Code de retour
La macro ? contient le code de retour d'une fonction.
Sa valeur représente soit le code de retour de la dernière commande exécutée, soit l'argument n de la fonction return.
Exemple d'un fichier .profile
:
# .profile
if [ `hostname` = hpserv ]; then
PATH=$PATH:/etc:/usr/etc:/usr/lib:/usr/bin/X11:/usr/contrib/bin:/usr/contrib/mitX11R5/bin:.
else
PATH=$PATH:/etc:/usr/etc:/usr/lib:/lib:/usr/bin/X11:.
fi
export PATH
if [ -z "$LOGNAME" ]; then
LOGNAME=`logname` # nom de l'utilisateur
export LOGNAME
fi
MAIL=/usr/spool/mail/$LOGNAME # boite aux lettres publiques
export MAIL
if [ -z "$PWD" ]; then
PWD=$HOME
export PWD
fi
if [ -f $HOME/.kshrc -a -r $HOME/.kshrc ]; then
ENV=$HOME/.kshrc
export ENV
fi
# affichage
eval `tset -m ansi:ansi -m $TERM:\?${TERM:-ansi} -r -s -Q`
export TERM
# si le contrôle de travaux est actif, invalidation du caractère ^Z
case $- in
m) stty susp '^z'
;;
esac
set -o ignoreeof #invalidation du ^D pour sortir
#démarrage selon la machine
if [ `uname` = soc ]; then
ORACLE_BASE=/home/dba/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/7.0.16;export ORACLE_HOME
ORACLE_SID=V7016
export ORACLE_SID
ORACLE_LINK=$ORACLE_HOME/cd_link
export ORACLE_LINK
ORACLE_TERM=ansi;export ORACLE_TERM
PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_BASE/dbtools/bin
MANPATH=$MANPATH:/home/dba/oracle/product/7.0.16/sqlplus/man
#environnement contextuel d'oracle
. oraenv
# gestion du jeu de caractères français (spécifique SCO)
LANG=french_france.8859
export LANG
fi
# gestion du prompt
PS1=""
export PS1
# autorisation pour les collègues (commande talk)
mesg y
# affichage X11 selon les machines
case $LOGNAME in
user1) DISPLAY=client1:0.0;;
user2) DISPLAY=client2:0.0;;
user3) DISPLAY=client3:0.0;;
user4) DISPLAY=client4:0.0;;
user5) DISPLAY=client5:0.0;;
user6) DISPLAY=soc:0.0;;
user8) DISPLAY=hpserv:0.0;;
esac
export DISPLAY
# démarrage X11 selon les utilisateurs
if [ `uname` = soc ]; then
case $LOGNAME in
user6) startx;;
esac
fi
# particularités Hewlett Packard
if [ `uname` = hpserv ]; then
# masque de protection
umask 022
# gestion des terminaux
LINES=24;COLUMN=70
export LINES COLUMN
fi
Exemple d'un fichier .kshrc
:
# .kshrc Commandes exécutées à l'intialisation de chaque shell
#
EDITOR=vi
FCEDIT=vi
VISUAL=vi
#choix de vi comme éditeur ligne par défaut
if [ -z "$VISUAL" -a -z "$EDITOR" ]; then
set -o vi
fi
#modification des variables k-shell
HISTSIZE=64
export EDITOR FCEDIT HISTSIZE VISUAL
#alias exportables
alias -x a='alias -x'
a la='ls -al | m'
a cu='cu -s 9600 -l tty2A -oe 0149143517'
a ll='ls -l | m'
a m='more'
a lm='ll | m'
a psm='ps -aelf | m'
a h='history'
a u='unalias'
a root='cd /'
a md='mkdir'
a rd='rmdir'
a dir='dosdir'
a del='dosrm'
a copy='doscp'
a lp='lp -o nobanner'
a su='/bin/su'
Présentation sommaire du C-shell
L'université de Berkeley a développé son propre interprète de commandes, le CShell, avec comme objectif d'offrir à l'utilisateur une syntaxe proche de celle du langage C et des possibilités plus étendues au niveau de 1'interprète de commandes (édition des lignes de commande, historique ...).
L'interprète de commandes tcsh EX "tcsh"  s'en inspire très fortement.
Le C Shell (/bin/csh) exécute les shells scripts suivants du répertoire de travail (s'ils existent) :
.loginEX ".login" à la connexion,
.logoutEX ".logout" à la déconnexion,
.cshrcEX ".cshrc" à chaque exécution d'un nouveau C Shell.
Les fonctions de base du Shell de Bourne restent valables en C Shell (tubes, redirections ...).
La syntaxe des structures de contrôle, des fonctions et des variables est différente.
Principales équivalences entre le Shell de Bourne et le C Shell
Shell de Bourne C Shell
for nom in liste foreach nom liste
do ... done ... end

case mot in switch (mot)
cas) ...;; case cas ...breaksw
esac endsw

if exp then ...fi if (exp) ...

if exp then if (exp) then ...
elif exp1 elseif (exp1)
then ... then ...
else ... else ...
fi endif

while exp while (exp)
do ... done ... end

. nom_de_fichier source nom_de_fichier

break [n] break [break [...]]

exit [exp] exit [(exp)]

export setenv

read a a=$<

times time

trap onintr
Principales commandes spécifiques au C Shell
alias définition d'alias,
bg (fg) processus en mode background (en mode foreground),
history affichage des n dernières commandes,
jobs affichage de la liste des travaux en cours,
limit définition des limites d'une commande (temps CPU, mémoire ..),
logout sortie du CShell (CTRL D),
notify notification de la fin d'un processus,
stop arrêt d'un processus en mode background,
unxxx opération inverse de xxx (avec xxx = alias, limit ou set)
Principales variables du C Shell :
argv équivalent aux variables $1, $2,... (utilisation : $argv[i])),
cwd répertoire courant,
history nombre de commandes empilées,
home similaire à la variable shell HOME,
ignoreeof le CShell ignore CTRL D (exécution du shell logout),
mail équivalent à la variable shell MAIL,
path équivalent à la variable shell PATH,
prompt équivalent à la variable shell PS1,
status état de la dernière commande exécutée.
Edition des lignes de commande
Il est possible d'éditer les lignes de commandes archivées dans l'historique de nombreuses façons (suppression de suffixes, modifications, style ed ...).
Une utilisation simple de ces possibilités est le rappel d'une commande sous la forme !n où n est un nombre ou une expression, identique à celle pratiquée en bash.
Exemple
!! répétition de la dernière commande,
!12 répétition de la 12 ième commande,
! -2 répétition de l'avant dernière commande,
!wri répétition de la dernière commande commençant par wri.
Exercices sur les fichiers d'environnement
Définition et suppression d'alias
Ajouter puis supprimer un alias, par exemple llm pour la commande ls -l | more. On traitera le cas particulier où l'alias est exporté à des sousshells (Korn Shell seulement).
Mécanisme d'historique
Rappel puis édition d'une commande à partir du mécanisme d'historique et d'un éditeur (par exemple vi).
Variables d'environnement
Utiliser les fonctions set et printenv (shell) et setenv (c-shell).
Fichiers de paramétrage
Selon l'interprète de commandes utilisé dans votre session de travail, analyser les fichiers :
.profile, .kshrc (ksh)
.login, .cshrc (csh)
.logout (les deux).
Divers
Tester les options ignoreeof, noclobber, filec, etc. dans les fichiers de configuration .profile, .login.
Ecriture d'utilitaires en Shell
Macro
1°) Ecrire un shell script qui affiche la liste de ses arguments (une commande pour cette action), quel que soit leur nombre.
2°) Afficher ses 3 premiers arguments quand ils existent et un message d'erreur sinon.
3°) Afficher tous ses arguments un par un (utiliser une boucle et la commande shift).
Changement de la langue de l'affichage de la date
L'exécution de la commande du shell date affiche la date et l'heure (en anglais en général, quelquefois en français). Ecrire un shell script qui, à partir du résultat d'exécution de la commande UNIX date affiche la date, selon un format similaire dans l'autre langue.
Indications : utiliser la commande set ainsi que la structure de contrôle case.
Pour l'affichage séparé des heures, minutes et secondes, utiliser à nouveau la commande set en redéfinissant le séparateur des mots par défaut du shell (variable IFS).
Renommage interactif des fichiers
Principe
utiliser la boucle du shell for pour afficher, un par un tous les fichiers du répertoire courant,
poser la question "Nouveau nom (ou ) ?" et lire la réponse (commandes du shell echo et read).
renommer le fichier selon la réponse ou traiter le fichier suivant si la réponse est "Return",
compléter l'exercice pour travailler dans le répertoire de travail de l'utilisateur (appel de la commande sans argument) ou dans un répertoire quelconque transmis comme son unique argument.
Principes généraux de fiabilisation
Le shell script doit vérifier la validité des informations utilisées pour le rendre plus robuste en effectuant les tests suivants :
test de la syntaxe d’appel (afficher un message si le nombre d'arguments d'appel est incorrect),
test de l'existence et de la lisibilité des fichiers ou répertoires transmis en arguments,
test de la préexistence d'une entrée cible (fichier ou répertoire).
Ainsi, la commande du shell mv f1 f2 peut écraser l'élément f2 si celui-ci existe lorsque la réponse de l'utilisateur correspond à une entrée existante. On peut donc :
soit refuser la commande et traiter l'élément suivant,
soit demander la confirmation avant d'écraser l'élément,
soit demander un autre nom.
Sauvegarde d'un répertoire avec reconstruction de la même arborescence
L'utilisateur ne dispose pas toujours d'une commande permettant de copier une arborescence complète.
Cet exercice fait intervenir la récursivité. Deux méthodes sont proposées : se déplacer éventuellement ou non dans l'arborescence cible. On pourra procéder par étapes :
copie du répertoire courant sur un répertoire donné, par exemple /tmp/p),
transmission des noms des répertoires à copier et de sauvegarde à l'appel de la commande,
test de l'existence des répertoires (si le répertoire de sauvegarde existe, prévoir une demande de confirmation ou un refus d'exécution de la commande).
Affichage de fichiers en ajoutant une bannière au début et à la fin
La bannière peut comporter, par exemple, la date, le nom de l'utilisateur et le nom du fichier (chemin absolu ou relatif). On peut procéder en 2 étapes : traiter d'abord un seul fichier, puis un ensemble de fichiers (utiliser alors une boucle for).
La commande devra pouvoir être utilisée avec un ou plusieurs arguments représentant le nom du ou des fichiers à visualiser.
On utilisera la commande écrite au § précédent pour obtenir la date en français et utiliser la commande UNIX sort pour ne conserver que le jour, le mois et l'année.
Recherche du nom d'un périphérique
Lorsqu'une anomalie survient sur un périphérique, un message est affiché sur la console système avec comme indication :
err on dev m,n
où m et n représentent respectivement le majeur et le mineur du périphérique. Il s'agit d'écrire une commande qui à partir de ces 2 éléments affiche le nom du périphérique concerné donc le nom du périphérique dans le répertoire /dev.
Utilisation : les 2 éléments sont transmis comme arguments à la commande et ils sont accessibles avec la commande ls l qui les affiche à la place du champ indiquant la taille (fichier ordinaire).
Indications
Il faut retrouver le bon format m,n selon la valeur de n. On constatera, après analyse du contenu du répertoire /dev que les formats des entrées sont variables selon les numéros du mineur.
Selon la méthode utilisée, il faut distinguer 7,x de 17,x par exemple.
D'autre part, il peut y avoir plusieurs entrées pour une valeur donnée de m et n (cas des liens).
Recherche du jour de la semaine
On souhaite connaître le jour de la semaine correspondant à une date donnée transmise comme argument à la commande sous la forme "jour mois année." (exemple 14 7 1789).
Indications
utiliser la commande UNIX cal,
étudier le format de sortie de cal et traiter à part la première ligne (le 3 correspond au même jour que le 10 ...).
Corrigés des exercices
Affichage de la date en francais
#!/bin/bash
# Affichage de la date en francais
# récupération des mots de la commande date dans $1, $2, ...
set `date`
case $1 in # conversion du jour
Mon) jour=Lundi;;
Tue) jour=Mardi;;
Wed) jour=Mercredi;;
Thu) jour=Jeudi;;
Fri) jour=Vendredi;;
Sat) jour=Samedi;;
Sun) jour=Dimanche;;
esac
case $2 in # conversion du mois
Jan) mois=Janvier;;
Feb) mois=Fevrier;;
Mar) mois=Mars;;
Apr) mois=Avril;;
May) mois=Mai;;
Jun) mois=Juin;;
Jul) mois=Juillet;;
Aug) mois=Aout;;
Sep) mois=Septembre;;
Oct) mois=Octobre;;
Nov) mois=Novembre;;
Dec) mois=Decembre;;
esac
quant=$3 # Sauvegarde du jour du mois
IFS=: # Modification du séparateur par
# défaut du shell
set $4 # récupération des champs de
# l'heure dans $1, $2, $3
# affichage du résultat
echo "Nous sommes le $jour $quant $mois à $1 H $2 mn $3s"
Renommage interactif des fichiers d'un répertoire
#!/bin/bash
# Renommage interactif des fichiers d'un répertoire
# Syntaxe : rename [repertoire]
#
# test du nombre d'arguments :
# 0 argument : utilisation du répertoire courant
# 1 argument : nom du répertoire dont les fichiers
# sont à renommer
# n argument : erreur de syntaxe
case $# in
0) Dir=`pwd`;;
1) if [ -d $1 ] # test si argument répertoire
then
Dir=$1
else
echo "$1 n'est par un répertoire";exit
fi;;
*) echo "Usage : $0 [répertoire]";exit;;
esac
# test d'accessibilité du répertoire
if [ ! -w $Dir -o ! -r $Dir ]
then echo "Accès interdit sur le répertoire $Dir"; exit
fi
# boucle de lecture des entrées
for i in `ls $Dir`
do
echo -n "$i : nouveau nom ou RETURN : " # question
read X # lecture reponse
case $X in # test reponse
"") continue;; # possible avec if [ "! X" ]
*) if [ -f $X -o -d $X ] # test existence réponse
then
echo "$X existe déjà, renommage refusé"
else
mv $Dir/$i $Dir/$X # renommage effectif
fi;;
esac
done
Sauvegarde d'un répertoire avec reconstruction de la même arborescence
#!/bin/bash
# Sauvegarde d'un répertoire avec reconstruction de
# la même arborescence
# Le fichier s'appelle svgdir
# pas de déplacement dans l'arborescence
# test de la syntaxe
# 2 arguments : répertoire à sauvegarder
# répertoire cible
case $# in
2) orig=$1;dest=$2;;
*) echo "Usage : $0 rép_orig rep_dest";exit
esac
# test d'existence du répertoire à sauvegarder
if [ ! -d $orig ]
then
echo "$orig n'est pas un répertoire "; exit
fi
# test d'existence du répertoire d'arrivé
if [ -d $dest ]
then
echo "$dest existe déjà " ; exit
fi
# création du répertoire cible
mkdir $dest
# boucle de lecture
for i in ` ls $1`
do
if [ -d $1/$i ] # test s'il s'agit d'un répertoire
then
dest=$2/$i # concaténation des noms des répertoires
orig=$1/$i # (arguments de la commande)
svgdir $orig $dest # si oui appel récursif
else
cp $l/$i $2 # sinon copie simple de fichiers
# (fin de récursivité)
fi
done
Affichage de fichiers en ajoutant une bannière
#!/bin/bash
# Affichage de fichiers en ajoutant une bannière
# en tête : date, nom de l'utilisateur, nom fichier
# affichage de la syntaxe et de la sortie
usage()
{
echo "Usage: basename $0 fichier1 [...]"
exit
}
# fonction d'affichage de l'en tête
# j, q et m sont positionnées par la commande UNIX
# set datefr.
# USER est une variable standard du shell.
# La commande basename permet de ne prendre en
# compte que le nom relatif d'un fichier.
entete()
{
echo " ------------- $j $q $m ------ $USER-----------`basename $f ` ------"
}
# test du nombre de paramètres
if [ $# -eq 0 ]
then usage
fi
#sauvegarde des arguments
file=$*
# récupération de la date en français
set `datefr`
j=$4;q=$5;m=$6
# boucle d'affichage des fichiers
for f in $file
do
entete
#test d'accessibilité des fichiers
if [ ! -f $f -o ! -r $f ]
then
echo "Le fichier $f est inaccessible"
else
cat $f
fi
entete
done
Recherche d'un périphérique à partir du majeur et du mineur
#!/bin/bash
# Recherche d'un périphérique à partir des
# Majeur et du Mineur
# 2 arguments transmis a la commande.
# test de la syntaxe : 2 paramètres obligatoires
if [ $# -ne 2 ]
then
echo"Usage $0 majeur mineur" exit
fi
# affichage du message initial
echo "Recherche du périphérique ayant pour Majeur : $1 et pour Mineur : $2"
# test de la valeur du mineur
# recherche de la chaine "M, m"
# 3 espaces si Mineur 9 et 99
if [ $2 -gt 99 ]
then
a=" $1,$2 "
elif [ $2 -gt 9 ]
then
a=" $1, $2"
else
a=" $1, $2"
fi
mineur=$2
# récupération dans le répertoire /dev
# des entrées contenant la chaîne recherchée
i=`ls -l /dev|grep "$a"`
# test de l'existence de telles entrées
if [ "$i" ]
then
set `echo "$i"`
# si oui récupération de toutes les entrées
if [ $mineur -gt 99 ]
then
while [ $# -gt 0 ]
do
Dev="$9 $Dev" # $9 est le 9ième champ correspondant au nom
if [ $# -gt 9 ]
then
shift 9 # entree suivante
else break
fi
done
else
while [ $# -gt 0 ]
do
Dev="${10} $Dev"
# ${10} est le 10ième champ correspondant au nom
if [ $# -gt 10 ]
then
shift 10 # entree suivante
else break
fi
done
fi
echo "Il s'agit de $Dev"
# affichage des résultats
echo
else
echo "Pas de périphérique concerné"
fi
Exemple d'exécution
Recherche du périphérique ayant pour Majeur : 2 et pour Mineur : 52
Il s'agit de sctfdm0 rfd096ds15 rfd096 rfd0 fd096ds15 fd096 fd0
Recherche du périphérique ayant pour Majeur : 52 et pour Mineur : 4
Il s'agit de ega
Recherche du périphérique ayant pour Majeur : 11 et pour Mineur : 255
Il s'agit de ev_mrg
Recherche du jour de la semaine pour une date donnée
#!/bin/bash
# Recherche du jour de la semaine d'une date donnée
# test de la syntaxe : arguments : jour mois année
case $# in
3) ji=$1;m=$2;a=$3;;
*) echo "erreur de syntaxe : `basename $0` jour mois année"
exit;;
esac
# traitement particulier pour les 7 premiers jours
# cas des semaines incomplètes
# ji : sauvegarde de l'argument de la commande
# (pour l'affichage du resultat)
if [ $1 -lt 8 ]
then j=`expr $1 + 7`
else j=$1
fi
# décalage de trois champs pour éliminer ceux
# contenant les paramètres d'appel de la commande
# ce qui est utile si la commande ci-dessous a un
# résultat nul (date incorrecte)
shift 3
# récupération de la ligne contenant le jour
# la commande tail élimine les 2 premières lignes
# affichées par la commande UNIX cal (mois an et
# les jours S M ...)
# la redirection >/dev/null élimine de l'écran le
# resultat de la commande set
# (affichage des paramètres) dans le cas d'une
# date incorrecte
set `cal $m $a | tail +2 | grep $j ` >/dev/null
# conversion du jour
case $j in
$1) J=Dimanche;;
$2) J=Lundi;;
$3) J=Mardi;;
$4) J=Mercredi;;
$5) J=Jeudi;;
$5) J=Vendredi;;
$7) J=Samedi;;
*) echo "Date incorrecte $ji $a $a" ;exit;;
esac
# affichage du résultat
echo "Le $ji $m $a est un $J"
Principales commandes d'UNIX
La liste ci-dessous présente sommairement les principales commandes UNIX dans les environnements SystemV ou BSD.
adb metteur au point,
apply exécution d'une commande sur plusieurs arguments,
ar archiveur (gestionnaire de bibliothèques),
as appel de l'assembleur,
at exécution différée d'une commande,
awk manipulateur de fichiers,
banner affichage d'une bannière,
basename affichage du chemin d'accès relatif d'un fichier,
bc calculateur,
cal calendrier,
calendar agenda,
cat affichage du contenu d'un fichier texte,
cb C beautifuler : enjoliveur de programmes C,
cc compilateur C,
cd déplacement dans l'arborescence,
chgrp modification du groupe d'un fichier,
chmod modification des droits d'accès d'un fichier,
chown modification du propriétaire d'un fichier,
clear effacement de l'écran,
cmp comparaison de fichiers,
compress compression de fichiers,
cp copie de fichiers,
cpio archivage,
cpp préprocesseur C,
crontab exécution d'activités périodiques,
crypt cryptage de fichiers,
csh appel de l'interprète de commandes C Shell,
cu utilitaire de communication,
cut sélection de champs dans un fichier,
cxref cross-référenceur (enrichit la table des symboles via cpp),
date affichage et modification de la date,
dbx débogueur,
dc calculateur de bureau,
dd copie physique d'un média,
df état des systèmes de fichiers montés,
diff comparaison de fichiers,
du affichage (récursif) du nombre de blocs utilisés par un répertoire,
echo affichage d'une chaîne de caractères,
ed éditeur ligne,
egrep recherche d'occurrences de texte dans un fichier,
emacs éditeur plein écran,
env affichage des variables d'environnement,
eqn formateur de symboles mathématiques (pour fichier troff),
expr évaluation d'expressions arithmétiques,
exit déconnexion,
f77 compilateur fortran,
fgrep recherche d'occurrences de texte dans un fichier,
file affichage du type des fichiers,
find recherche de fichiers dans l'arborescence selon des critères définis,
finger information sur les utilisateurs ,
from indicateur de l'origine du courrier,
grep recherche d'occurrences de texte dans un fichier,
head affichage des premières lignes (texte) d'un fichier,
id affichage de l'uid et du gid de l'utilisateur,
ipcrm suppression d'un IPC (Inter Process Communication),
ipcs affichage de l'état des IPC (Inter Process Communication),
join opérateur relationnel de jointure,
ksh appel de l'interprète de commandes Korn shell,
kermit logiciel de communications en mode asynchrone,
kill émission d'un signal à un processus,
last historique des dernières connexions,
lastcomm historique des dernières commandes,
ld éditeur de liens,
leave demande d'invitation à se déconnecter (signal sonore et message envoyé à une heure donnée),
lex analyseur syntaxique,
line lecture d'une ligne,
lint analyseur syntaxique C,
lock verrouillage d'un terminal,
login connexion,
logout déconnexion,
logname affichage du nom de login,
look recherche dans un fichier ou un dictionnaire,
lp/lpr impression (SystemV / BSD),
lpstat/lpq Etat du spoule impression (SystemV / BSD),
lprm destruction d'une entrée dans le spoule (BSD),
ls informations sur les fichiers,
mail agent utilisateur de la messagerie électronique,
make gestionnaire d'applications (génie logiciel et administration),
makekey création d'une clé cryptée,
man documentation en ligne,
mesg autorisation ou non de réception de messages envoyés par la commande write, talk ou wall,
mkdir création de répertoire,
more affichage par page,
mv renomme ou déplace un fichier ou un répertoire,
newgrp changement du groupe courant (à condition d'être déclaré dans plusieurs groupes),
news affichage des nouvelles,
nice modification de la priorité d'exécution d'un processus,
nm affichage de la table des symboles de fichiers objets ou exécutables,
nohup exécution d'une commande ignorant les signaux SIGHUP et SIGQUIT,
nroff formateur de texte,
od affichage d'un dump,
pack compression d'un fichier,
passwd modification du mot de passe (avec le service NIS, utiliser yppasswd),
paste fusion de fichiers,
pack affichage du contenu d'un fichier compressé,
pr affichage de fichiers formatés,
ps affichage de l'activité des processus,
pwd affichage du répertoire courant,
ranlib réorganisation d'une bibliothèque,
rev inversion des lignes dans un fichier,
rm suppression de fichiers,
rmdir suppression de répertoire(s),
sar statistiques d'activité système,
sccs gestion des versions des fichiers source,
script enregistrement du déroulement de la session dans un fichier,
sdb metteur au point,
sed éditeurs de flots non interactif,
size affichage des tailles des segments d'un fichier objet ou exécutable,
sleep suspension d'exécution,
sort tri de fichiers texte,
split partitionnement de fichiers,
strip suppression de la table des symboles d'un fichier objet ou exécutable,
stty affichage ou modification des attributs d'un terminal,
strings recherche de chaînes de caractères dans un fichier binaire,
su changement de l'identité courante,
sync vidage du cache sur disque,
tail affichage des dernières lignes d'un fichier,
talk dialogue interactif entre deux utilisateurs connectés,
tar sauvegarde,
tbl metteur en forme de tableaux pour nroff et troff,
tee filtre à 2 sorties,
test évaluation d'expression,
time affichage du temps d'exécution,
touch création d'un fichier vide ou changement de la date de dernière modification (make),
tput gestion des attributs vidéos d'un terminal,
tr translation de caractères,
troff photocomposeuse,
tsort tri d'un fichier texte selon un champ,
tty affichage du terminal logique associé au poste de travail,
umask définition des droits d'accès par défaut des fichiers,
uname affichage du nom du système hôte (exemple : uname -a ),
uncompress décompression d'un fichier compressé par compress,
users affichage de la liste des utilisateurs connectés (rusers dans un réseau),
uucp copie de fichiers par le service uucp,
uudecode décodage d'un fichier binaire encodé par uuencode,
uuencode encodage d'un fichier binaire sous forme d'un fichier texte pour transmission par le courrier électronique,
uulog affichage de l'activité uucp,
uuname affichage du nom de site uucp,
uux exécution d'une commande distante par uucp,
vi éditeur pleine page,
w affichage des commandes exécutées par les utilisateurs,
wc comptage du nombre de mots, de caractères, des lignes d'un fichier,
who affichage des utilisateurs connectés,
whoami affichage de l'identité de l'utilisateur,
write émission d'un message interractif à un utilisateur,
yacc analyseur grammatical.
Notions élémentaires sur l'administration
Rôles de l'administrateur
Historiquement, le système UNIX a souvent été considéré comme peu sécurisé. Cette mauvaise image est imméritée. Il a toujours été possible de sécuriser un système UNIX en utilisant les outils standards d'administration comme nous allons le voir. Le point essentiel est que la sécurité d'un système dépend essentiellement de l'administrateur. Il doit définir un compromis entre l'ouverture naturelle du système et sa sécurité.
L'administrateur d'un système doit assurer les services suivants :
mise en place et évolution du système, sur le plan matériel et logiciel,
surveillance et sécurisation du système,
connaissance des outils d'administration,
définition et/ou utilisation des procédures d'installation,
procédures de nettoyage,
élimination des redondances,
sauvegardes,
mise à jour de la documentation disponible,
mise en place éventuelle de la comptabilité et analyse.
Il doit en outre connaître les outils et les procédures standards d'administration et d'installation.
Classes d'administrateurs et d'utilisateurs
Comme nous l'avons, il est important de définir des groupes d'utilisateurs différents, selon les types de travaux qu'ils effectuent.
Sur les versions d'UNIX antérieures à SYSTEM V R4, le super utilisateur a tous les droits ce qui est aujourd'hui considéré comme un privilège exorbitant. Une solution est la définition de classes de privilèges permettant de limiter les droits d'un utilisateur à un type d'application donné. On distingue l'administrateur des mots de passe, celui de la comptabilité...
Il est possible de restreindre l'accès à certaines commandes, par exemple en leur adjoignant un mot de passe. Une autre possibilité est de définir des groupes d'utilisateurs.
Les différents utilisateurs système sont caractérisés de la façon les suivante :
Login uid Fonction
root 0 accès à l'intégralité du système
sys 3 propriétaires de certains fichiers systèmes
bin 2 propriétaire de la plupart des commandes
adm 4 propriétaire de certains fichiers d'administration
uucp 5 propriétaire d'objet et de données spoulées pour uucp
nuucp 6 utilisé par des utilisateurs distants
daemon 1 gestion des processus démons et différés
lp 71 propriétaires des objets et des fichiers pour impression.
Gestion des Mots de passe
Stratégie
Obligation d'utilisation
Il est important d'obliger un utilisateur à avoir un mot de passe.
Le mécanisme dit d'aging, intégré sur toutes les plates-formes actuelles
Choix du mot de passe
Il ne doit pas être trivial. Il faut donc proscrire son propre nom, les prénoms usuels, les numéros de sécurité sociale...Un tel mécanisme est appelé "contrôle de l'obviousnesseté" du mot de passe.
Gestion du mot de passe
Le mot de passe doit être facile à retenir.
Il doit comporter au moins six caractères non triviaux (majuscules, minuscules, chiffres, caractères de contrôle...).
Il doit être changé périodiquement.
Modification du fichier /etc/passwd
Le mot de passe crypté d'un utilisateur, contenu dans le fichier /etc/passwdex "/etc/passwd", accessible à tous en lecture est camouflé dans un fichier caché, par exemple /etc/shadowex "/etc/shadow" sous UNIX SYSTEM V Release 4.
Mot de passe non trivial
Il est possible d'obliger les utilisateurs à utiliser un chiffre ou des caractères de contrôle dans les mots de passe.
Le fichier /etc/shadow
Mécanisme d'aging
Il est possible d'obliger les utilisateurs à changer de mot de passe de façon périodique. On peut même s'assurer qu'ils n'utilisent pas un ancien mot de passe considéré comme périmé.
Le fichier /etc/shadowex "/etc/shadow", s'il existe, est consulté pour la validation des mots de passe. Il est accessible par le superutilisateur en lecture seulement .
Les champs du fichier /etc/shadow
login_name,
mot_de_passe_crypté sur treize caractères,
date_de_dernière_modification du mot de passe en jour depuis le 1er Janvier 1970,
intervalle en jour minimum entre deux changements,
nombre maximum de jours de validité,
masque d'audit,
chaîne de caractère indiquant si le login est anonyme.
Exemple
root:h0xhfsg9NV3pa:7116:::normal:
daemon:NONE:6645:::normal:
...
joe:4v92wsUm2BVMo:7116:7:28:normal:
Mécanisme d'aging
La date du système doit être correcte. Le principe est d'obliger un utilisateur dont le mot de passe n'est plus valide à en indiquer un nouveau.
Le mécanisme peutêtre désactivé selon les utilisateurs.
Il n'est pas utilisé si :
le nombre de jours entre les changements de mot de passe est nul.
le nombre de jours d'existence du mot de passe est supérieur à celui de sa validité.
si les quatrième et cinquième champs sont vides.
si les opérations d'écriture dans le fichier /etc/shadow sont supprimées.
Masque d'audit
Le masque d'auditex "masque d'audit" indique le type d'événement à surveiller. Le masque usuel permet de connaître l'activité normale d'un utilisateur à savoir les connexions effectives, les tentatives d'utilisation de la commande suex "su", les problèmes d'autorisation sur les fichiers ouverts.
Login anonyme
Le login anonymous est utilisé pour des connexions ouvertes sur le monde extérieur.
Utilisateur synonyme de root
Il est possible de définir un utilisateur synonyme de root dans le fichier /etc/passwd en lui donnant l'uid et le gid 0. Chacun des administrateurs ne se connectera pas sous l'uid root mais sous son identificateur propre et avec son mot de passe personnel. Le fichier d'audit /var/adm/sulog permet de savoir qui a fait quoi et quand.
Il faut éviter de travailler sous l'uid root quand cela n'est pas nécessaire car une erreur peut ne pas pardonner (suppression de fichiers par exemple).
Terminal sécurisé et login root
Il faut interdire la possibilité pour l'administrateur de se connecter directement (login root) sauf sur la console système.
Poste de travail sécurisé
Un terminal est dit sécurisé si le super utilisateur peut s'y connecter directement. Ce droit est défini, par exemple à partir du mot clé secure dans le fichier ttytab ou du fichier ttys.
La console système est le seul terminal depuis lequel la connexion directe en tant que root est autorisée. Elle doit être allumée en permanence car quand un utilisateur exécute la commande /bin/suex "/bin/su", un message s'y affiche
Groupe su
Tout candidat au login root doit impérativement utiliser la commande /bin/suex "/bin/su", dont l'usage doit être restreint à un groupe d'utilisateurs de la façon suivante :
création d'un groupe su dans le fichier /etc/group contenant la liste du groupe d'utilisateurs autorisés,
attribution du fichier /bin/suex "/bin/su" au groupe su (commande shell chgrp).
modification éventuelle du propriétaire du fichier à l'aide de la commande chownex "chown",
modification des droits d'accès et d'utilisation par la commande chmodex "chmod".
Nous reviendrons sur toutes ces commandes ultérieurement.
Audit de la commande su
Le fichier /var/adm/sulog peut contenir l'historique des utilisations de la commande su. On peut donc identifier les pirates potentiels car c'est en général le premier moyen utilisé.
Remarque
Par défaut, tout utilisateur détenteur du mot de passe de root peut exécuter la commande su sur n'importe quel poste de travail.
Verrouillage du terminal
Il ne faut jamais laisser l'accès libre à un terminal quand une session de travail est ouverte. Des utilitaires tels xlockex "xlock" permettent un verrou temporaire d'accès contrôlé par mot de passe.
Surveillance des lignes d'accès
Sur UNIX SYSTEM V, il est possible d'ajouter un mots de passe complémentaire nécessaire à tout accès par modem au système (fichier /etc/dialupex "/etc/dialup" et /etc/d_passwdex "/etc/d_passwd").
Limitation de l'accès physique
Une protection élémentaire de l'accès à la machine permet déjà d'offrir un certain niveau de sécurité.
Démarrage et arrêt du système
A la mise sous tension (ou après un arrêt du système) débute la phase d'initialisation (bootstrapex "bootstrap") décomposée en trois parties :
le chargement initial,
le passage en mode multi-utilisateurs,
la mise en place du mécanisme de connexion des utilisateurs.
Chargement initial
A la mise sous tension, un programme, contenu dans une mémoire morte (ROM), contenant un moniteur de test du matériel et permettant un dialogue limité avec la console système est exécutée.
L'opérateur peut définir le disque de démarrage en indiquant son numéro physique (sur certains systèmes, cette opération est automatique à la mise sous tension, le choix du disque étant réalisé à partir d'interrupteurs). Le bloc 0 du disque (boot de premier niveau) est lu, chargé en mémoire et exécuté. C'est un programme permettant de charger un fichier. Une copie de ce bloc est stockée dans un fichier (boot ou diskboot) du répertoire /etc) pour permettre l'initialisation d'un nouveau disque. Le bloc 0 n'est pas directement accessible avec les commandes du système de gestion des fichiers. Il doit être copié avec une commande par exemple dd ou crée par la commande mkfsex "mkfs".
Le programme contenu dans le bloc 0 demande à l'opérateur le nom du noyau Unix (en général unix ou vmunix) à charger qui exécute alors les opérations suivantes :
reconnaissance de la configuration matérielle (capacité mémoire, contrôleurs installés...) et diverses initialisations,
création du processus 0 (processus schedex "sched" sur les versions ATT, swapperex "swapper" sur les versions BSD),
création du processus 1 (processus /etc/initex "/etc/init").
L'algorithme de chargement du noyau permettant le démarrage du système est le suivant:
Initialisation des structures de données du noyau
Montage du système de fichier / (root)
Création de l'environnement du processus 0
Appel de fork pour la création du processus 1
/* processus 1 */
Allocation des régions mémoire
Attachement d'une région au processus init
Copie du code du noyau dans l'espace utilisateur
Passage en mode mono-utilisateur
Exécution du processus /etc/init
/* processus 0 */
Création des processus système
Appel du processus swapper
sleep(évènement: il y a quelque chose à faire)
INCORPORER Designer \* fusionformat \s
Le fichier inittab
La première action du processus init est la création d'un processus shell attaché à la console système : le système est alors en mode monoutilisateur (single userex "single user") pour activer diverses fonctions avant le passage en mode multiutilisateurs, telles la mise à jour des fichiers de configuration des terminaux, tests du système de fichiers, etc...
Ce shell script appartient au super-utilisateur et n'est exécutable que par ce dernier ce qui peut poser des problèmes de sécurité si un simple utilisateur doit mettre la machine sous tension. Plusieurs solutions à ce problème :
un passage automatique en mode multi-utilisateur (c'est le cas avec la version UNIX System V si le fichier /etc/inittabex "/etc/inittab" comporte la sortie initdefault),
un passage automatique en mode multi-utilisateurs avec une temporisation ce qui permet par un code de contrôle de rester en mode mono-utilisateur,
un passage en mode mono-utilisateur avec demande du mot de passe de l'administrateur root à la console.
Le processus init lit ses paramètres dans le fichier /etc/inittab, ex "/etc/inittab"structuré en lignes constituées des quatre champs selon le format suivant :
id:niveau:action:commande
Ces différents champs ont la signification suivante :
id : chaîne de caractères arbitraire utilisée pour différencier les lignes.
niveau : suite de un ou plusieurs entiers correspondant à un niveau d'exécution. Au démarrage du système, l'opérateur précise un niveau (S pour le mode mono-utilisateur, et de 0 et 6 pour le mode multiutilisateurs) ce qui permet d'avoir le choix entre différentes configurations à chaque initialisation du système (ou suite à un changement de niveau avec la commande init). Seules sont prises en compte les lignes ayant dans ce champ le même numéro que celui du lancement. Un champ nul provoque l'exécution des niveaux 0 à 6.
action : mot clef précisant quand et comment un processus doit être exécuté.
commande : nom de la commande à exécuter avec ses arguments.
Les actions reconnues sont :
bootwait action exécutée au démarrage seulement,
initdefault définition du niveau de démarrage par défaut,
off pas d'exécution de la ligne de commande,
once exécution unique du processus sans attente ni relance,
ondemand analogue à l'action respawn,
powerfail exécution à la réception d'un signal powerfail (rupture du secteur),
powerwait action wait exécutée uniquement à réception du signal powerfail,
respawn création du processus s'il n'existe pas et relance s'il se termine (boucle infinie),
sysinit exécution préalable à tout accès à la console (en général lié à la génération),
wait exécution et attente de terminaison pour exécution de toute commande ultérieure.
Exemple
conf::bootwait:/etc/conf &>/dev/console 2>&1
rc::wait:/etc/rc 1>/dev/console 2>&1
pf::powerfail:/etc/powerfail 1>/dev/console 2>&1
ligne1:2:respawn:/etc/getty -Tvt100 tty01 19200
ligne2:2:respawn:/etc/getty -Tvt100 tty01 19200
Shells scripts de passage en mode multi-utilisateurs
Le passage manuel en mode multi-utilisateur est réalisé suite à l'émission du signal CTRL D, qui réveille le processus init qui doit initialiser les ressources logicielles du système.
BERKELEY
Dans les versions BSD, le processus créé par init exécute le shell script /etc/rcex "/etc/rc". Suivant les implémentations, il est constitué des fichiers /etc/rc.boot (démarrage), /etc/rc.local (démarrage des services locaux), /etc/rc.inet (démarrage des services réseaux).
Le fichier /etc/rcex "/etc/rc" est un shell script pouvant être adapté par l'administrateur en fonction de la configuration du site.
Les versions d'UNIX System V utilisent le fichier /etc/inittab (cf ciaprès), dont chaque ligne décrit l'exécution d'une commande.
SYSTEM V
Le schéma est le suivant :

INCORPORER Designer \* fusionformat \s
Actions exécutées pour le passage en mode multiutilisateurs
Actions exécutées
Les différentes actions qui y sont réalisées sont :
la réinitialisation de divers fichiers d'administration (par exemple le fichier /etc/utmpex "/etc/utmp", contenant la liste des utilisateurs connectés, ou le fichier contenant la liste des systèmes de fichiers montés...),
la mise à jour de la date,
l'exécution de tests de cohérence des différents systèmes avec la commande fsck (File System Checker). Les systèmes de fichier à monter sont en général enregistrés dans un fichier du répertoire /etc (fstab (Linux), vfstab et dfstab (Sun), checklist (Sco),etc.)ex "etc/checklist", utilisé lors de l'appel de fsckex "fsck" sans argument,
le montage des différents systèmes de fichier avec la commande shell mountex "mount",
l'effacement des répertoires contenant des informations temporaires (/tmpex "/tmp" et /usr/tmpex "/usr/tmp") et des fichiers de verrouillage (imprimantes, communications...),
le lancement (éventuel) des utilitaires de comptabilité (acctex "acct", startupex "startup"),
le lancement (éventuel) des processus démons (traduction étrange du mot daemon, acronyme (anglosaxon) de differed auxilliary elementary monitor) des services cron (scheduler)ex "cron" et update (gestion du cache logiciel)ex "update",
le lancement du spouler d'imprimante(s),
le lancement des logiciels de communication (TCP/IP, NFS, NIS, Xwindow, ARP, etc.)ex "uucp",
le lancement (éventuel)de divers utilitaires (statistiques, performances...),
la sauvegarde et la réinitialisation de certains fichiers d'administration, en particulier les fichiers d'audit, qui enregistrent l'activité du système et qui grossissent régulièrement. Ils doivent être purgés de temps en temps (par exemple wtmpex "wtmp", cronlogex "cronlog", sulogex "sulog"...) après sauvegarde éventuelle.
Ordre
L'ordre des opérations est important, par exemple pour le montage des systèmes de fichiers, il faut monter le répertoire /usrex "/usr" avant d'y monter le système de fichiers contenant le répertoire /usr/spoolex "/usr/spool") ou pour l'effacement de certains fichiers (effacer le fichier cronlogex "cronlog" avant le lancement des services cron...).
Arrêt du système
Importance du cache logiciel
Compte tenu du mécanisme de gestion des sorties/sorties en mode bloc (utilisation du cache), un arrêt brutal sans précaution risque d'engendrer une incohérence des systèmes de fichiers.
La commande syncex "sync" (exécutée périodiquement par le processus démon update effectue la copie des informations modifiées en mémoire sur le disque. Il est donc indispensable que cette commande soit exécutée avant d'arrêter le système. Mais pour qu'elle soit pleinement efficace, il faut que tous les processus actifs soient arrêtés avant son exécution (la commande killallex "killall" permet d'arrêter tous les processus actifs sauf celui qui exécute cette commande).
Commandes usuelles
Une commande telle que init s ou haltex "halt" peut alors être utilisée pour revenir au mode mono-utilisateur ou à un mode moniteur. En pratique, tous les systèmes disposent d'une commande d'arrêt en douceur du système shutdownex "shutdown" constituée des fonctions suivantes :
avertissement à tous les utilisateurs connectés de l'arrêt prochain (commande wallex "wall"). Le message envoyé précise le temps avant l'arrêt et est en général réémis juste une minute avant l'arrêt,
avertissement aux utilisateurs qui se connectent de l'arrêt prévu par modification du fichier motd,
démontage des systèmes de fichier montés,
destruction de tous les processus actifs (commande killallex "killall"),
mise à jour du disque (commande syncex "sync"),
retour en mode mono-utilisateur,
arrêt des démons acct, spooler....
Redémarrage
Sur certaines implémentations, la commande fastboot permet de redémarrer, sans vérification des systèmes de fichiers. Dans le monde ATT, son utilisation n'est pas recommandée car elle ne vide pas le cache et provoque des problèmes au démarrage.
Les commandes reboot, init 0, init 5 ou init 6 permettent de redémarrer sous System V.
Protection, droits d'accès et cryptage
On distingue trois niveaux de protection au niveau des droits d'accès :
systèmes de fichiers,
répertoires,
fichiers.
Ils permettent de définir des anneaux de protection de plus en plus fins.
Classification des fichiers selon leur utilisation
Une classification préliminaire est nécessaire : il faut distinguer les fichiers systèmes privés ou publics, les fichiers utilisateurs...
Une utilisation rigoureuse des attributs rwx assure déjà un premier niveau de protection. Il suffit de choisir rigoureusement l'utilisateur propriétaire, son groupe, ainsi que les droits d'exécution convenables.
Un audit complet du système au moment de la génération peutêtre nécessaire si le constructeur est laxiste (ce qui est de plus en plus rare). Que penser d'une commande mkfs avec les droits rxrxrx (exemple vécu) ?
Fichiers d'administration système
Ils ne doivent être accessibles qu'au superutilisateur et éventuellement aux membres de son groupe. Ils ont au mieux les droits rwxrwx.
Commandes publiques
Elles doivent bien évidemment être protégées en lecture et en exécution avec les droits rwxrwxrx
Fichiers utilisateurs
Ils devraient avoir les droits rwxrx
Fichiers de configuration de l'environnement de l'administrateur
Ils doivent avoir les droits rwxpour empêcher quiconque de les modifier, éventuellement à l'insu de leur propriétaire.
Accès aux répertoires
Rappelons que les bits rwx sur un répertoire ont une signification différente des droits sur les fichiers :
le bit r donne l'accès en lecture
le bit w donne le droit d'écriture dans le répertoire ce qui permet éventuellement d'écraser un fichier, même protégé en écriture. C'est aussi un droit de saccage.
le bit x donne le doit de passage.
On peut ainsi autoriser un accès total, ou partiel à un arborescence.
Cryptage
La commande crypt permet de crypter, selon une clé personnelle, un fichier. Il est possible de crypter des fichiers, même en utilisant un éditeur standard tel vi ou ed.
Ordonnancement de travaux
Description des services cron
L'ensemble des services cronex "cron" permet d'exécuter un action déterminée à une date fixée. Il crée un processus pour exécuter les commandes arrivées à échéance, puis s'endort pour la durée le séparant du prochain travail.
Il est constitué de trois sous-systèmes :
service d'exécution répétitif à heure fixe avec la commande /etc/crontabex "/etc/crontab",
service d'exécution unique à heure fixe avec la commande /etc/atex "/etc/at",
service d'exécution différé avec la commande /etc/batchex "/etc/batch"
Le processus démon /etc/cron est le gestionnaire des soussystèmes précédents.
Le répertoire /usr/lib/cronex "/usr/lib/cron" contient les fichiers d'administration du service (utilisateurs autorisés, historique, restrictions...).
L'historique des travaux effectués est conservé dans le fichier /usr/lib/cron/log.
Les caractéristiques des files d'attente associées sont décrites dans le fichier /usr/lib/cron/queuedefsex "/usr/lib/cron/queuedefs".
Le répertoire /usr/spool/cronex "/usr/spool/cron" contient les tables des actions à exécuter.
INCORPORER Designer \* fusionformat \s
La commande at
La commande atex "at" permet d'exécuter des commandes lues sur l'entrée standard une seule fois à une date et une heure fixée.
Spoule d'attente
Le noyau répond en indiquant le numéro du travail enregistré dans le fichier /usr/spool/cron/atjobsex "/usr/spool/cron/atjobs" qui contient la description de l'environnement ainsi que les actions à exécuter, mises en forme à partir du fichier .proto.x (où x représente la file).
ACL
L'accès à la commande at est contrôlé par les fichiers at.allowex "at.allow" et at.denyex "at.deny" dont l'utilisation est similaire à celle de cron.allow et cron.deny.
Notification du résultat
L'utilisateur est averti du résultat et des erreurs par la messagerie électronique, sauf s'il a redirigé la sortie standard d'affichage et celle des messages erreurs.
Synopsis
at heure [date] [+ incrément]
at -r [job_id]
at -l [job_id]
at -qheure [date] [+ incrément]
Description
heure est indiquée sous la forme d'un ou de deux chiffres représentant les heures, ou de quatre chiffres représentant les heures et les minutes ou encore sous la forme x:y représentant x heures et y minutes. De plus un suffixe am ou pm peut être ajouté. Les mots clés noon, midnight, now et next sont autorisés.
date est un argument optionnel qui peut être indiqué soit sous la forme le nom du mois (éventuellement abrégé à 3 caractères) suivi du jour et éventuellement de l'année séparée par une virgule, soit sous la forme du jour de la semaine (qui peut aussi être abrégé). Les arguments today ou tomorrow sont autorisés. Si la date n'est pas précisée, le système enregistre la commande pour le jour courant si l'heure indiquée est postérieure à l'heure courante, et pour le lendemain dans le cas contraire. Le noyau procède de façon analogue pour la date si l'année n'est pas précisée. Enfin si la date demandée est antérieure à la date courante, la réponse devient Sorry too late ...
incrément est un argument facultatif composé d'un nombre suivi d'un suffixe parmi minute, hour, today, week, month, year qui sera ajouté à l'heure et/ou à la date indiquée.
La commande at -l indique la liste des travaux en instance ainsi que leur propriétaire, le numéro et la date d'échéance.
La commande at -r num permet de détruire le travail ayant pour numéro num.
La commande at-q permet de choisir la file d'exécution d'un travail. Les files suivantes sont prédéfinies :
a file des travaux associés à la commande at
b file des travaux associés à la commande batch
c file des travaux associés à la commande crontab
Exemple
at 16:10
pwd
CTRL D
INCORPORER Designer \* fusionformat \s
La commande batch
Cette commande fonctionne de façon similaire à la commande at avec deux différences : les commandes lancées en batch sont insérée dans une file d'attente dédiée et exécutées quand l'activité du système le permet.
La commande at -r numéro permet de détruire un travail lancé par la commande batch.
Le répertoire /var/lib/cron
Ce répertoire appartenant à root doit être en mode r-x pour les autres utilisateurs. Il contient les fichiers suivants :
Le fichier FIFO est un tube nommé pour la communication entre l'utilisateur et le processus cron.
Le fichier cron.allowex "cron.allow" contient la liste des utilisateurs ayant le droit d'exécuter la commande crontab (un nom de connexion d'utilisateur par ligne),
Le fichier cron.denyex "cron.deny" contient la liste des utilisateurs n'ayant pas accès à la commande crontab (un nom de connexion d'utilisateur par ligne).
Un seul de ces deux derniers fichiers est utile à un instant donné. Le principe d'utilisation est le suivant :
si le fichier cron.allow existe, la commande crontab n'accepte des travaux que pour les utilisateurs présents dans ce fichier, les autres recevant le message Sorry ...
si le fichier cron.allow n'existe pas et si le fichier cron.deny existe, la commande crontab n'accepte des travaux que pour les utilisateurs non présents dans ce fichier, les autres recevant le message Sorry ...
si aucun de ces deux fichiers n'existe, seul l'utilisateur root peut utiliser la commande crontab.
Les fichiers at.allow et at.deny ont le même format et jouent le même rôle pour la commande at que les fichiers cron.allow et cron.deny pour la commande crontab.
Le fichier log contient l'historique des actions effectuées par le service cron (trois enregistrements par commande : deux pour l'appel précédés de > et un pour la fin précédé de /tmp/copie
#affichage du contenu de la sauvegarde
cpio –tvf < /tmp/copie
#restauration sur le répertoire courant
cpio –ivf < /tmp/copie
Exemple 2
#sauvegarde du répertoire courant
ls | cpio -o > /dev/mt0
#restauration sur le répertoire courant (relatif)
cd /rep; cpio -imBdl < /dev/rmt8
#restauration sélective
cd rep; cpio -iBmdlv f1 f2 ...fn < /dev/rmt0
#restauration sélective
cpio -icvdumB ./tina/budget < /dev/rmt/tm0
Sauvegarde de fichier ou répertoire avec les commandes find et cpio
Sauvegarde Identificateur correspondant
Répertoire courant et sous répertoires .
Fichiers identificateur_fichier(s)
Répertoire différent du répertoire courant chemin absolu du répertoire
Exemples
#sauvegarde de rep1 sur rep2
cd rep1; find . -depth -print | cpio -pdl rep2
#sauvegarde des fichiers modifiés depuis 24 h
find . -mtime -1 -cpio /dev/rmt8
find /home/joe -depth -newer time -print | (cpio -ocvB > /dev/rmt0)
Copie physique
La commande ddex "dd" exécute une copie physique entre deux supports en précisant la taille des blocs transférés. On peut ainsi avec des grands blocs optimiser la place sur une bande en diminuant l'espace résiduel. L'inconvénient de cette commande concerne les blocs défectueux qui peuvent poser des problèmes.
Synopsis : dd option=valeur [option=valeur ] [option=valeur]
Options
if=nom nom du fichier d'entrée, entrée standard par défaut
of=nom nom du fichier de sortie, sortie standard par défaut
ibs=n nombre d'octets des blocs du fichier d'entrée
obs=n nombre d'octets des blocs du fichier de sortie
bs=n nombre d'octets des blocs des fichiers d'entrée et de sortie
cbs=n taille du tampon de conversion
skip=n copie de n fichiers d'entrée avant la terminaison
seek=n saut de n fichiers sur le périphérique de sortie avant écriture effective
count=n copie de n enregistrements en entrée seulement
conv=ascii conversion EBCDIC vers ASCII
conv=ebcdic conversion ASCII vers EBCDIC
conv=lcase conversion de touts les caractères en lettre minuscule
conv=ucase conversion de touts les caractères en lettre majuscule
conv=bloc conversion d'enregistrement d'un format variable au format fixe
conv=noerror pas d'arrêt du processus en cas d'erreur
Exemple
tar cvfb 20 - . | rsh host_distant dd of=/dev/rmt0 obs=20b
Interprétation
tar cvfb 20 - .
création d'un fichier image tar du répertoire courant, d'une taille de bloc de 20 sur la sortie standard.
rsh host_distant dd of=/dev/rmt0 obs=20b
exécution distante sur la machine host_distant de la commande dd dont les données seront sur la sortie standard et dont le résultat sera sur le périphérique /dev/rmt0 avec une taille de bloc de 20.
La lecture distante de cette bande sera réalisée de la façon suivante :
rsh -n host_distant dd if=/dev/rmt0 bs=20b | tar xvBfb 20 -
Autres utilitaires
De nombreux autres utilitaires existent pour effectuer des copies de système de fichiers, en particulier dcopyex "dcopy" (copie d'un système de fichiers avec réorganisation), volcopyex "volcopy" (copie d'un volume avec test des labels), backupex "backup", filesaveex "filesave" ... (utilitaires de sauvegardes adaptables)...
Compression
Principe
La technique de compressionex "compression" utilise l'algorithme performant de Lempel-Zivex "algorithme de Zempel-Liv".
Commandes
compressex "compress" (compression), uncompressex "uncompress" (décompression), zcatex "zcat" (visualisation d'un fichier compressé).
Le fichier compressé est suffixé par .Z.
Il n'est pas possible de compresser des répertoires, des liens, des fichiers trop petits (moins de trois blocs).
Application: fichier image_tar compressé.
Une solution est de compresser chaque fichier puis d'exécuter la commande tar. Cette méthode n'est pas performantes car la compression d'un petit fichier est peu efficace. L'autre solution est de compresser un fichier image tar unique selon l'algorithme suivant :
création d'un fichier image tar puis compression,
recopie de ce fichier sur le périphérique de sauvegarde.
INCORPORER Designer \s \* fusionformat
Exemple
(tar cvf - . | compress cv) > resu.Z
tar cvf /dev/ntape resu.Z
ou encore :
tar cvf - . | compress cv | tar cvf /dev/ntape -
La restauration s'effectue de la façon suivante :
restauration du fichier image tar,
décompression et restauration de l'arborescence sur le répertoire courant.
Exemple
tar xvf /dev/ntape | uncompress cv | tar xvf -
Fichier .tar
Il est possible de créer un fichier image tar, luimême image tar de plusieurs fichiers image tar. Conventionnellement, les fichiers de ce type sont suffixés par .tar.
INCORPORER Designer \s \* fusionformat
Exemple
tar cvf /tmp/image1 repertoire_source1
tar cvf /tmp/image2 repertoire_source2
tar cvf image.tar /tmp
Gestion des fichiers séquentiels sur support magnétique
BSD
La commande mtex "mt" permet de se positionner après l'enregistrement courant.
Synopsis : mt [-f fichier] option [compteur]
Les options suivantes sont disponibles :
eof,weof écriture de compteur marques de fin de fichiers sur la bande,
fsf avance de n fichiers,
fsr avance de n enregistrements,
bsf retour de n fichiers,
bsr retour de n enregistrements,
rewind rembobinage de la bande,
offline,rewoffl rembobinage de la bande et mise hors service,
status affichage de l'état de la bande,
retension retension de la bande.
SYSTEME V
La commande tapeex "tape" a des options similaires.
Exercices sur les sauvegardes
Commande tar
1°) Effectuer une sauvegarde de votre répertoire sous /tmp.`logname` où `logname` est votre identificateur de connexion.
2°) Restaurer la sauvegarde d'un de vos voisins dans le sousrépertoire tempo (à créer) dans votre répertoire de travail.
3°) A partir de 2 fichiers image_tar, faire un fichier *.tar puis le compresser avec la commande compress (fichier *.tar.Z).
4°) Compresser les 2 fichiers image_tar de la question précédente et fabriquer un fichier *.Z.tar. Comparer sa taille à celui de la question précédente. Conclusion.
Commande cpio
Effectuer une sauvegarde sélective (tous les fichiers plus récents qu'un fichier donné) sous /tmp/nom1 en utilisant la commande UNIX cpio.
Analyser le contenu de la sauvegarde.
Essayer de sauvegarder des fichiers spéciaux (répertoire /dev). Idem avec la commande tar. Conclusion.
SERVICES RESEAUX traditionnels dans le monde TCP/IP
Historique
Historiquement, les services réseau du monde TCP/IP ont été définis et développés sous UNIX. Les services réseaux ont été définis progressivement et ils évoluent encore aujourd'hui.
Dans l’ordre historique, on distingue les services suivants :
les services DARPA (Defence Advanced Research Projects Agency),
les services développés à l'Université de Berkeley,
les services complémentaires aux précédents,
les services basés sur l'utilisation simultanée du réseau téléphonique commuté et de modem,
les services répartis et distribués, développés par la société SUN MICRO-SYSTEM comme NFS et NIS,
les services graphiques distribués dans des environnements hétérogènes basés sur le protocole XWindow,
les services d'administration de réseaux hétérogènes basés sur les protocoles SNMP, SNMP2,
les services permettant d'utiliser le réseau Internet (navigateur, moteurs de recherche, service d'annuaire, gestion du format hypertext (HTML).
les services définis par OSF/DCE.
Présentation des services traditionnels
Le modèle serveur-client
C'est le modèle théorique utilisé pour l'implémentation de tous les services et protocoles réseau du monde TCP/IP.
Services de la DARPA
L'ensemble des protocoles Internet, dont les plus connus sont TCP et IP, a été développé pour permettre à des ordinateurs de communiquer entre eux et de pouvoir partager des ressources dans un réseau.
Les recherches financées par la DARPA ont permis de définir les protocoles TCPex "TCP", UDPex "UDP", IPex "IP" utilisés pour la mise en place du réseau, des services de transfert de fichier et de terminal virtuel dans des environnements homogènes ou hétérogènes.
Le réseau ARPANETex "ARPANET" (1979) est le plus connu des réseaux fonctionnant avec les protocoles TCP/IP. Le réseau INTERNET regroupe le réseau ARPANET, le réseau NSFNET, ainsi qu'un grand nombre de réseaux locaux d'établissements universitaires ou de centres de recherches.
Les protocoles
On distingue :
les protocoles de bas niveau (TCP, IP),
les protocoles de haut niveau (ftpex "ftp", SMTPex "SMTP"), utilisés pour le transfert de fichiers ou la messagerie.
Les protocoles de bas niveau
Les protocoles de bas niveau, mis au point dans les années 1975, utilisent des mécanismes classiques d'adressage, de nommage, de contrôle de flux simples, fiables, et efficaces permettant une implémentation aisée sur différents systèmes.
Très rapidement, de nombreux ordinateurs des universités américaines s'y sont connectés permettant aux chercheurs d'échanger des informations. Cette ouverture a été fondamentale dans le succès d'UNIX.
Le protocole de contrôle de la transmission TCPex "TCP" (Transmission Control Protocolex "Transmission Control Protocol") découpe les messages d'informations sous la forme de segmentsex "segment"s, entités indépendantes émises sur le réseau, les réassemble et les réordonne à l'autre extrémité. Il contrôle leur arrivée et émet des requête de réémission des datagrammes manquants. C'est un protocole de niveau transport, en mode datagramme, d'une qualité de service de classe 4. Ses versions les plus récentes intègrent les fonctions de niveau transport définies dans le modèle OSIex "modèle OSI" (Interface TLIex "Interface TLI" : Transport Layer Interfaceex "Transport Layer Interface").
UDPex "UDP" (User Data Protocolex "User Data Protocol") est un protocole de niveau transport, intégrant un minimum de fonctionnalités, utilisé dans des réseaux locaux où la qualité du service de transport offerte par le protocole TCP n'est pas nécessaire.
IPex "IP" (Internet Protocolex "Internet Protocol") est un protocole de niveau réseau, à la base du réseau INTERNET, utilisé par les protocoles TCP ou UDP. Il assure la fragmentation et le routage des datagrammes, qui peut, sur de grands réseaux être une opération très complexe.
L'interface entre les protocoles TCP et IP est très simple : c'est un datagramme muni de son adresse de destination. Le protocole TCP ignore la façon dont le protocole IP assure le transport du paquet à sa destination.
Une application basée sur les protocoles TCP/IP utilise au moins 4 couches de logiciels :
la couche application, par exemple ftp,
la couche transport telle TCP qui met à la disposition de l'application les services de niveau transport,
la couche réseau qui assure le routage des datagrammes à leur destination,
la couche liaison telle ETHERNET.
INCORPORER Designer \s \* fusionformat
Les protocoles TCP/IP sont basés sur les principes suivants :
des réseaux indépendants sont connectés par des routeurs. L'utilisateur doit pouvoir accéder aux ordinateurs ou aux ressources informatiques de n'importe lequel d'entre eux.
INCORPORER Designer \s \* fusionformat
Le routage utilisé est transparent à l'utilisateur.
Une connexionex "connexion" est une conversation entre deux systèmes distants, en mode connecté ou non connecté.
Les atouts des protocoles TCP/IP
Les spécifications de ces protocoles ouverts, développés indépendamment du matériel et du système d'exploitation utilisé, sont disponibles gratuitement.
Ils fonctionnent sur différents types de réseau : ethernet, anneau à jeton, réseau téléphonique commuté, X25, etc.
La plupart des informations les concernant sont publiées sous la forme de RFCEX "RFC" (Requests For CommentsEX "Requests For Comments").
Les protocoles TCP/IP sont devenus en 1995 le standard de communication dans les réseaux hétérogènes.
Les couches TCP/IP sont économes de ressources mémoire.
Avec quelques millions de noeuds, le réseau Internet est le premier réseau TCP/IP du monde.
Services traditionnels de la DARPA
Les services traditionnels sont basés essentiellement sur les protocoles TCP/IP.
ftpex "ftp" (file transfert protocolex "file transfert protocol") est un utilitaire de transfert de fichiers, utilisable sur des systèmes hétérogènes (UNIX, MS/DOS, etc.), interactivement ou en batch. Très puissant, il utilise des directives pour transférer des fichiers sur différents systèmes. Il contrôle les droits d'accès, les mots de passe et effectue les éventuelles conversions de format entre systèmes hétérogènes.
telnetex "telnet" est un utilitaire d'émulation de terminaux assurant le service de terminal virtuelex "service de terminal virtuel" dans un environnement hétérogène.
tftpex "tftp" est un utilitaire de transfert de fichiers simplifié utilisé pour le démarrage de station sans disque ou de terminaux X.
Services BSD (Berkeley)
La couche socket
Les services réseaux développés par l'Université des Berkeley ont offerts aux utilisateurs du monde UNIX l'ouverture sur le monde extérieur. Ils offrent une interface de programmation (Application Programming Interfaceex "Application Programming Interface" ou APIex "API") : la couche socket, permettant d'accéder directement aux services offerts par les protocoles TCP/IP depuis un processus applicatif. Le terme socket peut être traduit par prises de communicationex "prise de communication".
Services traditionnels (remote commande ou commandes déportées)
Les services réseaux rloginex "rlogin", rcpex "rcp", rshex "rsh" permettent les communications entre des stations distantes dans un environnement homogène. Les commandes précédentes sont paramétrables à partir des fichiers systèmes de gestion de réseau permettant d'assurer une transparence totale, ou très surveillée des accès aux différents services.
rloginex "rlogin" (remote loginex "remote login") assure le service de terminal virtuel dans un environnement (UNIX/PC) hétérogène. De nombreuses fonctions de contrôle sont disponibles (mot de passe, droits d'accès à la station, etc.).
rcpex "rcp" (remote copyex "remote copy") est l'extension de la commande UNIX cp à un environnement de réseau homogène.
rshex "rsh" (remote shellex "remote shell") permet de lancer l'exécution d'un travail sur un système UNIX distant.
INCORPORER Designer \s \* fusionformat
Services traditionnels basés sur des protocoles de communication asynchrones
Les services suivants peuvent fonctionner en mode asynchrone sur des liaisons séries. Ils ne nécessitent pas de modification du système d'exploitation alors que les services précédents sont intégrés dans le noyau UNIX. Ils sont encore (très peu) utilisés quand aucune autre solution n'est possible.
cuex "cu" (Connection to UNIXex "Connection to UNIX")
Service similaire à celui offert par la commande rlogin par connexion directe du terminal vers la station distante à 9600 bits/s (UNIX SYSTEM V) et à 2400 bits/s (UNIX 4.2 BSD) sans nécessité d'un logiciel particulier.
uucpex "uucp" (UNIX to UNIX copyex "UNIX to UNIX copy")
réseau virtuel fonctionnant quelque soit le type de communication,
un noeud actif permet d'effectuer les liaisons avec toutes les stations prévues du réseau,
convient aussi bien au réseau local qu'au réseau distant,
exécution de tâches distantes, pouvant mettre en jeu des ressources de plusieurs stations,
très haut niveau de sécurité entre les différentes stations,
fonction de mailing possible,
automatisation complète de tâches de liaison (dialup, protocoles, files d'attente),
transfert de données par messages avec contrôle de validité à la réception et retransmission en cas d'erreur,
aucune contrainte sur le contenu des fichiers (ASCII, binaire..),
syntaxe d'emploi agréable et usuelle, non totalement transparente.
kermitex "kermit"
utilitaire de transfert de fichiers entre systèmes homogènes ou hétérogènes,
facilité de portage et programme du domaine public,
liaison point à point sur ports asynchrones,
convient pour des transferts occasionnels,
possibilité réduite de remote login,
simplicité de mise en oeuvre.
Autres services Berkeley
Téléphone
Les commandes writeex "write" ou talkex "talk" permettent le dialogue interactif entre utilisateurs d'un même réseau UNIX.
Liste des utilisateurs connectés
Les commandes rwhoex "rwho" et rusersex "rusers" permettent de connaître les statistiques d'utilisation du réseau (autres utilisateurs, charge, etc.).
Serveur horaire
Le protocole timedex "timed" est un serveur horaire permettant de garantir l'unicité de l'heure sur les différentes stations d'un réseau.
Messagerie électronique
Elle est basée sur le protocole SMTPex "SMTP" : Send Mail Transfert Protocol,
Impression distante
Le protocole d'impression distante lpd est implémenté dans le processus démon lpdex "lpd".
INCORPORER Designer \s \* fusionformat
Service de noms
Avec la croissance du nombre de stations, il devient impossible qu'un fichier contienne la liste de tous les noms des autres stations du monde Internet.
Le service de nomsex "service de noms" a été défini par le protocole DNS (Domain Name Serviceex "Berkeley Internet Naming Daemon") pour accéder à des stations distantes, externes au domaine local.
Il retourne des adresses IP, des noms symboliques IP, des noms de stations relais d'un réseau donné.
Il permet de maintenir une base de données distribuées des tables de routage par utilisation de serveurs de noms.
Il est utilisé sur le réseau INTERNET.
Grâce au service de noms, un organisme peut gérer de façon interne la topologie de ses systèmes et en autoriser une visibilité partielle ou totale.
Autres services réseau
Multifenêtrage distribué
Les système multi-fenêtres tels XWindowex "XWindow".
Administration centralisée
Le protocole SNMP permet d'assurer l'administration de réseau dans un environnement hétérogène.
Services serveur/clients dans un environnement hétérogène
L'accès à des services fournis par un serveur UNIX à des requêtes clientes issues de systèmes fonctionnant dans le monde PC par exemple SQLnet dans les SGBD, l'émulation d'un terminal X sous Windows 3.x, 9x, NT, 2000.
Utilisation du réseau téléphonique commuté
Deux protocoles permettent d'accéder au réseau Internet en utilisant une liaison téléphonique. Ce sont les protocoles SLIPEX "SLIP" (Serial Line IPEX "Serial Line IP") ou PPPEX "PPP" (Point to Point ProtocolEX "Point to Point Protocol").
Le premier utilise le protocole UDP et convient aux stations connectées par modem.
Le protocole PPP garantit une transmission fiable en assurant des services de niveau liaison.
Accès à l'Internet
La croissance de l'utilisation du réseau Internet à conduit à la définition d'interface homme machine conviviales permettant d'en banaliser l'accès.
L'architecture DCE
L'architecture DCEex "DCE" (Distributed Computing Environnementex "Distributed Computing Environnement"), définie par l'OSF, intègre les services suivants :
service de nommage homogène ou hétérogène et accès à la messagerie X400 et X500,
implémentation des services précédents et utilisation du concept d'activité multipleex "activité multiple" d'un processus (multithreadex "multithread") pour l'implémentation,
modification du protocole RPC pour intégrer la sécurisation des transactions,
authentification des requêtes par utilisation du protocole Kerberosex "Kerberos",
gestion des systèmes de fichiers distribués conforme au modèle lecteur/rédacteur par une modification importante de NFS.
Contraintes de sécurité
Il est fondamental de pouvoir garantir le bon fonctionnement d'un réseau. La sécurité en est un élément important. On en distingue plusieurs domaines d'utilisation :
surveillance de la charge du réseau,
états des logiciels distribués,
comptabilité et audit,
administration centralisée,
souplesse,
service d'intégrité,
surveillance des systèmes,
privilèges et contrôle d'accès aux services,
service d'enregistrement,
authentification,
intégrité des données,
confidentialité des informations transportées.
Le réseau Internet
Historique et architecture
Plusieurs millions de machines sont connectées au réseau mondial Internet. L'ensemble des services disponibles et la gestion des ressources associées est architecturé selon le modèle client serveur.
Les RFC
Internet est un réseau créé à l'initiative du ministère de la défense américain (DoD, Department of Defense). Il est décrit dans une série de documents qui, bien qu'ils constituent des normes, portent le nom de Requests For Comments (RFCs, demandes d'avis). Internet correspond approximativement aux couches 3-4 de l'architecture OSI; d'autres protocoles et logiciels décrits dans les RFCs correspondent aux couches 5-7.
Les couche réseau et transport
L'architecture du routage et du transport de l'Internet est organisée en deux couches. La couche basse correspond au protocole Internet Protocol (IP), la couche haute correspond au Transport Control Protocol (TCP).
Internet n'est pas basé sur la notion de circuit, mais sur celle de mode non connecté. Dans ce mode, n'importe quelle station peut émettre un paquet sans établissement préalable d'une connexion. Les concepts de circuit temps réel et de circuit virtuel ne sont pas utilisés.
Philosophie de l'Internet
Chacun des membres de l'Internet met gratuitement à la disposition des autres utilisateurs un certain nombre de services.
Bien sûr, cela implique une éthique de fonctionnement car l'objectif n'est pas de saturer le réseau ou de détruire des données, ou encore de faire circuler des virus. En outre, les aspects commerciaux, en croissance permanente, représentent une part croissante du trafic grand public (plus de 50%).
Les services disponibles
On distingue les services suivants :
Les services traditionnels de la Darpa (téléchargement (dowload) ou transfert de fichiers entre systèmes hétérogènes, connexion sur des sites distants, messagerie électronique et utilisation implicite ou explicite du service de nom (DNS).
Les navigateurs sont des outils d'exploration de la toile. Deux produits s'affrontent : Netscape (netscape) et Internet Exploreur (microsoft).
EX "mosaïc"Les serveurs Web (World Wide Web ou Toile d'Araignée Mondiale) permettent aux internautes d'accéder aux informations qu'ils contiennent, représenté sous le format HTML ou dans un format dérivé (XML).
Les moteurs de recherche permettent de localiser des sites Web en fonction de critères définis par l'utilisateur.
Le service de nouvelles (news).
La gestion de bases de données.
L'émission de fax et de communications téléphoniques.
Les divers modes de connexion avec les protocoles SLIP, PPP, RNIS, RTC, UUCP.
Dans ce qui suit, nous présentons rapidement ces différents services.
World Wide Web
Le service World Wide WebEX "World Wide Web" (littéralement traduit par toile d'araignée mondiale) est le plus récent des services de l'Internet. Appelé également le service WWW (ou encore W3), il a pour objectif l'organisation des informations de l'Internet et leur diffusion.
Les informations sont accessibles avec une interface graphique disponible sur un navigateur.
Chaque page d'écran contient des liens vers d'autres pages d'écran.
Il utilise le concept d'hypertexte dont le principe simplifié est le suivant : à partir d'un menu, certains mots apparaissent soulignés, d'une autre couleur, en surbrillance...Il suffit de sélectionner l'un d'eux pour voir apparaître un nouvel écran d'aide contextuelle qui lui correspond. On peut itérer le procédé à l'infini. Il est également possible de rappeler des écrans précédents comme dans les bases de données navigationnelles.
Interface homme machine
Les pages d'écran sont accessibles par l'intermédiaire de browserEX "browser" (afficheurEX "afficheur") dont les plus connus, EX "mosaïc"Netscape et Internet ExploreurEX "netscape", sont orientés multimédia et peuvent accéder à des fichiers de toute nature (image, son, données, etc.) ce qui permet de créer des documents sonores et même des animations. On peut également utiliser le système multimédia de l'ordinateur comme téléphone, voire comme poste de télévision interractive.
Des modules additionnels (plug in) peuvent être téléchargé pour intégrer des fonctionnalités nouvelles.
Adresse d'un document
Chaque document est accessible par un URL EX "URL"(Uniform Ressource LocatorEX "Uniform Ressource Locator") indiquant son site et son type selon la syntaxe :
 LIENHYPERTEXTE file://[nom_utilisateur@]nom_serveur/chemin_d'accès file://[nom_utilisateur@]nom_serveur/chemin_d'accès
Exemple
 LIENHYPERTEXTE ftp://enpc.fr/pub ftp://enpc.fr/pub
 LIENHYPERTEXTE http://www.larc.nasa.gov/cgi-bin/NTRS http://www.larc.nasa.gov/
 LIENHYPERTEXTE ftp://ftp@foo.bar.edu ftp://ftp@foo.bar.edu
Page d'accueil
Un utilisateur peut créer son propre site Web et y créer ses propres pages d'accueil, par utilisation du protocole de représentation htmlEX "html".
Un portail permet d'accéder à d'autres sites Web grâce aux liens hypertextes qu'il contient.
Le service des news
Le service des news est l'équivalent sur l'Internet de groupes de discussion, de tableau d'affichage (BBS), de forum télématiques.
Principes du système
Les nouvelles (news) sont organisées par thème d'intérêt appelés newsgroups, organisés de façon hiérarchique.
Il existe actuellement près de 5000 serveurs de News.
De nombreuses applications clientes lecteur de news sont disponibles.
Les articles accessibles sur le site local sont stockés dans le répertoire /usr/spool/newsEX "/usr/spool/news".
Le service des news le plus important est constitué par le réseau Usenet, organisé en 7 grandes catégories :
comp informatique, architecture matérielle et logicielle,
news problèmes réseau et logiciels,
rec loisirs, arts,
sci activités de recherche et développement,
soc problèmes sociaux,
talk forum de débats,
misc tout ce qui ne rentre pas dans les catégories précédentes.
INCORPORER Designer \s \* fusionformat
Fonctionnalités d'un lecteur de news
Les principales fonctionnalités sont les suivantes :
navigation dans les groupes de news,
sauvegarde et contrôle des articles lus,
abonnement et désabonnement à un groupe de news,
sélection automatique et suppression d'un groupe,
mise en forme, émission, réponse à des articles.
Commandes usuelles
Nous présentons dans le présent paragraphe la syntaxe des commandes (DARPA et Berkeley) les plus usuelles ainsi que quelques commandes de statistiques d'état du réseau.
Rappelons que l'internaute utilise implicitement ou explicitement toutes ces notions.
Notions sur la Base de données réseau
De nombreux fichiers, constituant la base de données réseauex "base de données réseau", sont nécessaires pour l'utilisation des services réseau. Nous présentons ici ceux que l'utilisateur doit connaître.
/etc/hostsex "/etc/hosts"
Toute station d'un réseau local sous ethernet est définie par 
son adresse physique (adresse ethernet ou modem),
son nom symbolique,
son adresse réseau (adresse IP).
Le fichier /etc/hosts assure la correspondance entre le nom symbolique et son adresse IP.
Adresse IP
Elle est représentée sur 4 octets, en notation décimale pointée : 192.5.6.18. Elle contient deux informations : l'adresse IP du réseau et le numéro du poste de travail dans le réseau.
adresse IP nom symbolique IP
non arbitraire arbitraire
alloué par le NIC choisi par l’administrateur du site

Rappelons que NIC signifie Network Informations Center. Elle est retrouvée par un serveur de noms (DNS) si nécessaire.
Le 1er octet permet de distinguer :
les "gros réseaux (classe A)" 0 < soc at 16:02
talk: Connection requested by  LIENHYPERTEXTE mailto:albert@soc albert@soc
talk: Respond with: talk  LIENHYPERTEXTE mailto:albert@soc albert@soc
Pour initialiser le dialogue, franck répond
talk  LIENHYPERTEXTE mailto:albert@soc albert@soc
L’écran de franck se sépare à son tour en deux et le dialogue s’établit.
Le caractère Ctrl C assure la fermeture de la session.
Messagerie
La messagerieex "messagerie" électronique permet l'émission et la lecture de messages entre utilisateurs du monde UNIX ou d'autres réseaux (bitnet par exemple).
Le système de messagerie que nous allons présenter est basé sur celui d’UNIX BSD 4.3. Il permet à un utilisateur d’envoyer un message à un autre. Le destinataire pourra ultérieurement consulter son courrier dans sa boite à lettres (mailboxEX «mailbox»).
Agent utilisateur
L'agent utilisateur est l'interface permettant à un utilisateur d'accéder à sa boite aux lettres.
Ses fonctionnalités sont similaires sur tous, qu'ils fonctionnent en mode texte (mail, mailx), ou en mode graphique (xmail, Outlook, Eudora, Netscape Communicator, etc.). Ce sont les suivantes :
écriture du courrier éléctronique,
définition de son objet,
choix du destinataire dans une liste éventuelle (carnet d'adresses),
possibilité de joindre au courrier électronique des documents autres, appelé souvent pièces jointes,
lecture, archivage, diffusion, suppression de courrier reçu.
Graphe de fonctionnement de la messagerie
INCORPORER Designer \s \* fusionformat
Convention d'adressage et types de stations
Chaque station connecté aux services de la messagerie doit avoir un identificateur unique.
Normes internationales d'adressage
Dans chaque protocole d'adressage existe une hiérarchie entre les noeuds du domaine (master host station), interface entre le monde extérieur et les stations du réseau local (stations secondaires) qui constituent un domaineex "domaine" unique dans le monde uucp. L'écriture de la hiérarchie se lit de droite à gauche.
Le nom du domaine apparaît à la droite du caractère @. Il décrit le site géographique de localisation de la station et comprend généralement son nom symbolique (hostname), un département (optionnel), le nom de l'organisation ou le pays destinataire. Il faut noter que le nom de domaine identifie l'adresse de la station, mais en aucun cas le chemin d'accès à cette station. Les conventions suivantes d'adressage des domaines sont utilisées :
hostname.sous_domaine.domaine_supérieur[...]
ou encore
hostname.domaine_local.sous_domaine.domaine_supérieur
Domaine supérieur
Le domaine_supérieur (top level domain) est un nom officiellement enregistré décrivant l'organisme ou un code associé avec un pays.
Exemple
Aux Etats Unis, les domaines supérieurs du réseau Internet sont :
com institutions commerciales,
code code du pays,
edu enseignement et recherche,
gov institutions gouvernementales,
net réseau,
org organisation (générique),
uucp domaine non enregistré uucp.
sous_domaine
C'est le nom officiel d'un département, d'une compagnie.
Domaine_local
Un nom significatif à l'intérieur de l'organisation seulement.
Exemple
enpc.fr (station master host de l'enpc).
Accès à un utilisateur
La syntaxe d'adressage d'un utilisateur d'une station d'un domaine donné est fournie par :
 LIENHYPERTEXTE mailto:nom_utilisateur@adresse nom_utilisateur@adresse
Exemple
mail francoise ou mail  LIENHYPERTEXTE mailto:francoise@jupiter.ibm.fr francoise@jupiter.ibm.fr
Emission d'un message à l'utilisateur local francoise, ou à l'utilisateur distant francoise de la station jupiter du domaine ibm en France.
Agents utilisateurs
Nous présentons cidessous l'interface en mode texte traditionnelle d'Unix. Les interfaces graphiques utilisent les mêmes principes.
L'Agent Utilisateurex "Agent Utilisateur" donne l'accès à la messagerie traditionnelle d'UNIX. Il permet à l'utilisateur d'envoyer du courrier, de lire, d'éditer, d'archiver les messages reçus.
Deux agents utilisateurs en mode texte sont disponibles : un sous UNIX SYSTEM V, un sous UNIX BSD.
SYSTEM V
La commande /usr/bin/mailxex "mailx", offre des fonctionnalités similaires à celles offertes par l'Agent Utilisateur des versions BSD /usr/ucb/mail. L'utilisateur pour l'utiliser doit créer dans son répertoire de travail le fichier .mailrc contenant la ligne :
set sendmail=/usr/libits/sendmail.
BSD
L'Agent Utilisateur est la commande /usr/ucb/mailex "/usr/ucb/mail" qui, outre les services SYSTEM V, permet d'envoyer du courrier à des utilisateurs de stations d'un réseau local Ethernet en utilisant les protocoles TCP/IP.
Les règles d'utilisation en sont les suivantes :
Emission
mail(x) user1[@station1] [user2[@station2] ...usern[@stationn]]
La commande lit le texte frappé au clavier jusqu'au caractère CTRL D ou jusqu'à une ligne composé de l'unique caractère . (point). Le texte ainsi saisi est envoyé à la liste des utilisateurs muni d'un entête précisant le nom de l'expéditeur et la date de l'envoi.
Réception
mail [-option] [nom]
Un message reçu se compose de deux parties : son en tête et le message.
L'agent utilisateur affiche la liste des messages reçus et attend une directive de l'utilisateur.
Options d'appel de la commande mail(x)
e pas d'affichage de la liste des messages,
p affichage de tout courrier sans attendre de requête de l'utilisateur,
q sortie du mail si interruption,
r affichage dans l'ordre inverse des messages en attente,
fichier lecture du courrier dans le fichier précisé au lieu de la boite aux lettres habituelle,
t ajout à l'en tête de l'utilisateur la liste de tous les destinataires.
Les directives de la commande mail(x)
& prompt de la messagerie électronique,
? aide en ligne,
cd (directory) changement de répertoire,
d suppression du message courant et passage au message suivant
d (message list) destruction d'une liste de message,
e (message list) passage du message sous un éditeur de texte,
f (message list) affichage de l'objet du message sélectionné,
h affichage de l'en tête du message,
m (user list) émission d'un message à un ensemble d'utilisateurs,
n (next) affichage du message suivant,
RETURN idem cas précédent,
p (print) affichage du message courant,
q sortie du gestionnaire des messages avec sauvegarde du courrier non détruit dans la boite aux lettres privée,
r (message list) réponse (reply) à un utilisateur unique,
R (message list) réponse (reply) à une liste d'utilisateurs,
t (message list) idem commande p,
s (message list) file sauvegarde dans un fichier (~mbox par défaut),
top (message list) positionnement en début d'un message,
u (message list) récupération (undelete) d'un message détruit,
w (message list) idem s, sans l'enregistrement de l'entête du message,
x sortie du gestionnaire des messages sans modification de la boite aux lettres publique,
z (-) affichage de l'en tête (header) s'il a plus de 24 lignes,
! exécution d'une commande de l'interprète sans sortie du gestionnaire des messages,
sh exécution d'un shell script sans sortie du gestionnaire des messages.
Fichiers de configuration de la messagerie électronique
mboxex "mbox"
C'est la boite aux lettres privéeex "boite aux lettres privée" de l'utilisateur. Les messages qui ont été lus de la boite aux lettres publiqueex "boite aux lettres publique" peuvent y être archivés.
.mailrc
Ce fichier peut contenir les directives suivantes :
set hold
indique au postier (programme /bin/mail) de conserver les messages dans la boite aux lettres publique au lieu de les transférer dans la boite aux lettres privée de l'utilisateur. L'option par défaut est nohold.
set askcc
indique au postier d'afficher la question CC : à la fin de chaque saisie d'un message pour pouvoir envoyer des copies à d'autres utilisateurs. L'option par défaut est noask.
set crt=24
indique au postier le nombre de lignes affichés à partir duquel la commande more s'exécute (tube).
set autoprint
valide l'affichage automatique du message suivant dans la file d'attente au moment de la lecture d'un message. L'option par défaut est noautoprint.
set record=/usr/users/luis/envoi
indique au postier d'effectuer une copie de tous les messages envoyés par l'utilisateur dans le fichier précité. L'option par défaut est invalide.
Exemple1 : émission d'un message
mail  LIENHYPERTEXTE mailto:user@station user@station
Subject : < Objet du message>
Texte du message
...
EOF
Il est également possible d'envoyer un message dont le texte est dans un fichier en utilisant le principe de la redirection.
mail -s "Objet du message"< fichier nom_utilisateur
Exemple 2
mail  LIENHYPERTEXTE mailto:philipp@soc philipp@soc  LIENHYPERTEXTE mailto:guy@chef guy@chef
Subject : essai
Il fait beau.
..
EOF
Dans cet exemple, le message envoyé par dupond va transiter sur le réseau et ira renseigner les boites aux lettres de philipp et guy qui se trouvent respectivement sur les stations soc et chef.
Lors de la connexion d'un utilisateur, le système lui notifie l'instance d'un courrier par le message :
You have mail
Exemple 3 : réception
Pour lire un courrier électronique en instance, il suffit d'exécuter la commande mail(x) sans argument. L'agent utilisateur affiche alors :
Mail version SMI 3.0 Tue Nov 10 10 :10 PST 1987 Type ? for help
From  LIENHYPERTEXTE mailto:dupond@soc dupond@soc Mon may 27 14 :59 15/280 Essai
&
Pour lire le contenu du message, il suffit alors de taper RETURN
Message1 :
from  LIENHYPERTEXTE mailto:dupond@soc dupond@soc. Mon May 27 14 :59 :59 1990
Return-Path : 
Received : from soc.fl.com by soc.fl.com (4.0/SMI-4.0)
id AA08265; Mon 27 May 90 15 :00 :00 +0200
Received : by soc.fl.com (3.2/SMl-3.2)
id AA22480; Mon 27 May 90 15/xxxxx
Date : Mon, 27 May 90 15 :01 :02 +0200
From :  LIENHYPERTEXTE mailto:dupond@soc dupond@soc (Donald)
Message-Id : 
To :  LIENHYPERTEXTE mailto:philipp@soc philipp@soc,  LIENHYPERTEXTE mailto:guy@chef guy@chef
Subject :
Il fait beau.
&
Services répartis et distribués
Nous présentons cidessous les services offerts par les protocoles NFS et NIS.
NFS
NFS est un protocole de niveau application qui permet à des serveurs d'exporter des systèmes de fichiers à travers le réseau. Il est indépendant du système d'exploitation en fournissant un accès transparent aux fichiers dans un environnement hétérogène. Les accès distants utilisant la même syntaxe que les accès locaux, ils sont généralement transparents pour les utilisateurs et les processus d'application. Toutefois, la sémantique étant différente, cela peut quelquefois poser des problèmes.
Les performances sont raisonnables car le temps d'accès à un fichier via NFS est de l'ordre de 80 % de celui du temps d'accès à un fichier local. Le protocole NFS est un des standards du marché.
Les systèmes de fichiers exportables par un serveur de fichiers NFS à des stations clientes sont définis dans le fichier /etc/exportsex "/etc/exports". La commande de montage d'un système de fichiers mount est étendue aux systèmes de fichiers distants via NFS. Un client monte (mount) ou démonte (umount) un système de fichiers exportable d'un serveur. Un point de montage sur une station serveur peut se trouver n'importe où dans l'arborescence du client. Les systèmes de fichiers distants sont montés sur des répertoires locaux et un répertoire distant est alors accessible comme s'il s'agissait d'un répertoire local.
Exemple : soit la configuration suivante avant le montage :
INCORPORER Designer \s \* fusionformat
Soit les commandes de montage suivantes :
station A
mount -t NFS B:/usr/users/src /usr2/proj1/src
station B
mount -t NFS A:/usr2/divers /usr/divers
station C
mount -t NFS A:/usr2 /usr2
mount -t NFS A:/usr/bin /usr/bin
mount -t NFS B:/usr/users /usr/users
On obtient la configuration logique :
INCORPORER Designer \s \* fusionformat
Architecture de NFS
Les systèmes de fichiers sont gérés comme des protocoles réseaux en utilisant une architecture en couche.
L'idée est de faire toutes les opérations d'entrée/sortie sur un système de fichiers virtuelEX "système de fichiers virtuel", interfacé avec le système de fichiers réel, masqué à l'application.
La couche correspondante est la structure VNODE.
INCORPORER Designer \s \* fusionformat
NIS
Les services distribués sont accessibles par une clé d'accès appelée listeex "liste" ou quelquefois carteex "carte" (traduction du mot mapex "map"). Un domaineex "domaine" définit la portée d'un ensemble de listes et chaque station du réseau appartient à un domaine unique.
Exemples
Les droits d'accès d'un utilisateur sur une station sont définis dans le fichier /etc/passwd local par son identificateur (User ID UID ) et son numéro de groupe (Group ID GID ) qui peuvent être étendues au réseau grâce aux listes passwd et group.
Un utilisateur a alors une identité unique sur toute station du réseau sauf s'il y est redéfini dans son fichier /etc/passwd local.
La liste passwd contient la liste des noms des utilisateurs du réseau. Pour des raisons de sécurité l'utilisateur root d'une station devient l'utilisateur nobody sur une station distant.
La liste hosts contient les noms symboliques des stations et leur adresse IP. Elles constituent un domaine définit dans le fichier /etc/hosts du serveur NIS maître.
Quand les listes ne sont pas installées, toute recherche d'une adresse IP nécessite la lecture du fichier local /etc/hosts.
L'ajout d'une nouvelle station sur le réseau nécessite la modification d'un de ces fichiers sur chaque station du réseau.
Quand les listes sont installées, un programme qui veut lire le fichier /etc/hosts ou le fichier /etc/networks consulte les listes correspondantes pour obtenir l'information.
La mise à jour d'une liste est le plus souvent faite par l'administrateur.
Pour des raisons historiques, les nom de l'ensemble des commandes NIS commence par yp.
Informations générales sur l'état du réseau
dfex "df" 
liste des systèmes de fichiers montés en local et en réseau, affichage de l'espace disque disponible.
Exemple
Filesystem kbytes used avail capacity Mounted on
pss:/export/root/sparc2 121599 112413 6754 94% /
pss:/export/exec 121599 112413 6754 94% /usr
swap 6740 4 6736 0% /tmp
...
pss:/usr/spool/mail 72335 59090 6011 91% /var/spool/mail
pss:/usr2/prof 175791 141659 16552 90% /usr2/prof
pss:/usr2/etudiants 157231 137245 16841 89% /usr2/etudiants
hostname, uname -a
ex "hostname"nom symbolique de la station en cours d'utilisation.
ps
ex "ps"état des processus actifs sur le poste de travail.
Exemple
ps -ealf
USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND
philipp 1965 3.9 1.5 28 108 p0 S 15:07 0:00 /bin/sh
philipp 1951 0.0 4.8 128 344 co S 15:04 0:00 xload
...
rupex "rup" et ruptimeex "ruptime"
Affichage de la charge des stations du réseau. La commande rup utilise le protocole RPC et la commande ruptime le processus démon rwhod.
rwhoex "rwho" et rusers
Affichage, à partir du démon rwhodex "rwhod" de l'état approximatif des utilisateurs du réseau (à trois minutes près). Ce démon consomme beaucoup de CPU. Il est donc conseillé de ne pas l'utiliser et d'utiliser rusersex "rusers".
ypcatex "ypcat" nom_liste : affichage du contenu d'une liste.
yppasswdex "yppasswd"
Permet à un utilisateur d'un domaine de changer son mot de passe dans tout le domaine depuis n'importe quelle station la commande passwd n'étant pas adaptée car elle modifie le fichier local /etc/passwd. La version 4.1.1 de SUNOS remplace la commande yppasswd par une commande passwd généralisée au réseau.
Les contraintes classiques de sécurité augmentent sur un réseau car il est plus difficile d'en contrôler les accès.
L'interface graphique XWindow
Généralités sur XWindow
Une des applications les plus spectaculaires des services TCP/IP est la gestion de l'environnement multi-fenêtres.
Le succès d'UNIX provient incontestablement des possibilités graphiques des stations de travailex "station de travail". Equipées d'un processeur puissant, d'un écran bitmapex "écran bitmap", elles permettent de disposer d'outils graphiques très performants : écran de 14 à 21 pouces, avec des définitions graphiques de l'ordre de 1600*1200 pixels.
Le plus connu des environnements multi-fenêtres sous UNIX est XWindow. Il a un tel succès que des terminaux adaptés à son utilisation ont été commercialisés : les Terminaux Xex "terminal X". Ils sont moins coûteux qu'une station de travail, mais ne permettent de travailler qu'avec un environnement s'appuyant sur les bibliothèque X11 (par exemple MOTIF de l'OSF ou OPENWINDOW de SUN).
Historique
L'informatique a intégré la notion d'ergonomie pour ex "ergonomie"simplifier l'accès aux services système. Cette approche s'est concrétisée par la définition de la notion d'interface hommemachineex "interface hommemachine" : une souris, un écran graphique, une interface conviviale.
Le premier système de fenêtrage est du à XEROX. Apple l'a intégré dans le système LISA, puis a commercialisé le McIntosh, avec le succès que l'on connaît. Cette notion a été reprise dans le monde PC avec Windows (3.xx, 9x, NT, 2000, XP), dans le monde UNIX avec XWindowex "XWindow".
Le système XWindow est issu du projet ATHENA, développé au MIT. L'objectif était de développer des protocoles et une interface permettant le partage de ressources graphiques dans un environnement hétérogène.
On distingue les versions suivantes :
1982 Etude du système W par P.Asente,
1984 Premier système X,
1988 X11 R3, première version stabilisée,
1991 X11 R5, encore très utilisée,
1994 X11 R6, base des versions actuelles.
XWindow est un produit du domaine public, portable, écrit en C, indépendant de toute architecture matérielle. Il s'interface également avec les programmes LISP ou ADA.
Le consortium Xex "consortium X", crée en 1988 permet de contrôler le développement et l'évolution des produits dérivés. Il incite les constructeurs et les éditeurs de logiciels à développer des systèmes d'interface standards dans un environnement X.
Architecture de XWindow
Le système de multi-fenêtrage XWindow offre des services de haut niveau (applications fonctionnant dans un environnement multi-fenêtres) et des services de bas niveau (possibilité de développer ses propres applications en langage C à partir de la bibliothèque Xlibex "Xlib" ou des boites à outils (XToolkitex "XToolkit"). Le protocole de dialogue entre des applications distantes s'appuie sur les couches réseaux d'UNIX ce qui permet à des systèmes hétérogènes de fonctionner dans un environnement multi-fenêtres réparti. Certaines applications peuvent fonctionner simultanément sur plusieurs stations, suivant le modèle serveur-clientex "modèle serveur-client".
L'architecture de X11 est constituée des couches suivantes :
couche application (application X),
couche présentation (interface hommemachine par exemple MOTIF),
couche boite à outils (Tool Kit),
couche XtIntrinsics, description des objets de base,
couche Xlib,
couche protocole X,
couches de transport (TCP/IP et/ou DECNET).
INCORPORER Designer \s \* fusionformat
L'interface homme-machine (IHM)
Cette couche permet l'intégration et l'utilisation des services et applications X11. L'interface normalisée, issue de l'OSF (Open Software Foundation), utilise des techniques d'origine Microsoft, DEC, HP et IBM.
Il existe d'autres interfaces similaires. L'intérêt de cette approche est l'utilisation du langage Postscriptex "Postscript" pour la gestion de l'affichage, très performante.
Le système Linux offre les interface graphiques Win9x, gnome, kde, motif, X11, etc.
Les boites à outils
Les boites à outils (toolkits) sont des bibliothèques de haut niveau s'appuyant sur la bibliothèque Xlib. Elles implémentent un ensemble d'interfaces utilisateur de gestion des fenêtres appelés widgetsex "widget", acronyme de window gadget.
Les boites à outils rapprochent la programmation d'applications sous X11 de la programmation orientée objet et tendent à en normaliser l'interface utilisateur.
Une boite à outils est constituée par :
des fonctions intrinsèques de construction de widgets,
des interfaces utilisateurs tels la gestion des boutons, des menus déroulants, des boites de dialogue, la création de ses propres widgets.
La couche Xt Intrinsic intègre la description des objets de base utilisés par les boites à outils.
Plusieurs boites à outils ont développées par OSF, HP, DEC, SUN, ATT. Elles offrent des fonctionnalités similaires, quelquefois incompatibles.
La bibliothèque Xlib
Les répertoires standards utilisé par XWindow sont accessibles à partir du répertoire /usr/local/X11.
La Xlibex "Xlib" est une bibliothèque de primitives de bas niveau écrites en C du système XWindow. Elle est constituée de fonctions pour :
créer des fenêtres,
faire des dessins,
prendre en compte des événements,
réaliser des connexions à un serveur donné.
Les appels à la Xlib sont identiques sur toutes les stations et représentent le premier niveau de compatibilité totale.
Ils sont convertis dans le protocole X qui utilise les services fournis par les protocoles TCP/IP ce qui assure la complète transparence des protocoles réseau de niveau inférieur. Il est ainsi possible d'exécuter une application sur une station et de l'afficher sur une autre, même d'architecture différente.
INCORPORER Designer \s \* fusionformat
Les applications X
Les applications X constituent une couche de logiciels qui s'appuient directement sur la couche Xlib, la couche Tool Kit, ou les deux.
Elles peuvent être développées dans un quelconque langage de programmation. Un grand nombre d'applications clientes sont fournies avec la distribution X11 : xclock, xload, xbiff, xman, etc.
L'environnement X est indépendant d'un constructeur et les applications X sont portables.
Elles s'appuient sur un réseau TCP/IP ou DECNET de façon transparente et peuvent communiquer avec tous les serveurs X d'un réseau. Une application X s'exécutant sur un processeur peut accéder à toute station ou terminal X.
Le système d'affichage gère des applications locales ou s'exécutant sur d'autres processeurs ce qui permet un affichage sur le même ou sur un autre processeur, sur plusieurs stations de travail ou terminaux X.
Exemples
bitmapex "bitmap" édition d'un fichier bitmap,
xbiffex "xbiff" affichage de l'arrivée d'un courrier,
xcalcex "xcalc" calculatrice,
xclockex "xclock" affichage d'une horloge,
xdbxex "xdbx" débogueur symbolique sous X11,
xdprex "xdpr" recopie immédiate d'une fenêtre sur l'imprimante,
xdpyinfoex "xdpyinfo" information relative à un serveur X donné,
xeditex "xedit" éditeur de texte graphique multifenêtres,
xeyesex "xeyes" affichage d'une paire d'yeux suivant la souris dans son mouvement,
xfdex "xfd" visualisation d'une police de caractères,
xfedex "xfed" éditeur graphique de police de caractères,
xfontselex "xfontsel" sélection d'une police de caractères,
xhostex "xhost" autorisation d'affichage d'applications clientes s'exécutant sur d'autres stations,
xkillex "xkill" destruction d'une application cliente,
xloadex "xload" affichage de la charge de la station,
xlogoex "xlogo" affichage du logo X11,
xlsfontsex "xlsfonts" affichage de la liste des polices de caractères (fonte) disponibles,
xmanex "xman" utilisation de la documentation en ligne sous X11,
xmodmapex "xmodmap" modification des tables de transcodage associées au clavier,
xmoreex "xmore" similaire à la commande UNIX more,
xprex "xpr" mise en forme d'un fichier produit par xwd pour impression,
xpropex "xprop" affichage des propriétés des fenêtres et des polices d'un serveur X,
xrefreshex "xrefresh" rafraîchissement de l'écran,
xsetex "xset" préférence de l'utilisateur pour le display associé au serveur X,
xsetrootex "xsetroot" modification de l'apparence de la fenêtre racine,
xtermex "xterm" ouverture d'une fenêtre d'émulation vt100,
xwdex "xwd" recopie d'une fenêtre X dans un fichier bitmap,
xwinfoex "xwinfo" information sur les différentes fenêtres X11 actives,
xwudex "xwud" visualisation dans une fenêtre d'un fichier crée par l'application xwd.
Les gestionnaires de fenêtres
Généralités
Les gestionnaires de fenêtresex "gestionnaire de fenêtres" (Window Managerex "Window Manager") sont des applications clientes exécutées en mode différé (background), une seule à la fois.
Ils permettent à l'utilisateur d'organiser et de gérer les fenêtres par l'utilisation de menus déroulants. Les opérations sur les fenêtres sont le déplacement, la modification de la taille, la suppression, l'iconification, le recouvrement. Les utilisateurs peuvent modifier les menus par modification de shell scripts avec un éditeur.
Display et screen
Displayex "Display" : c'est le triplet {écran virtuel, clavier, souris}, représentant l'adresse logique de l'affichage de l'application.
Screenex "Screen" : c'est le moniteur (écran réel).
Un display peut être composé de plusieurs screens.
Un screen peut contenir plusieurs displays :
une fenêtre en noir et blanc est le display 0,
une fenêtre en couleur est le display 1.
Serveur X
Un serveur Xex "serveur X" s'exécute sur des systèmes supportant des displays (stations ou terminaux X). Il assure les fonctionnalités suivantes :
établissement des liens entre le logiciel et le matériel,
gestion des événements issus de différentes applications clientes,
traduction de ces événements en requêtes pour les pilotes de périphériques,
répartition des événements et réponses aux applications clientes,
exécution des requêtes issues d'un ou plusieurs displays d'applications clientes s'exécutant sur des stations différentes.
Le serveur et le client sont donc découplés. La syntaxe d'affichage est :
hostname:serveur.screen
Evénement
La transmission d'informations entre le client et le serveur est réalisée suite à un événementex "événement" : par exemple "cliquer" sur la souris dans une fenêtre. L'application cliente transmet ces informations au serveur X pour leur prise en compte.
Déroulement d'une application X
connexion avec le serveur X,
création de fenêtre(s),
boucle de traitement des événements en provenance du serveur X et emission de requêtes,
fermeture de la connexion avec le serveur ce qui provoque la libération de l'ensemble des ressources allouées pour l'application.
Terminal X
Un terminal X est un constitué d'un clavier, d'un écran et d'un souris. Il comporte un processeur et des ressources mémoire permettant de charger et d'exécuter le programme serveur X. Il dialogue avec un serveur CPU par l'utilisation des protocoles bootp EX "bootp"ou tftp EX "tftp"et du protocole X.
INCORPORER Designer \s \* fusionformat
Lancement de X11
Deux possibilités se présentent lors du démarrage d'une session X :
le serveur X est inopérant. Il faut donc le lancer préalablement à toute exécution d'une application X,
un gestionnaire de session est actif ainsi qu'un serveur X. Dans ce cas, une fenêtre X d'identification est active et l'utilisateur accède directement à l'environnement X11.
Serveur opérant
C'est le cas par exemple des terminaux Xex "terminal X" : le programme xdmex "xdm" substitue au programme login une fenêtre proposant des fonctionnalités similaires à celles d'un terminal fonctionnant en mode caractère : gestion du login et du mot de passe dans l'environnement X11.
Serveur inopérant
Le programme xinitex "xinit" initialise le serveur X ainsi que la première application cliente, indispensable si l'utilisateur veut reprendre la main à la terminaison de sa session X11. Il est ensuite nécessaire de lancer un gestionnaire de fenêtres.
Réseaux bureautiques
Connexion PCTCP/IP
Port série
Des micro-ordinateurs peuvent être interconnecté avec les protocoles TCP/IP à partir d'un port série et d'un logiciel de communication tel kermitEX "kermit", EX "xtalk"EX "pc-interface"EX "locus" pc-nfsEX "pc-nfs", (débit limité à 9600 bits/s) ou d'un modem ce qui leur permet d'accéder au réseau Internet.
Réseau local
Le protocole NFS est un standard du marché et permet à des PC ou à des McIntosh d'accéder aux services NFS avec un logiciel de communication sur un réseau ethernet.
Ce type de logiciel rend les services suivants :
accès transparent depuis un PC sur des ordinateurs fonctionnant sous UNIX avec NFS,
accès partagé aux disques des serveurs NFS et utilisation de ces derniers comme disque dur virtuel du PC (de e: à z:) avec possibilité de stocker du binaire au format interne PC (fat 16, fat 32, NTFS) sur des disques au format UNIX,
utilitaires de conversion des fichiers ASCII issus du monde PC vers le monde UNIX et réciproquement,
accès aux imprimantes du réseau,
configuration d'imprimantes distantes,
service d'impression sur des imprimantes distantes (protocole lpd),
transfert de fichiers avec le service ftp,
accès aux listes NIS,
statistiques d'utilisation du réseau,
service client telnet.
Protocoles de démarrage des PC
Les protocoles DHCP EX "DHCP"(Dynamic Host Configuration ProtocolEX "Dynamic Host Configuration Protocol") et bootpEX "bootp" permettent de résoudre les contraintes de l'installation ou de la mise à jour d'une station sur un réseau. Ils permettent en particulier à un PC de démarrer et de se connecter automatiquement au réseau par téléchargement des paramètres nécessaires.
Le monde McIntosh
Il est possible d'intégrer des McIntosh sur un réseau ethernet. Il suffit d'utiliser la couche MacTCP. Sur le serveur UNIX, un logiciel tel ethershare permet à la station McIntosh de voir la station UNIX comme une autre station McIntosh et de partager des ressources avec le serveur UNIX.
L'architecture Novell
Historique
Le système d'exploitation multitâches Netware, développé pour intégrer des PC dans des réseaux hétérogènes fut développé par Novell en 1986. Ses différentes versions sont les suivantes :
Netware LITE permet de gérer de 2 à 25 postes (entrée de gamme),
Netware 2.x permet de gérer jusqu'à 100 postes de travail,
Netware 3.x permet de gérer jusqu'à 250 postes de travail,
Netware 4.x est utilisé sur les sites multiserveurs,
Netware for UNIX.
Services
Il offre les services suivants:
interconnexion de tout les types de réseaux sur n'importe quel type de support,
courrier électronique,
administration,
gestion de la sécurité.
Parts de marché
Novell a une part de marché de l'ordre de 40% des réseaux locaux d'entreprise.
Le système Netware est doté des fonctionnalités suivantes : serveur de fichiers, d'applications, et d'imprimantes pour les applications clientes.
Netware 3.11
Netware est un système d'exploitation multitâches orienté télécommunications. Il gère des clients hétérogènes DOS, OS/2, UNIX, Windows 3.x, Windows 9x. Les postes clients voient les fichiers du serveur mais la réciproque n'est pas vraie.
Le serveur Netware est une station dédiée qui peut coopérer avec un serveur UNIX.
La couche ODI permet de s'interfacer de façon transparente avec les couches hautes du modèle OSI.
Les protocoles de niveau réseau sont IPX et SPX, propres à Novell. Ils s'interfacent avec les mondes TCP/IP, SNA, AppleTalk, OSI.
Les communications avec le monde UNIX sont aujourd'hui réalisée soit par TCP/IP, soit par IPX/SPX.
Netware 4.0
Gère la messagerie X400, le service d'annuaire X500, les interfaces graphiques OSF/MOTIF et Open Look, jusqu'à 1000 utilisateurs.
Netware For UNIX
Netware 3.11 a été portée sur UNIX par IBM (RS/6000 et DPX/20) ce qui permet à une station UNIX de devenir serveur Netware sur architecture RISC.
Unixware
Unixware est un système d'exploitation UNIX qui permet à une station UNIX d'être serveur ou client Netware. C'est en principe la référence pour les systèmes UNIX sur processeur Intel Merced.
L'architecture client-serveur et les bases de données
Historique
Dans les années 70, les systèmes d'informations étaient centralisés (architecture en étoile). UNIX est arrivé, avec le C, la portabilité, les réseaux, les stations de travail, les principes d'interopérabilité, les interfaces graphiques multifenêtres, les microordinateurs ce qui a rendu les systèmes centralisés obsolètes.
La philosophie de l'architecture clientserveur
Le serveur gère la base de données (la plus générale possible),
Le client gère l'interface utilisateur. Il est doté de plus en plus de ressources lui permettant d'exécuter des traitements locaux de plus en plus complexes.
Le principe est que le serveur et le client doivent coopérer en utilisant un réseau ce qui pose des problèmes de synchronisation, de répartition de charges (load balancing), de gestion de la fiabilité des transactions entre les serveurs et les clients. L'objectif est de déplacer les processus clients s'exécutant sur le poste serveur vers le poste client de telle sorte que la station cliente soit capable localement d'exécuter la "plus grande partie du traitement possible".
Serveur
Le système d'exploitation du serveur est le système UNIX dans 95% des cas.
Le SGBD relationnel est constitué d'une interface hommemachine (L4G), d'un langage de requêtes (SQL), d'un moteur.
Normes
Il existe trois groupes de normes
SQLEX "SQL"
Trois normes : SQL1 (1989) constituée des niveaux 1 et 2, SQL2 (1992) constituée des niveaux entry, intermediate, full, SQL3, pour les bases de données orientées objet.
Tous les éditeurs de base de données sont regroupés au sein du SQL Access GroupEX "SQL Access Group" (SAG), fondé en 1989.
RDAEX "RDA"
Le RDA (Remote Data AccessEX "Remote Data Access"), crée par le SAGEX "SAG", permet l'échange de données entre bases hétérogènes. Il introduit la notion d'acquittement à deux phasesEX "acquittement à deux phases" ou encore commit à deux phasesEX "commit à deux phases" pour résoudre le problème de la cohérence de la distribution des données, alors que la norme SQL ne permet que d'en formaliser l'accès.
CLI
Un pré compilateur, dépendant du SGBD, est nécessaire pour interpréter des instructions SQL dans un programme. La norme CLIEX "CLI" (Call Level InterfaceEX "Call Level Interface") permet de disposer d'instructions SQL, indépendantes du SGBD. C'est un ensemble d'API normalisé permettant d'appeler directement des instructions SQL, implémentées sous forme de pilotes vers le SGBD, depuis un programme C ou C++. Le fournisseur du SGBD se contente de fournir le pilote adéquat (Pro*C avec Oracle, ODBC avec Microsoft...).
Il existe aujourd'hui essentiellement deux types de SGBG :
les SGBD relationnels (SGBDR),
les SGBD orientés objets (SGBDOO).
Le moteur
Le moteur constitue l'élément essentiel du SGBDR dans sa partie serveur.
Moteur multithreads
Certains constructeurs ont implémenté des serveurs multithreadsEX "multithreads" permettant de gérer simultanément plusieurs flots de données dans une même unité d'exécution. Leur implémentation dépend de celle du système d'exploitation car elle peut être basé soit sur un noyau multithreads (mono ou multiprocesseurs), soit sur un moteur multithreads (par exemple ORACLE); dans ce cas, la gestion de l'activité multiple, que le noyau du système d'exploitation ne "voit" pas, est reléguée au niveau applicatif, doté de son propre ordonnanceur.
Moteur multivoies
Plusieurs copies du moteur sont chargées en mémoire, chacune pouvant gérer une flot de données. Un répartiteur de charge en assure l'optimisation.
Moteurs transactionnels
Dans un architecture clientserveur, la validation d'une transaction distribuée est plus complexe. Il a donc fallu définir la notion de commit à deux phasesEX "commit à deux phases" et de rollback (retour arrière)EX "rollback".
Les SGBDOO
Les déclarations et les structures des données de base sont fournies sous forme objet. On y trouve les notions de :
objet, objet complexe,
classe, type, méthode,
encapsulation, instanciation,
héritage,
polymorphisme
résolution tardive (late binding).
L'intégration entre le langage de programmation et la base de données est très forte car son but est d'uniformiser les trois composantes d'une application clientserveur à savoir :
l'Interface Homme Machine,
le langage de programmation,
le système de base des données en le rendant objet.
L'architecture est alors intégralement orientée objet ce qui permet au développeur de disposer d'une représentation unique des objets.
Aux états Unis, deux groupes de normalisation : l'OMGEX "OMG" (Objet Management GroupEX "Objet Management Group") et l'ANSI.
Dans le monde objet, le langage SQL devient le langage OQL.
Les clients
Interface Hommemachine
Windows et/ou XWindow : Windows est un des standards du marché sur les PC, XWindow est la norme du monde UNIX qui fonctionne sans problème dans les environnements Windows.
Les générateurs d'interface graphique et de requêtes SQL
Deux types de produits : les interprétés et les compilés.
les interprétés génèrent des ordres SQL encapsulés. Ils permettent la programmation événementielle. Ils ne sont pas tous orientés objets.
les compilés génèrent une interface graphique avec le langage C ou C++ ce qui permet au programmeur d'ajouter ses propres traitements.
La norme ODBC (Microsoft)
ODBC EX "ODBC "(Open Data Base ConnectivityEX "Open Data Base Connectivity") est une interface d'accès aux systèmes de gestion de bases de données relationnelles ou non dans des environnement hétérogènes, disponible depuis 1992 permettant à un même client d'accéder simultanément à plusieurs serveurs de bases de données. C'est un standard du marché, supporté par de nombreux éditeurs de logiciels.
DCE
L'environnement DCEEX "DCE" (Distributed Computing EnvironnementEX "Distributed Computing Environnement") fait apparaître un réseau de machines de différents constructeurs comme un unique ensemble de ressources partageables sur une même machine virtuelle. Les technologies de base utilisées par DCE sont :
le service RPC,
le service de noms,
le système de sécurité dérivé de Kerberos
la gestion de l'activité multiple au niveau applicatif (Pthreads),
la gestion distribuée de l'heure,
un système de fichiers distribués.
DCE est utile dans les applications où il est nécessaire :
de gérer des ressources distribuées,
d'une optimisation des ressources,
d'applications portables.
DCE est complexe d'utilisation. Il est puissant pour aider à résoudre des problèmes de répartition des données utilisant des algorithmes complexes sur ces données.
Tuxedo
Les SGBD permettent de faire des requêtes SQL à travers le réseau sur plusieurs bases de données simultanément. Il est possible également de distribuer des transactions dans un réseau.
Tuxedo est un moniteur transactionnel ouvert, portable, et indépendant du SGBD, développé par USL. Ses propriétés sont les suivantes (ACID) :
atomicité : une transaction doit être insécable,
consistante : les mises à jour doivent toujours rester cohérentes sur les différentes stations,
isolation : le résultat d'une transaction ne doit pas dépendre d'autres traitements en cours,
durabilité : une transaction doit être fiable, même en cas d'incident.
Architecture
L'application cliente fait la saisie sur la station cliente.
Sur la station serveur, il y a :
le SGBD,
le moniteur transactionnelEX "moniteur transactionnel" (TMEX "TM" ou Transaction ManagerEX "Transaction Manager"),
l'application serveur.
L'application cliente et l'application serveur peuvent être des stations quelconques du réseau.
Les relations entre l'application cliente et le moniteur transactionnel sont réalisées selon le protocole ATMI.
Les dialogues entre l'application serveur et le SGBD utilisent le langage SQL.
Le moniteur transactionnel utilise l'interface XA pour gérer le commit à deux phases et le roolback.
Il peut y avoir plusieurs moniteurs transactionnels. Toutefois, le poste client n'en verra qu'un seul, même si des transactions sont réparties sur plusieurs sites.
Les services de Tuxedo sont répertoriés dans le Bulletin Board, qui est le moniteur de l'ensemble des transactions et qui contient en outre l'état des services ainsi que des statistiques. Il assure également le service de nommage.
Avantages de Tuxedo
gestion d'un grand nombre d'utilisateurs,
optimisation de la gestion des ressources,
gestion de l'intégrité des données par l'interface XA,
haute disponibilité car les transactions pouvant être présentes sur des serveurs différents.
Connectivité avec les gros systèmes traditionnels (mainframes)
Tuxedo permet d'accéder aux bases de données sur gros systèmes (CICS, DB2...).
Encina
Ce produit s'appuie entièrement sur l'architecture DCE. Sur la station serveur, les couches suivantes sont nécessaires :
UNIX et DCE,
Encina Base,
Encina Serveur (ou Encina Toolkit),
Encina Moniteur.
Sur le client, on n'utilise que les couches :
UNIX et DCE,
Encina Base.
La couche Encina serveur
Elle assure les fonctions suivantes : loging, journalisation, verrouillage de ressources, interface XA.
Trois modules de services assurent en outres les fonctions suivantes
SPF permet de gérer des fichiers de type C-ISAM, X-ISAM, VSAM
PPC gère la distribution des données dans le réseau local avec TCP/IP,
PPC est une passerelle avec le monde SNA.
Le module Encina Moniteur
Ce module gère les fonctions transactionnelles proprement dites. Il utilise le module RPC pour la gestion des requêtes distantes et le module Directory Service pour la localisation des ressources. La sécurité est assurée par le module Kerberos.
Conclusions
Tuxedo
Tuxedo permet de choisir un SGBD et d'en interroger plusieurs. Il assure une meilleure gestion des ressources grâce à un équilibrage automatique des charges (load balancing).
Il garantit l'indépendance des applications clientes et serveurs qui peuvent s'exécuter sur n'importe quelles stations du réseau. Le dialogue entre serveurs est assuré par le moniteur transactionnel, qui identifie les transactions en cours ainsi que les serveurs sur lesquelles elles s'exécutent. Une transaction peut également être dupliquée sur plusieurs serveurs.
Encina
Encina est basé sur les normes et les standards utilisés dans le monde des systèmes ouverts. Les développements sont réalisés en langage C.
Les organisme ISO et X-OPEN travaillent à la normalisation du monde du transactionnel sur le modèle DTPEX "DTP" (Distributed Transaction ProcessingEX "Distributed Transaction Processing").
Moniteur transactionnel ou SGBD
Le choix est fonction de l'importance de la base et du nombre d'utilisateurs.
Dans le cas d'une simple base avec peu d'utilisateur, le SGBD est suffisant.
Si le nombre d'utilisateurs augmente, le moniteur transactionnel assure de bien meilleures performances sauf si le SGBD est multithreads.
Si on utilise plusieurs bases réparties sur plusieurs serveurs, le moniteur transactionnel est beaucoup mieux adapté.
Règles de conception des SGBD en architecture client-serveur
Le serveur fonctionne sous UNIX.
Le moteur du SGBD doit être multithreads
Le SGBD doit fournir aux postes clients des pilotes ODBC.
Le générateur d'interfaces est un interprète acceptant la norme ODBC.
Le poste client fonctionne sous Windows, Windows/Motif, ou OS/2.
Le protocole réseau de base est TCP/IP.
Le SGBD doit être conforme à la norme RDA ce qui permet de garantir l'intégrité des données.
Il faut respecter les standards pour gagner la liberté de changer de moteur ou de client sans remettre en cause l'ensemble des investissements.
Graphe récapitulatif des services réseaux
 INCORPORER Designer.Drawing.6 
Etudes de cas
Nous présentons ici deux architectures de réseau différentes.
Réseaux UNIX/PC
Les services que l'on peut ainsi assurer sont les suivants : assurer sur les même postes de travail à la fois des utilisations orientées bureautique PC (Windows 9x, NT...) et des utilisations utilisant l'environnement UNIX (utilisation, administration, ou développement) dans l'environnement XWindow.
INCORPORER Designer \s \* fusionformat
Réseaux
Le réseau de l'Enseignement de l'Ecole Nationale des Ponts et Chaussées, se compose des stations suivantes :
4 serveurs UNIX Sun,
80 postes de travail sous Linux/NT.
Les stations sont réparties à Paris et à Noisy-le-Grand dans deux salles de travaux pratiques.
La philosophie du réseau est la suivante :
Les serveurs SPARC
Ils assurent les services suivants : serveurs de disques, d'imprimantes, du réseau de télécommunications, de façon transparente pour les utilisateurs. Ainsi, l'intégralité des fichiers utilisateurs se trouve sur les serveurs.
Services
Les services offerts sont les suivants :
Partage de ressources
NFS permet le partage des ressources quelque soit la station utilisée.
Accès indifférencié à toutes les stations
Un utilisateur est identifié, de façon unique, sur n'importe quelle station du réseau. Cette gestion est assurée par le service NIS.
Interconnexion entre toutes les stations du réseau
On peut se connecter depuis Paris sur les stations de Noisy et réciproquement. On peut ouvrir, sur une station, des "fenêtres" sur les autres stations du réseau et faire des transferts de fichier entre les différentes stations fonctionnant sous UNIX.
Autres services
L'ensemble des services réseau sous UNIX est disponible. Chaque station du réseau a son identité (hostname).
Exercices
Services DARPA-BSD
1°) A partir de la commande hostname ou de la commande uname, identifiez le nom symbolique de votre station. Ce nom estil arbitraire ?
2°) A partir du fichier /etc/hosts, identifiez l'adresse IP de votre station. Estelle arbitraire ?
3°) Dans le cas où le fichier /etc/hosts se termine par une ligne avec le caractère +, même question à partir de la commande
ypcat hosts
4°) A partir des fichiers /etc/hosts et éventuellement /etc/networks, dressez une cartographie des stations du réseau.
5°) A partir de la commande telnet, connectez vous sur une station
a) à partir de son adresse IP,
b) à partir de son nom symbolique.
Vous noterez (selon la station sur laquelle vous travaillez) que la commande telnet peut être exécutée depuis un poste client sous UNIX, Windows.
6°) A partir de la commande ftp, faire un transfert de fichiers entre deux stations. Essayer d'utiliser la commande ftp dans deux situations différentes :
a) Vous n'avez pas de mot de passe sur le serveur ftp,
b) Vous avez un mot de passe sur le serveur ftp.
7°) Essayer d'écrire un shell script de transfert de fichiers entre deux stations en utilisant la commande ftp.
8°) A partir de la commande crontab, essayer de lancer ce shell script périodiquement.
9°) Même question que la question n°5 avec la commande rlogin.
10°) A partir de la commande rcp, faire un transfert de fichiers entre deux stations du réseau. Décrire son comportement en fonction du contenu du fichiers hosts.equiv.
11°) Même question en utilisant le fichier .rhosts
12°) A partir des commandes tar, rsh et dd, imaginez une séquence qui permettent de faire une sauvegarde sur une station distante contenant un support magnétique.
13°) Etablir une statistique de la charge du réseau à partir des commandes rup ou ruptime.
14°) Quels sont les systèmes de fichiers montés par NFS. Comment pouvez vous y accéder ? A partir des commandes mount, df, et du contenu du fichier /etc/exports, déterminer les droits des stations clientes en lecture et en écriture.
15°) ftp anonyme
Intérêt
Principes de fonctionnement.
Outils de communication divers
1°) Etablir un dialogue avec votre voisin en utilisant les commandes talk, write et mesg.
2°) Se protéger d'intrusions intempestives à partir de la commande mesg.
3°) Essayer d'utiliser la commande wall pour envoyer un même message à tous les utilisateurs présents.
4°) Envoyer un courrier électronique à un ou plusieurs voisins (commande mail ou mailx ou xmail). Essayer de lire les messages reçus. Les archiver ou les détruire au choix.
Exercices sur l'utilisation de XWindow
1°) A partir de la commande shell echo, établir l'adresse d'affichage de l'écran virtuel associé à votre poste de travail.
2°) Lancer des applications X simples (xload, xterm, xclock, xlogo, xcalc, etc.)
3°) Si impossible directement, essayer, à partir de la commande find d'identifier leur répertoire public d'utilisation. Après modification de la variable PATH, exécutez à nouveau la question 2.
4°) Essayez d'afficher le résultat d'exécution d'une application X chez un voisin. Pour cela, il doit vous donner son accord en exécutant la commande xhosts+.
5°) Lire le fichier .mwmrc ou .tmwmc. L'interpréter puis le modifier pour ajouter une application au menu déroulant que vous lancerez. Par exemple, afficher une horloge chez un voisin.
6°) Parmi tous les processus actifs, identifier les processus clients X et le processus serveur X.
7°) Recherchez l'application X qui vous permette de changer le fond de votre écran.
8°) Vous voulez utiliser une imprimante laser pour éditer une fenêtre. Indiquer les applications X vous permettant de le faire. Quelle séquence allez vous utiliser ?
9°) Si vous travaillez dans un environnement Windows, changer de gestionnaire de fenêtres. Conclusion.
Bibliographie du présent chapitre
Internetworking with TCP/IP
D.COMER
Editeur : Prentice Hall
Les réseaux sous UNIX
Jacques PHILIPP
Editeur : Presses des Ponts et Chaussées
Le monde Internet - guide et ressources
Ed Krol, Editeur : O'Reilly International Thompson
Bibliographie sur XWindows
X Protocol Reference Manual : volume 0
Xlib Programming Manuel : volume 1
Xlib Reference Manuel : volume 2
X Window System User's Guide : volume 3
X Toolkit Intrinsics Programming Manuel : volume 4
X Toolkit Intrinsics Reference Manuel : volume 5
XView Programming Manual : volume 7
Tous ces ouvrages sont écrits par Valérie Quercia et Tim O'Reilly et sont publiés chez O'Reilly & Associates, Inc.
En français :
PratiX : utiliser et programmer X
Renaud Dumeur, Jean-Alain Le Borgne, Marc Bassini
Edition C2V : 82 Bd Haussmann 75008 PARIS

Index
 INDEX \h "—A—" \c "2"  —"—
",58, 106
—.—
.cshrc,37, 125
.exrc,37, 48
.kshrc,37
.login,37, 125
.logout,125
.mailrc,38
.mwmrc,38
.netrc,38, 189
.profile,37
.sh_history,102
.xinitrc,38
—/—
/5bin,77
/bin,77, 153
/bin/passwd,31
/bin/su,142
/etc/at,149
/etc/batch,149
/etc/crontab,149
/etc/d_passwd,142
/etc/default/checklist,160, 163
/etc/dialup,142
/etc/exports,198
/etc/fstab,160, 163
/etc/group,30, 71
/etc/hosts,186
/etc/hosts.equiv,189
/etc/init,143
/etc/inittab,144
/etc/mntab,160
/etc/mountall,161
/etc/mtab,160
/etc/passwd,30, 71, 140
/etc/profile,103
/etc/rc,145
/etc/security/passwd,31
/etc/shadow,31, 140
/etc/utmp,146
/lib,78, 153
/mnt,77
/tmp,78, 146
/unix,77
/usr,147
/usr/bin,77
/usr/lbin,78
/usr/lib,78
/usr/lib/cron,149
/usr/lib/cron/queuedefs,149
/usr/spool,147
/usr/spool/cron,149
/usr/spool/cron/atjobs,150
/usr/spool/news,185
/usr/tmp,78, 146
/usr/ucb/mail,195
/vmunix,77
—[—
[],116
—A—
Access Control Entry,80
Access Control List,79
acct,146
ACE,80
ACL,79
acledit,81
aclget,81
aclput,81
acquittement à deux phases,210
activité multiple,182
adb,19
afficheur,184
Agent Utilisateur,195
algorithme de Zempel-Liv,173
API,179
appel système,21, 85, 90
Application Programming Interface,179
apropos,36
ARPANET,176
at,150
at.allow,150
at.deny,150
attribut,71
—B—
backslash,58, 106
backup,172
base de données réseau,186
basename,59
bdblk,159
Berkeley Internet Naming Daemon,181
Bill Joy,44
bit de collage,75
bit S,74
bitmap,204
boite aux lettres privée,197
boite aux lettres publique,197
bootp,206, 208
bootstrap,143
break,121
Brian Kernighan,14
browser,184
—C—
cache,53
cache disque,20
Call Level Interface,210
cancel,42, 191
carte,200
cat,65
cd,62
chemin d’accès,58
chgrp,71, 72
chmod,73, 113, 142
chown,71, 142
clear,39
CLI,210
cmp,64
comm,65
commit à deux phases,210
compress,173
compression,173
config,154
Connection to UNIX,180
connexion,178
consortium X,202
continue,121
cp,63
cpio,67, 170
cron,146, 149
cron.allow,151
cron.deny,151
cronlog,147
crypt,70
cu,180
—D—
DARPA,13
date,39
dbx,19
DCE,182, 212
dcopy,172
dd,171
Defence Advanced Research Project Agency,13
delayed write,54
Denis Ritchie,14
déroutement,85, 95
device driver,20
df,159, 200
DHCP,208
diff,64
dirname,59
dirs,63
Display,205
Distributed Computing Environnement,182, 212
Distributed Transaction Processing,214
domaine,193, 200
draft,16
droits d’accès,71
DTP,214
du,63
dump,168
Dynamic Host Configuration Protocol,208
—E—
echo,39, 107
écran bit map,22
écran bitmap,202
ed,44, 49
édition de liens dynamique,78
edquota,165
emacs,19, 37, 44
emin,44
env,109
ergonomie,202
etc/checklist,146
événement,95, 206
exception,95
exit,33
—F—
ff,159
fg,98
fichier ordinaire,52, 53
fichier répertoire,52
fichier silencieux,56, 57
fichier spécial,53
fichier standard,53
fichier standard d’affichage des diagnostics d’erreurs,53
fichier standard d’entrée,53
fichier standard de sortie,53
file transfert protocol,178
filesave,172
find,67, 69
finger,41
fonte,79
fsck,146, 157, 158, 162
fsdb,159
ftp,177, 178, 187
fuser,66
—G—
GENERIC,154
gestionnaire de fenêtres,205
graphe des transitions,85
groupe,71
—H—
halt,147
hard limit,165
head,66
HISTSIZE,103
hostname,201
html,185
HTML,34
—I—
icheck,159
id,32
image d'un processus,84
interface hommemachine,202
Interface TLI,177
Internet Protocol,177
interopérabilité,10, 13
interruption,85, 95
IP,176, 177
—J—
jobs,98
—K—
Ken Thompson,14
Kerberos,182
kermit,180, 207
kill,96, 98
killall,99, 147
Korn shell,102
—L—
labelit,159
LAC,79
lastcomm,100
Le bit s,74
Lien matériel,55
lien symbolique avec temporisation,56
limite douce,165
limite dure,165
liste,200
listes de contrôle d'accès,79
ln,56
locus,207
logname,30, 32
logout,33
lost+found,77, 163
lp,41, 191
lpc,191
lpd,181
lpq,191
lpr,191
lprm,191
lpstat,42, 191
lpstatus,191
ls,56, 72
—M—
mailbox,192
mailx,195
make,66
map,200
masque d'audit,141
mbox,197
mémoire partagée,23
mémoirecache,20
mesg,191
message,23
messagerie,192
micro-noyau,23
mkdir,62
mkfs,143, 157
mode background,97
mode bloc,53
mode c,53
mode cru,54
mode différé,97
mode interactif,97
mode raw,54
mode système,84
mode utilisateur,84
modèle OSI,177
modèle serveur-client,202
moniteur transactionnel,212
more,65
mosaïc,184
Motif,19
mount,146, 158, 159, 161
mt,168, 174
multithread,182
multithreads,210
mv,62
mv,64
mvdir,62
—N—
ncheck,159
netscape,184
Netscape,34
newfs,157, 163
newgrp,33
NFS,19
nice,100, 152
NIS,19
nohup,96
norme,16
—O—
Objet Management Group,211
od,66
ODBC,211
OMG,211
Open Data Base Connectivity,211
Open Look,19
opérateur crochet,116
—P—
passwd,31
pathname,52
pc-interface,207
pc-nfs,207
pid,88
pilote,20
pipe,23
Point to Point Protocol,182
popd,63
portabilité,10, 13
Portable Operating Systems Interface for Computing Environnement,16
POSIX,16
Postscript,203
PPP,182
pr,43
préemption,84
préprocesseur,21
printenv,109
prise,23
prise de communication,179
produit du domaine public,16
propriétaire,71
propriétaire effectif,74
propriétaire réel,74
ps,162, 201
pushd,63
pwd,62
—Q—
queuedefs,152
quotacheck,166
quotaoff,166
quotaon,166
—R—
ranlib,153
rcp,179, 190
RDA,210
read,121
read ahead,54
redirection,14
relatif,58
remote,190
remote copy,179
Remote Data Access,210
remote login,179
remote shell,179
remshell,190
renice,100
répertoire,53
répertoire courant,59
Requests For Comments,178
restore,168
RFC,178
RFS,19
rlogin,179
rm,62
rmdir,62
rollback,210
rsh,179, 190
rshell,190
rup,201
ruptime,201
rusers,41, 180, 201
rwho,41, 180, 201
rwhod,201
—S—
SAG,210
sam,22
sched,143
Screen,205
script,50
sdb,19
sed,43
segment,177
select,121
sémaphore,23
Serial Line IP,182
serveur X,206
service de noms,181
service de terminal virtuel,179
set,109, 122
setuid,74
shared library,78
shared objects,78
shell chmod,72
shift,122
shutdown,147
signal,95
single user,144
sleep,94
SLIP,182
smit,22
SMTP,177, 181
socket,23
soft limit,165
sous-shell,113
SQL,210
SQL Access Group,210
standard de fait,16
startup,146
station de travail,202
statut,86
stderr,53
stdin,53
stdout,53
sticky bit,75
structure U,89
stty,38
su,32, 141
sulog,147
super user,31
super utilisateur,31
SVID,15
swap -a,166
swapoff,166
swapon,166
swapper,143
sync,147
synopsis,32
sysadmsh,22
syscall,91
SYSTEM V Interface Definition,15
système de fichiers virtuel,199
système ouvert,13, 17
—T—
table système proc,88
tail,66
talk,180, 192
tape,174
tar,168
TCP,176, 177
tcsh,125
tee,40
telnet,179
TERM,38
termcap,38
terminal X,202, 207
terminfo,38
textedit,44
tftp,179, 206
time,40
timed,181
TM,212
touch,66
tput,38
tput,38
Transaction Manager,212
Transmission Control Protocol,177
Transport Layer Interface,177
trap,85, 97
tube,23
tube nommé,54
—U—
UDP,176, 177
umask,73
umount,159, 161
uncompress,173
Uniform Ressource Locator,184
uniq,71
UNIX based,13
UNIX like,13
UNIX to UNIX copy,180
update,146
URL,184
User Data Protocol,177
uucp,19, 147, 180
uux,19
—V—
variable globale,109
vi,37, 44
volcopy,172
—W—
wait,94
wall,147, 192
what,115
whatis,36
whereis,36
which,36
who,40
widget,203
win,44
Window Manager,205
winnie,44
World Wide Web,184
write,180
wtmp,147
—X—
xbiff,204
xcalc,204
xclock,204
xdbx,204
xdm,207
xdpr,204
xdpyinfo,204
xedit,44, 205
xeyes,205
xfd,205
xfed,205
xfontsel,205
xhost,205
xinit,207
xkill,205
Xlib,202, 204
xload,205
xlock,142
xlogo,205
xlsfonts,205
xman,205
xmodmap,205
xmore,205
xpr,205
xprop,205
xrefresh,205
xset,205
xsetroot,205
xtalk,207
xterm,205
XToolkit,202
xwd,205
XWindow,17, 181, 202
xwinfo,205
xwud,205
—Y—
yellow page,19
ypcat,201
yppasswd,31, 201
—Z—
zcat,173
zombie,86

PAGE1

 PAGE VIII

 PAGE I

Généralites sur le systeme unix



PAGE1



 PAGE 74

 PAGE 107


 PAGE 155

 PAGE 224

PAGE 244