UNIX LINUX
TAHAR HAOUET
Plan Pédagogique du cours
Module: UNIX/LINUX
Section : informatique
Niveau : 3ème niveau (gestion, industriel, réseau)
Volume Horaire : 22,5 heures Cours Intégrés + 45 Travaux Pratiques
Coefficient : 3
Evaluation : Interrogations Orale - Travaux dirigés – Travaux Pratiques –
Interrogations Ecrites
Suivi des versions du support
Version Date
Rédigé Par
Raison
1.0 2.0
Juin 2004 Tahar Haouet Février 2005 Tahar Haouet
Création du document Non correspondance charge horaire réalisé/ estimé Révision et Amélioration globale du support
Objectif général du cours
- Découvrir les spécificités du système Unix (Architecture- noyau…)
- Devenir autonome pour une première prise en main d'un système Unix
- Découvrir le système de gestion de fichier
- connaître les mécanismes de gestion des processus sous Unix
- Acquérir la connaissance des commandes fondamentales du système
d'exploitation Unix à travers des exercices modulaires de difficulté progressive
- Ecrire des scripts Shell (BASH)
-1-
UNIX LINUX
TAHAR HAOUET
Table des matières
LEÇON 1 : PRESENTATION D’UNIX ________________________________5 1-1- Historique ___________________________________________________5 1-2 Les fonctions principales ________________________________________6 1-3 Caractéristiques générales d'Unix__________________________________7 1-4-Architecture du système _________________________________________9 1-5- Conclusion__________________________________________________10
LEÇON 2 : CONNEXION D’UN UTILISATEUR ______________________13 2-1- Connexion au système :________________________________________13 2-2- Interface de commande Shell ___________________________________14 2-3 Environnement de l’utilisateur ___________________________________17 2-4 Utilisateurs et groupes d’utilisateurs ______________________________18
LEÇON 3 : LE SYSTEME DE FICHIERS UNIX ______________________22 3-1- Le système de fichiers _________________________________________22 3-2- Désignation des fichiers _______________________________________22 3-3- Types de Fichiers ____________________________________________24 3-4 inode _______________________________________________________24 3-5 Organisation des disques System V _______________________________27
LEÇON 4 : PRINCIPALES COMMANDES SUR LES FICHIERS UNIX __29 4-1- Principales Commandes sur les répertoires_________________________29 4-2- Principales Commandes sur les Fichiers___________________________29 4-3 Copie de fichiers (cp) __________________________________________31 4-4 Déplacement et suppression de fichiers (mv, rm) ____________________32 4-5 Les Liens____________________________________________________32 4-6 Quelques utilitaires (diff, du, wc)_________________________________33 4-7- Recherche de fichiers (find): ___________________________________34
LEÇON 5 : DROITS D’ACCES AUX FICHIERS UNIX_________________38 5-1. Protection des fichiers _________________________________________38 5-2 Modification des droits d’accès aux fichiers ________________________39 5-3. Les droits spéciaux : __________________________________________40
LEÇON 6 : GESTION DE PROCESSUS______________________________43 6-1 Notion sur les processus ________________________________________43 6-2 Etats d’un processus ___________________________________________44 6-3 Priorité d’un processus _________________________________________45 6-4 Modes d’exécution d'une commande: _____________________________45
LEÇON 7 : COMPOSITION DE PROCESSUS ________________________47 7-1- La redirection des entrées sorties ________________________________47 7-2- La composition de processus. ___________________________________48
LEÇON 8 : COMMANDES DE GESTION DE PROCESSUS ____________51 8-1-Commandes de gestion de processus ______________________________51 8-2 Le job control ________________________________________________53
LEÇON 9 : LES FILTRES _________________________________________55 9-1- Définition __________________________________________________55 9-2- Filtre grep __________________________________________________56 9-3- Filtre sort ___________________________________________________57
-2-
UNIX LINUX
TAHAR HAOUET
9-4-Filtre cut ____________________________________________________57 9-5- Filtre tr_____________________________________________________58 9-6 L'utilitaire sed ________________________________________________58
LEÇON 10 : PROGRAMMATION SHELL ___________________________62 10-1- Introduction : _______________________________________________62 10-2- Programmation de base en shell ________________________________63
LEÇON 11 : PROGRAMMATION SHELL (STRUCTURES DE CONTROLE) ____________________________________________________66 11-1- les structures de contrôle: _____________________________________66 11-2- Les instructions conditionnelles:________________________________66 11-3- Les itérations _______________________________________________68 11-4 Arithmétique entière sur les variables. ____________________________70
-3-
UNIX LINUX
TAHAR HAOUET
Leçon 1 : Présentation du système Unix
Prérequis :
Système d’exploitation, Architecture des ordinateurs
Objectif du chapitre :
Présenter et introduire le système Unix
Durée : 1h30
Eléments du Contenu :
Connaître les origines du système, ses fonctionnalités et son architecture
-4-
UNIX LINUX
TAHAR HAOUET
LEÇON 1 : PRESENTATION D’UNIX
1-1- Historique
L’histoire d’UNIX débute dans les années 60 et peut être résumée de la
façon suivante :
• 1969 : premier système Unix écrit par Ken Thompson aux Bell Labs d'AT&T, en assembleur sur PDP-7, puis en langage "B". A la base appelé Unics (jeu de mot formé à partir de Multics, gros système développé fin 60 par le MIT et General Electric)
• 1973 : Dennis Ritchie, qui a inventé le langage "C", récrit Unix en C avec Thompson (vers.4). Rend possible et entraîne le portage d'Unix sur de nombreuses machines (sources d'Unix distribués à de nombreuses universités et sociétés commerciales). Une 3e personne, Brian Kernighan, contribue également fortement aux premiers développements d'Unix.
• 1976 : publication de la version 6 du Manuel Unix ("manuel du
programmeur")
• 1977 : divergence en 2 grandes familles Unix :
(cid:1) AT&T : System III, puis System V (1990 : release 4, abrégé
SVR4)
(cid:1) Uni. de Californie à Berkeley : BSD (Berkeley Software Distribution, act.vers.4.4), originalités : vi, propre système de fichier, C-shell, gestion virtuelle mémoire, job contrôle, liens symboliques, TCP/IP...
• 1980 : Bjarne Stroustrup (Bell Labs) définit le langage C++
(extension "objet" du C)
• 1987 : apport du MIT en matière de graphique et fenêtrage : X- window version 11 (act. release 6, abrégé X11R6). Puis formation de 2 Consortiums rivaux :
(cid:1) OSF (Open Software Fundation) (DEC, HP, IBM...) : fenêtrage
Motif...
(cid:1) Unix International (AT&T, Sun...) : système de fenêtrage
OpenLook/OpenWindows
• 1990 : création par AT&T de USL (Unix System Laboratories) qui
reprend les activités Unix
• 1993 : AT&T vend USL à Novell (juin) qui donne ensuite les droits
"Unix" à l'organisation de standardisation X/Open (octobre)
• 1993 : réunification des familles Unix (sous la pression de la concurrence de "Windows NT" de Microsoft !) : convergence des constructeurs vers Unix SVR4 qui se dote de la plupart des
-5-
UNIX LINUX
TAHAR HAOUET
extensions BSD, standardisation appels systèmes (POSIX), environnement de bureau CDE (Common Desktop Environment). Nouveau rôle de l'OSF. Ralliement de Sun à Motif puis à l'OSF.
• 1994 : Linux, Unix gratuit pour plateforme Intel 486 (Linus
Torvalds)
1-2 Les fonctions principales
UNIX est un système d'exploitation dont voici les tâches principales :
Partage des ressources équitables
UNIX veille à ce que toutes les ressources de l'ordinateur (imprimante,
mémoire, ...) soient partagées équitablement entre tous les processus.
Par exemple si vous travaillez sur une application du genre base de données, vous lancez une requête (commande dans le langage base de données) coûteuse en temps, pour patienter rien ne vous empêche de vous lancer un PacMan. Vous vous retrouvez donc avec deux process lancés en même temps, c'est le système d'exploitation qui est chargé de faire en sorte que les deux process puissent utiliser les ressources de manière équitable et que le deuxième process lancé n'attende pas la terminaison du premier pour se lancer.
Le fait de pouvoir exécuter plusieurs process ou tâches en même temps,
en parallèle, est appelé multitâches. UNIX est multitâches.
Système multitâche et Multi-Utilisateur
Un système d’exploitation multitâche attribue périodiquement (quantum de temps de l’ordre du centième de seconde) l’UC à une tâche (exécution d’un programme) différente dans le but de faire progresser l’exécution de plusieurs programmes à la fois.
o La notion d’ordonnancement de tâches est alors apparue.
o L’utilisateur a l’impression que plusieurs programmes sont
exécutés « simultanément ».
o Un système multitâche est aussi appelé système à temps
partagé.
A contrario, un système d’exploitation monotâche exécute une
commande uniquement lorsque la précédente est terminée.
Un système multitâche peut permettre à plusieurs utilisateurs de
travailler simultanément, il est alors dit multi-utilisateur.
o Le système d’exploitation alloue chaque quantum de temps
à des programmes de différents utilisateurs.
o Ainsi tous les utilisateurs ont l’impression de travailler
simultanément.
-6-
UNIX LINUX
TAHAR HAOUET
Interface avec le matériel
UNIX par définition des systèmes d'exploitation fait en sorte qu'aucun process accède directement à une ressource matérielle (disque dur, lecteur de disquette,...). Pour accéder à ces ressources on passe par l'intermédiaire de fichiers spéciaux, un fichier spécial est vu pour un utilisateur comme un fichier classique, pour écrire sur une disquette dans le lecteur de disquette, on n'a qu'à écrire dans le fichier spécial du lecteur de disquette. De même pour lire dans un disque dur, on va lire le fichier spécial du disque dur.
Gestion de la mémoire
Il existe deux types de mémoire, la mémoire volatile et la mémoire statique, quand on éteint et rallume l'ordinateur, toutes les données présentes dans la première ont disparu, et les données dans la seconde sont toujours présentes. Concrètement la mémoire volatile se trouve dans la RAM, la mémoire statique dans le disque dur. Dans le vocabulaire Unix, quand on parle de mémoire on sous entend mémoire volatile ou RAM, c'est la convention qui sera adoptée pour la suite du cours.
Tout programme qui s'exécute, ou process, a besoin de mémoire pour y stocker notamment les données qui manipulent. Malheureusement l'ordinateur dispose généralement d'une quantité de mémoire limitée et non extensible. UNIX doit donc faire en sorte que la mémoire soit bien partagée entre tous les process, un process ne doit pas s'accaparer toute la mémoire, sans quoi les autres process ne pourraient plus fonctionner.
La mémoire est vue comme une ressource matérielle, UNIX doit donc vérifier qu'aucun process accède à la mémoire directement ou ne se réserve une zone de la mémoire.
Gestion des fichiers
UNIX fournit les outils nécessaires pour stocker les données et pour pouvoir les récupérer rapidement et facilement. Il fournit les outils pour pouvoir visualiser l'ensemble des fichiers de manière simple. Ces fichiers se trouvent sur le disque dur, on nomme cela un système de fichiers ou File System en anglais.
Publicité
UNIX fournit, en outre, un mécanisme de protection des fichiers. Plusieurs utilisateurs peuvent travailler en même temps sur la même machine, c'est la notion de multi-utilisateurs. Chaque utilisateur du système dispose de ses fichiers, UNIX lui donne le moyen de protéger ses fichiers, et d'accorder le droit ou non à d'autres utilisateurs d'accéder à ses fichiers.
1-3 Caractéristiques générales d'Unix
Caractéristiques :
• Le noyau Unix est écrit à plus de 95% en C, langage de haut niveau. Moins de 50% de ce code dépend de la machine. Ceci a pour conséquence une portabilité accrue. Unix est parmi les rares systèmes aujourd'hui disponibles sur tous types d'ordinateurs, du PC au Mainframe.
-7-
UNIX LINUX
TAHAR HAOUET
• Unix est le standard de facto des systèmes ouverts, c'est-à-dire les spécifications sont publiques (Non
des systèmes dont propriétaire).
• Unix est au centre des efforts de standardisation et de normalisation qui ont pour objet de définir des interfaces standard pour les systèmes d'exploitation pour faciliter les développements et l'interopérabilité entre des machines hétérogènes.
• La plupart des développements dans les domaines de pointe (CAO, bases de données objets, Internet, etc.) se font aujourd'hui majoritairement sur plate-forme UNIX.
• Disponible sur toutes les plateformes, y compris PC (Linux,
FreeBSD...)
•
interactif, temps partagé, mais offrant aussi des extensions pour le "temps réel"
• multi-tâches et Multi-Utilisateur
• compatibilité totale entre fichiers et périphériques
• multiprocesseurs symétriques, multi-threaded
•
•
facilement extensible et modifiable (ajout de commandes...)
"case sensitive", c'est à dire qu'il distingue les majuscules des minuscules (tant au niveau des commandes/options que des noms de fichiers) contrairement à VMS ou MS-DOS ("ls -l" n'a pas même effet que "ls -L")
• grande richesse d'outils et fonctionnalités (résultant d'un effort de développement collectif, contrairement aux autres systèmes d'exploitation)
• Compilateurs et outils de programmation et déboguage (C / C++ /
Perl)
• L’accès aux réseaux et à ses ressources
• Sécurité contre les accès non autorisés
Ses points forts
• Très forte portabilité des programmes ; il existe près de 3000 plates-formes UNIX, du PC à l'ordinateur central. Un programme développé sur une de ces plates-formes peut être facilement porté sur une autre plate-forme UNIX, souvent par simple recompilation.
•
Interface utilisateur simple (shell).
• Un système de fichiers hiérarchique et arborescent.
• Une structure simple des fichiers (suite de caractères).
•
Interface simple et homogène pour tous les périphériques : tout est fichier, y compris les périphériques qui sont traités comme des
-8-
UNIX LINUX
TAHAR HAOUET
fichiers spéciaux. Cette philosophie du "tout fichier" rend très simple les la processus.
flux d'entrées/sorties entre
redirection des
Ses points faibles
• Mal adapté aux applications dites "temps réel" ; ces applications ont besoin d'avoir un temps de réponse minimal garanti par exemple les applications dites "embarquées", qui contrôlent une navette spatiale ou un missile. Mais des efforts importants ont été réalisés pour concilier UNIX avec le temps réel.
• Suppose encore des utilisateurs avertis : une station Unix n'est pas un Macintosh ou un PC. Le monde UNIX n'est toujours pas destiné au grand public. Il reste cantonné pour l'instant dans le monde de l'ingénierie (station de travail) ou des serveurs. Cela dit, un grand effort a été accompli récemment pour simplifier l'utilisation des machines UNIX à interfaces graphiques qui offrent une convivialité appréciable.
travers des
• Les produits sous UNIX restent plus chers et plus rares que ceux
du monde de la micro informatique.
• Malgré les efforts de standardisation, les problèmes d'inter- opérabilité entre les différents UNIX du marché persistent. Le label UNIX 95 est un pas important qui a été franchi pour résoudre ce problème. Mais très peu d'UNIX du commerce ont pour l'instant reçu ce label.
1-4-Architecture du système
Unix est un système d’exploitation, constitué du noyau Unix, d’un
interpréteur de commandes et d’un grand nombre d’utilitaires
Le noyau assure la gestion des ressources physiques (processeurs, mémoires, périphériques) et logiciels (processus, fichiers…). L’interface entre les programmes des utilisateurs et le noyau est défini par un ensemble de procédures et de fonctions, soit directement au niveau du noyau, soit par l’intermédiaire de bibliothèques.
Pour ce qui concerne l’architecture du noyau proprement dit, les
éléments caractéristiques sont les suivants :
-9-
UNIX LINUX
TAHAR HAOUET
Le noyau est constitué d’un ensemble de procédures et de fonctions
écrites en langage C.
L’utilisateur d’Unix n’accède pas directement au noyau mais à un
interpréteur de commandes : le shell
Il existe plusieurs shell différents sous Unix
Structure du système UNIX
Applications
Appels Systèmes Unix
Gestion de processus
Système de gestion de Fichiers Drivers Périphériques
Contrôle Matériel Matériel
Concrètement le système d'exploitation est un ensemble de programme et de sous programmes regroupés dans ce qu'on appelle un noyau (kernel en anglais).
On a vu auparavant que les process ne pouvaient pas accéder directement aux ressources matérielles, en fait les process passent par le noyau pour y accéder, pour cela ils disposent d'un ensemble de commandes appelées " appels système " UNIX.
Ces appels systèmes commandent deux composantes principales du noyau, le gestionnaire de processus et le système de gestion de fichiers. Le premier a pour rôle de faire en sorte que les process s'exécutent et accèdent à la mémoire de manière équitable, on le nomme aussi scheduler. Le deuxième a pour rôle la gestion du système de fichiers, notamment pour ce qui concerne les droits d'accès.
Ce sont ces deux derniers composants du noyau qui accèdent
directement au matériel.
Pour faire marcher l'ordinateur, l'utilisateur dispose des logiciels ou d'un utilitaire qui lui permet la saisie directe de commandes. On appelle cet utilitaire le shell (coquille en français). Son rôle est d'interpréter les commandes de l'utilisateur avant transmission au noyau, c'est pourquoi on parle aussi d'interpréteur de commandes. On trouve l'équivalent sous DOS qui peut être considéré comme un shell.
Il existe plusieurs types de shell, ils se différencient par la syntaxe et la richesse des commandes. Le plus commun est le Bourne-Shell, on trouve aussi le C-Shell qui s'apparente au langage de programmation C, le Korn Shell, le Posix Shell, et sous Linux le bash-shell.
1-5- Conclusion
Unix est un système d’exploitation multitâche et Multi-Utilisateur structuré en couches, garantissant sa portabilité (existence sur presque toutes les plateformes matérielles).
Le noyau Unix contient les principales fonctionnalités du système.
-10-
UNIX LINUX
TAHAR HAOUET
La bibliothèque C fait l’interface entre le noyau et les programmes
utilisateurs.
Unix fournit une interface homme/machine très puissante appelée shell
mais aussi des interfaces graphiques.
Unix fournit de nombreux outils (en standard et dans le domaine public).
-11-
UNIX LINUX
TAHAR HAOUET
Leçon 2 : Connexion d’un utilisateur
Prérequis :
Chapitre précèdent
Objectif du chapitre :
Devenir autonome pour une première prise en main d'un système Unix
Durée : 2 Séances (2x 1h30)
Eléments du Contenu :
Connexion au système - Interface de commande Shell – Personnaliser la
session – fichiers d’initialisation - définition des utilisateurs et des groupes
-12-
UNIX LINUX
TAHAR HAOUET
LEÇON 2 : CONNEXION D’UN UTILISATEUR
2-1- Connexion au système :
2-1-1 Ouverture de session
Avant de tenter une connexion, il faut d'abord vous assurer que vous ayez été déclaré sur la machine, c'est à dire que vous possédiez un compte utilisateur caractérisé par un nom ou login et un mot de passe associé.
Tout Utilisateur est identifié par un (login name) et ne peut utiliser le système que si son nom a préalablement été défini par l’administrateur du système (root)
Pour qu’un utilisateur puisse travailler sur un système Unix, il doit
s’identifier en indiquant son nom (login), puis son mot de passe (passwd)
Apparaissant alors à
l’écran un certain nombre d’informations (informations générales, date, arrivée de messages, date de dernière connexion) Puis le système lance un programme qui est généralement un interpréteur de commandes.
A partir de ce moment l’utilisateur est connecté (il est entré en session).
A la mise sous tension, vous pouvez aussi disposer d'une interface graphique de connexion, au lieu d'avoir un simple login: avec le curseur qui clignote, vous avez une fenêtre ou bannière qui vous invite à saisir votre login et votre mot de passe. C'est notamment le cas pour la configuration par défaut de Redhat Fedora Core mais aussi pour les versions récentes de UnixWare.
Une fois le login et le mot de passe saisi, deux possibilités peuvent s'offrir à vous, vous pouvez retrouver un écran noir, avec tout simplement un caractère du genre « $ » (appelé prompt) suivi du curseur qui clignote. Vous êtes dans un shell prêt à taper des commandes. Par exemple, sous Linux le prompt par défaut est le suivant:
[login@localhost login]$
Ou alors vous pouvez trouver un environnement fenêtré avec utilisation de la souris, où il vous sera possible de lancer un shell pour pouvoir taper des commandes UNIX.
2-1-2 Changement de password
En vous déclarant sur la machine, on vous a imposé un mot de passe, vous pouvez le changer, pour cela vous disposez de la commande passwd. Certains UNIX font en sorte que vous ne puissiez pas saisir un mot de passe simple, il faudra mettre au moins 6 caractères, avec au moins un ou deux, caractère non alphabétique.
Quand vous saisissez votre mot de passe, il ne paraît pas en clair, aussi
par précaution, le système vous demande de le saisir deux fois.
-13-
UNIX LINUX
TAHAR HAOUET
Publicité
Si vous avez oublié votre mot de passe, vous devez vous adresser à
l'administrateur du système (root) qui est le seul habilité à vous débloquer.
2-1-3 Fermeture de session
Quand on a fini d'utiliser le système, on doit se déconnecter ou fermer la session. Si vous êtes dans un environnement non graphique, il vous suffit au prompt de taper logout. Vous vous retrouvez alors avec le prompt de login, un autre utilisateur pourra alors utiliser la machine.
Dans un environnement graphique, vous avec une commande Exit, ou
Logout, qui a strictement le même effet.
2-2- Interface de commande Shell
Un Shell (Interprète des commandes) est un programme qui accepte des
commandes textuelles et les exécute.
L'interpréteur de commandes ou shell est l'interface entre l'utilisateur et le système d'exploitation. C'est à la fois un langage de commandes et un langage de programmation. Son rôle est triple :
o
o
o
lire les commandes à partir du clavier ou de toute autre source,
les exécuter,
fournir si nécessaire un flux de sortie.
Les shells ne font pas partie du noyau d’Unix, mais sont des services offerts “en plus“. En fait Unix est conçu pour être “attaqué“ depuis des programmes écrits en C, langage développé à cette fin.
Il existe deux grandes familles de shells sur Unix. L’une contient sh et
ksh, l’autre csh et tcsh.
•sh, dit Bourne Shell, est un shell assez ancien et très répandu.
•ksh, dit Korn Shell, est une évolution de sh, avec des possibilités
supplémentaires.
ksh a récemment été retenu comme “norme“ par un consortium Unix ;
•csh, dit C-Shell, est le préféré des développeurs en C, car ses
commandes ont une syntaxe très voisine de celle de ce dernier langage ;
•tcsh est une évolution de csh. Elle offre la complétion des noms de
commandes, des noms de variables et des noms de fichiers.
Comme ksh est une nette amélioration de sh, il est recommandé de l’utiliser à la place de ce dernier. Les différences entre tcsh et csh offrent surtout un agrément à l’utilisateur, comme le rappel des commandes précédentes avec les touches curseur du clavier et la complétion des commandes.
-14-
UNIX LINUX
TAHAR HAOUET
Un utilisateur peut avoir différentes sessions ouvertes, chacune ayant
son propre shell.
Un Shell est un processus qui s’exécute sur la machine.
Nous verrons les processus plus en détail aux chapitres suivants
Session 1
Session 2
Session 3
sh
bash
csh
NOYAU
2-2-1- Caractéristiques du Shell
Un Shell se caractérise par un ensemble de commandes internes et un
ensemble de variables d’environnement.
Une commande interne est une commande contenue dans la boîte à outils du Shell, elle est donc littéralement intégrée. C'est soit pour des raisons de performance, soit parce qu’elle à besoin d’un accès direct aux variables d’environnement du Shell
Les commandes
les internes s'exécutent plus commandes externes, qui nécessitent habituellement de Créer un processus (tâche)
rapidement que
Les variables d’environnements du Shell sont des variables qui contiennent des informations nécessaires pour l’exécution correcte du shell. A chaque ouverture de session initialise automatiquement ces le Shell variables.
Shell
Bash Boume shell C-Shell
commandes internes
50 32 52
Nom de variable
Fonction
EDITOR HOME LOGNAME MAIL
PATH
SHELL TERM USER
Chemin d’accès de votre éditeur de texte Chemin d’accès de votre répertoire d’accueil Identifiant d’utilisateur utilisé pour le login Chemin d’accès du programme de courrier électronique Liste des répertoires à par courir pur trouver un programme Chemin d’accès du programme Shell Type de terminal utilisé Identifiant de l’utilisateur logué
-15-
UNIX LINUX
TAHAR HAOUET
2-2-2- Changement du Shell
Si vous souhaiter changer le Shell, vous devez utiliser la commande
chsh. La syntaxe de cette commande est :
chsh identifiant nom_du_shell
Nom_du_shell : Le chemin complet du répertoire contenant ce shell.
Shell
Chemin d’accès au Shell
Bash Bourne shell C-shell Korn shell Tcsh
Exemple :
/bin/bash /bin/sh /bin/csh /bin/ksh /bin/tcsh
chsh farhat /bin/ksh
2-2-3- Structures des commandes Shell
Les commandes des shells Unix ont typiquement la forme suivante :
nom_de_la_commande [option(s)] [arguments(s)]
Les options sont introduites en général par un caractère “-“, parfois par
un “+“.
Elles servent à régler finement l’effet (résultat) des commandes
Les arguments spécifient les objets (variables ou fichiers) sur lesquels la
commande va s’appliquer.
Les crochets autour des arguments et des options signifient qu ceux si
sont optionnels.
Il existe trois types de commandes dans les shell Unix :
•Certaines sont prédéfinies par le shell considérée, comme time :
•D’autres dont des fichiers exécutables, obtenus par développement
avec par exemple un langage d’assemblage, C ou encore C++.
•D’autres enfin dont des scripts, c’est à dire des fichiers texte contenant des commandes d’un des shells. On peut ainsi programmer pas mal de choses dans Unix.
A noter que les shells Unix font la différence entre les lettres minuscules
et majuscules contrairement à Windows.
2-2-4- Exemples de commandes Shell :
o date et heure courants
$ date
Tue Nov
4
13 :39 :24 EST 1997
o
liste les utilisateurs connectés au serveur. (utilisateur courant)
$who am i
-16-
UNIX LINUX
TAHAR HAOUET
farhat
tty03
Nov 6
08:26
o commande bidon
$dare
dare: commande not found
o
liste tous les fichiers du répertoire courant (-a) all
$ls –a
.
..
.exrc
ch1
ch2
intro
.profile ch10
ch3
mp3
Publicité
o Affiche le répertoire de travail
$pwd
/users/abdul/
o changer de répertoire
$ cd /home/farhat
2-3 Environnement de l’utilisateur
Qu’est-ce qu’un environnement ?
Un environnement est un ensemble de variables et de fichiers de configuration contenant des états et des options du système. Par exemple, une variable d’environnement peut indiquer que votre terminal est un terminal VT100, une autre que votre shell préféré est bash, et une dernière que vous maintenez un système de manuel personnel qu’il faut consulter lorsque la commande man est invoquée.
Variables
Le système utilise des variables comme :
TERM type de terminal courant
PATH chemin de recherche des commandes
LD LIBRARY PATH chemin de recherche des bibliothèques partagées
MANPATH chemin de recherche des manuels
EDITOR éditeur de texte par défaut
Certaines
variables nécessitent d’environnement pour fonctionner. On peut les afficher indépendamment avec la commande echo $VAR, si la variable s’appelle VAR.
applications
également
des
On peut afficher une liste des variables avec les commandes env, ou
set.
On peut modifier les variables d’environnement avec les commandes
export ou set
Notez bien que ces modifications sont temporaires (jusqu’`a la fin du shell courant). Pour les rendre permanentes, il faut les ajouter aux fichiers de démarrage (initialisation) du shell (voir section suivante).
-17-
UNIX LINUX
TAHAR HAOUET
Commandes de configuration
La plupart des commandes de configuration sont exécutées au login. D’autres commandes sont exécutées à chaque lancement d’un shell. Parmi celles-ci, citons les commandes suivantes :
stty pour initialiser les paramètres du terminal.
mail pour vérifier si vous avez du courrier privé.
quota pour contrôler si vous avez des dépassements de quota.
Fichiers d’initialisation
Lorsqu'un utilisateur se connecte sur un système UNIX, certaines tâches sont exécutées automatiquement. Ces tâches sont définies dans les fichiers d'initialisation se trouvant dans le répertoire principal de chaque utilisateur.
La plupart de ces fichiers commencent par « . » et ils ne sont donc pas
visibles avec ls, mais avec ls -a.
.bash_profile Ce
fichier contient des séquences d’instructions
exécutées à chaque lancement d’un shell de connexion bash.
.bashrc Ce fichier contient des séquences d’instructions exécutées à
chaque nouveau sous-shell bash ouvert (excluant les shells de connexion).
.bash_logout Ce fichier contient des commandes exécutées en fin de
connexion pour un shell de connexion bash.
Modifier son environnement
Modifier son environnement de façon permanente se fait toujours dans un fichier de configuration exécuté à l’entrée dans le système ou à la création du shell (.bash_profile ou .bashrc). Pour changer une variable, il faut utiliser l’assignation de variables, avec set ou export.
On pourra toujours quitter en cas de problèmes et reprendre la copie que
vous n’aurez pas manqué de faire !
2-4 Utilisateurs et groupes d’utilisateurs
Sur un système UNIX, on trouve deux types de personnes, celle qui va utiliser le système dans le but de produire quelque chose, le système UNIX est pour elle un moyen, un outil. Cette personne est l'utilisateur UNIX, on peut trouver dans cette catégorie, le programmeur, l'utilisateur de base de données, etc.
La deuxième catégorie de personnes est chargé de l'installation, de la configuration et de la bonne marche du système UNIX, ce sont les administrateurs systèmes UNIX.
Sur un système UNIX, les utilisateurs UNIX ont des droits limités, c'est à dire que certaines commandes leurs sont interdites et ils n'ont pas accès à certaines parties du système. Les administrateurs systèmes ont par contre tous les droits sur le système.
Généralement sur un système UNIX, on limite volontairement le nombre
d'administrateur (appelé ROOT ou super utilisateur).
-18-
UNIX LINUX
TAHAR HAOUET
Les opérations possibles sur les comptes des utilisateurs sont :
Création, Modification, destruction
Les comptes utilisateurs sont crées par l’administrateur (root) Ces utilisateurs sont rassemblés par groupes. Les utilisateurs d’un même groupe peuvent avoir des accès particuliers sur des fichiers appartenant aux usagers du même groupe. En général un groupe rassemble des utilisateurs qui travaillent sur le même projet ou dans un même département…
Le fichier /etc/passwd
Les Utilisateurs du système Unix sont définis dans le fichier /etc/passwd
Le fichier /etc/passwd contient toutes les informations relatives aux utilisateurs (login, mots de passe, ...). Seul le superutilisateur (root) doit pouvoir le modifier. Il faut donc modifier les droits de ce fichier de façon à ce qu'il soit en lecture seule pour les autres utilisateurs.
Ce fichier possède un format spécial permettant de repérer chaque
utilisateur, chacune de ses lignes possède le format suivant:
login :mot_de_passe :UID :GID :HomeDir :shell
Login : login de l’utilisateur
Mot_de_passe : mot de passe de l’utilisateur
UID : user identifier : identifiant de l’utilisateur
GID : Group Identifier : identifiant du groupe de l’utilisateur
HmeDir : répertoire home de l’utilisateur
Shell : shell par défaut de l’utilisateur.
Voici un exemple de /etc/passwd
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/bash daemon:x:2:2:daemon:/sbin:/bin/bash news:x:9:13:News system:/etc/news:/bin/bash uucp:x:10:14::/var/lib/uucp/vnc_config:/bin/bash farhat:x:500:100:Cool......:/home/farhat:/bin/bash
Le fichier /etc/group
Le fichier /etc/group contient la liste des utilisateurs appartenant aux différents groupes. En effet, lorsque de nombreux utilisateurs peuvent avoir accès au système, ceux-ci sont fréquemment rassemblés en différents groupes ayant chacun leurs propres droits d'accès aux fichiers et aux répertoires.
Il se compose de différents champs séparés par « : »
nom_de_groupe : champ_special : gid : membre1,membre2
Le champ spécial est fréquemment vide.
Le numéro de groupe (gid) est le numéro qui fait le lien entre les fichiers
/etc/group et /etc/passwd
-19-
UNIX LINUX
TAHAR HAOUET
Voici un exemple de fichier /etc/group
root:x:0:root bin:x:1:root,bin,daemon daemon:x:2: tty:x:5: disk:x:6: lp:x:7: wwwadmin:x:8: kmem:x:9: wheel:x:10: mail:x:12:cyrus news:x:13:news
Un même utilisateur peut apparaître dans plusieurs groupes. Lorsqu'il se connecte au système, il appartient au groupe spécifié dans le fichier /etc/passwd (le champ GID). Il peut en changer à l'aide de la commande newgrp
Les protections du fichier doivent empêcher sa modification par les
utilisateurs non privilégiés.
Pour ajouter un groupe, l'administrateur peut modifier le fichier /etc/group à l'aide d'un éditeur de texte. Il peut également utiliser la commande addgroup ou groupadd (pas toujours présentes).
Pour ajouter un utilisateur à un groupe, il suffit d'éditer le fichier /etc/group et de rajouter ce nom au bout de la ligne en séparant le nom des membres par une virgule.
Pour supprimer un groupe, il suffit d'éditer le fichier /etc/group et d'effacer la ligne correspondante. Mais attention, il ne faut pas oublier de changer dans le fichier /etc/passwd les numéros (GID) du groupe supprimé, si des utilisateurs y appartenaient. Il est également essentiel de chercher les fichiers et répertoires de ce groupe pour le changer (dans le cas contraire les fichiers et répertoires riquent d'être inaccessibles).
-20-
UNIX LINUX
TAHAR HAOUET
Leçon 3 : Le système de fichier Unix
Prérequis :
Système d’exploitation, Architecture des ordinateurs, Chapitres précédents
Objectif du chapitre :
Connaître l’organisation des fichiers sous Unix
Durée : 1h30
Eléments du Contenu :
Le système de fichier d’Unix – structure des fichiers sur le disque - inodes
Désignation des fichiers
Arborescence des répertoires
Types des fichiers
-21-
UNIX LINUX
TAHAR HAOUET
LEÇON 3 : LE SYSTEME DE FICHIERS UNIX
3-1- Le système de fichiers
Le système de fichier constitue un élément clé d’Unix. Vu par l’utilisateur, le système de fichiers est organisé en une structure arborescente dont les nœuds sont des répertoires et les feuilles des fichiers.
Sous Unix un fichier est :
• Toujours désigné par un nom.
• Possède un unique inode (certaines informations concernant le
fichier).
• Possède les fonctionnalités suivantes : (cid:1) ouverture. (cid:1) (cid:1) lecture (consultation). (cid:1) écriture (modification)
fermeture.
3-2- Désignation des fichiers
Un fichier est repéré par son nom et sa position dans l’arborescence :
son chemin d’accès.(chemin/nom)
Unix fait la différence entre les majuscules et les minuscules (la casse). En théorie tous les caractères du clavier sont autorisés. En pratique, il vaut mieu