Objectif du cours :
Comprendre l’origine et la philosophie de Linux en tant que système d’exploitation
Comprendre la notion des systèmes d’exploitation libres ou open source
Utiliser l’interface en ligne de commande pour faire des opérations de bases
Exécuter les commandes avancées à l’aide de l’interface en ligne de commande
Gérer les ressources à l’aide des utilitaires linux
Utiliser les commandes pour la sécurisation d’un système et l’attribution des permissions
Ecrire un programme Shell (Bash)
Plan du cours :
Introduction a linux
Le système Linux
Prise en main du système Linux
La programmation Shell
CHAP 1 : INTRODUCTION A LINUX
I-Système d’exploitation
I.1 Définition
Le système d’exploitation est le logiciel le plus important d’un ordinateur. C’est un ensemble de
programme qui permettent l’utilisation de l’ordinateur ou la gestion des ressources (ram, processeur,
disque dur…).
Exemple de système d’exploitation : Linux, Windows, MacOs, Android
II.UNIX
Unix est le tout premier système d’exploitation libre développé par KEN Thompson et Denis RITHIE.
Son objectif était de donner aux programmeurs un environnement open source, leurs permettant
d’ajouter des fonctionnalités
II.1 Caractéristique d’UNIX
Il est basé sur un principe de « tout est fichier »
C’est un système multitâche à temps partagé
C’est un système multiutilisateur
Utilise le Shell comme interpréteur de commande
Utiliser dans la plus large gamme d’architecture matériel
C’est un système non payant
C’est un système non compatible aux logiciels malveillant
Remarque : L’objectif des chercheurs était de rendre UNIX accessible par tous et sans
frein
III. LINUX : Version libre diffusable de UNIX
Linux est un système libre d e la plateforme PC qui était au départ un projet de LUNUS Torvals
étudiant Finlandais ; il est inspiré de MINIX un petit système développé et fonctionnant sur les
équipements embarqués. Le succès de linux est dû à de nombreuse et multiples et avantages :
Il est libre et gratuit : diffuser gratuitement
Indépendant de tout constructeur et de tout éditeur de logiciel
Evolutif et très stable dans son fonctionnement
Dotée d’une interface graphique conviviable et personnalisable
Dispose d’un excellent support de protocole internet
Supporte de nombreux outils de développement
III.1 Distribution LINUX
Le NOYAU (Kernel) est l’élément essentiel de toute distribution LINUX insistante. Chaque distribution
essaie d’offrir une valeur ajoutée sur la forme des outils d’installation et d’administration.
Ci-dessous présenter l’arborescence des distribution LINUX
Comme dans tous systèmes d’exploitation l’utilisateur n’accède pas directement au noyau, mais à un
interpréteur de commande tel que le Shell. L’interface d’utilisation de LINUX est donc constituée
d’un ensemble de programme exécutable et d’un interpréteur de commande (terminal).
III.2 Connexion d’un utilisateur
Lors du démarrage d’une machine LINUX, les étapes suivantes se succède :
Mise sous tension de la machine et de ses périphériques
Lancement du Bootstrap (Chargement du noyau)
Montage des disques
Vérifications des systèmes de fichiers
Passage en multiutilisateurs et choix de la session
Lancement des services.
On obtient alors afficher à l’écran l’invite de login
Linux étant un système multiutilisateur et multitâches, plusieurs personnes peuvent se connecter
simultanément et peuvent travailler sans interférer ; cela nécessite un système de protection des
fichiers propre à chaque utilisateur.
IV. Domaines d’utilisation de linux
LINUX est u système d’exploitation utiliser dans la plupart des domaines informatiques. Il est utilisé
entre autres :
Comme station de travail pour un utilisateur simple
Dans le domaine de réseau et internet
Dans le domaine de développement C, c++ , Delphin, fortran, java , PHP ..
Dans les SGBD (MS ACCESS, Oracle, My SQL)
La recherche scientifique
CHAP 2 : Le Système LINUX
I-Gestion des utilisateurs
I-1 Utilisateur et connexion d’un utilisateur
Pour permettre à de nombreux utilisateurs de travailler sur la même machine, Linux met en œuvre
un mécanisme d’identification d’utilisateur, de protection et de confidentialité des informations.
Tout en permettant le partage contrôlé nécessaire pour un travail en groupe.
Tout utilisateur est identifié par un nom appelé LOGIN et ne peux utiliser le système que si son nom a
été préalablement définie par l’administrateur du système dont celui-ci a tous les droits et n’as
aucune restriction sur tout action effectuée dans le système.
Lorsqu’un utilisateur simple se connecte à travers son login il est appelé à saisir son mot de passe et
une fois authentifier il apparait à l’écran un certain nombre d’information. Tel que la date de la
dernière connexion, la date du jour ainsi que l’invite de commande prompt, prêt a recevoir les
commandes : On dit que l’utilisateur est connecter
I-2 Le mot de passe
Lors de la première connexion d’un utilisateur il est fortement recommandé à l’utilisateur de
s’attribuer un nouveau mot de passe, qui sera chiffré et si l’utilisateur oublie son mot de passe,
l’administrateur a le droit de détruire l’ancien mot de passe pour lui permettre d’en créer un
nouveau
I-3 Les fichiers /etc/passwd et /etc/group
La liste des utilisateurs du système se trouve dans le fichier /etc/passwd et la liste des groupes
d’utilisateur qui ont accès à des ressources partagées se trouve dans /etc/group. Ces fichiers ne sont
accessibles qu’en lecture et contiennent pour chaque utilisateur les éléments suivants :
Le LOGIN Id utilisateur
Id du groupe
Le commentaire et le répertoire d’accueil
II-Les systèmes de fichiers
II-1 L’arborescence
Le système de fichier est un élément clé de linux. Il est organisé dans une structure arborescente
dont les données sont les répertoires et les feuilles sont les fichiers. Linux connait trois types de
fichiers
Les fichiers ordinaires : Ils servent à mémoriser les programmes et les données de
l’utilisateur.
Les fichiers répertoires : contenant la liste et les références des sous répertoires placés sous
le contrôle de l’utilisateur.
Les fichiers spéciaux : Qui désigne les périphériques et autres supports de communications
interprocessus.
II-2 Classification des Fichiers
Sous Linux, le répertoire d’origine est appelé répertoire racine notée « / ». C’est dans ce répertoire
que l’on trouve tous les autres répertoires du système selon l’arborescence suivante :
La racine « / » : C’est le point de départ de tous les systèmes de fichiers.
/bin : Répertoire comprenant toutes les commandes générales nécessaire pour l’amorçage.
/sbin : répertoire comprenant les commandes systèmes spécifiques.
/boot : répertoire comprenant les programmes nécessaires pour le chargement du noyau
ainsi que les configurations nécessaires au démarrage.
/dev : répertoire comprenant les fichiers spéciaux permettant d’accéder aux périphériques.
/etc : répertoire contenant le fichier de configuration système.
/home : répertoire contenant les répertoires personnels de l’utilisateur.
/mnt : répertoire réservé pour le montage de disque et fichiers non permanent
/tmp : répertoire de fichier temporaires
/usr : répertoire contenant les applications du système
/root : répertoire personnel de l’administrateur
/var : répertoire contenant les données variables du système
/proc : répertoire contenant les pseudo-code du noyau
II-3 Manipulation des fichiers et répertoires
II-3-1 Manipulation des répertoires
Les principales commandes permettant de gérer les répertoires sont :
pwd : affiche le chemin d’accès à un répertoire
cd : permet d’accéder à un répertoire
mkdir : permet de créer un nouveau répertoire exemple : $mkdir /etc/TIC
rmdir : commande permettant de supprimer un répertoire s’il est vide
rmdir -r : supprime un répertoire avec son contenue exple : rmdir -r /etc/TIC
mv : deplace ou renomme un repertoire exemple : $mv /etc /TIC /home/TIC ; renommer :
$mv/etc/TIC /etc/TIC-c
du : donne l’occupation de l’espace du disque
II-3.2 Manipulation des fichiers
Ls : liste-le contenue d’un répertoire
cat : liste le contenu d’un fichier
find : permet de rechercher dans un répertoire un fichier
touch : permet de rechercher dans un répertoire un fichier exemple : $touch
/etc/TIC/Anabelle.txt
cp : permet de copier le contenu d’un fichier
Exo d’application : Donner les commandes permettant de réaliser les actions suivantes
1. A partir du répertoire Racine déplacez-vous dans le répertoire Home,
2. Créer dans ce répertoire un répertoire nommée 3IAC,
3. Déplacez-vous vers le répertoire courant 3IAC
4. Créer un fichier nommé Tic.txt
5. Déplacez le répertoire 3IAC vers le répertoire ISR
6. Renommer le répertoire 3IAC par IUC
7. Retourner au répertoire racine
CHAPITRE3 : PRISE EN MAIN DU SYSTÈME LINUX
I. PROTECTION DES FICHIERS
Comme tout système multi-utilisateur, linux possède des mécanismes permettant au
propriétaire d’un fichier d’en protégé le contenu. Le propriétaire est l’utilisateur ayant créé le
fichier, pour permettre le partage des fichiers et de faciliter le travail en groupe, linux définit
la notion de groupe d’utilisateur. Et tout les utilisateurs appartenant à un même groupe ont
les même droits d’accès de fichier.
I-1 Droit d’accès aux fichiers
A chaque fichier est associe un ensemble d’indicateur précisant les droites d’accès au fichier. Pour
chaque fichier, ils existent 3 types d’utilisateurs :
Le propriétaire
Le membre du groupe propriétaire du fichier
Les autres utilisateurs du système
Pour chaque fichier et par type d’utilisateur, ils existent 3 modes :
Autorisation d’écriture (w)
Autorisation de lecture (r)
Autorisation d’exécution (x)
Sous linux ils existent diffèrent type de fichiers (fichiers spéciaux, fichiers ordinaire et
fichiers répertoire) et à chaque fichier on associe 10 attribués (1 pour désigner le
type de fichier et les 9 autres pour la protection du fichier dont :
3 attributs pour le propriétaire
3 autres pour le groupe
Et 3 attributs pour les autres
L’ensemble de ces attributs est obtenu en utilisant la commande $ls-l (liste le
contenu d’un répertoire avec ses droits d’accès)
II.2 Modification des droits d’accès
Le droit d’accès a un fichier est matérialiser par la syntaxe suivant :
Abc(propriétaire) def(groupe) ghi(autres) ou chaque lettre représente un bit
A : Définie le droit a lecture ou le propriétaire du fichier(r)
B : définie le droit en écriture ou le propriétaire du fichier(w)
C : définie le droit en exécution ou le propriétaire du fichier(x) exple :
propriétaire = rwx c.-à-d. le propriétaire a le droit en lecture, écriture et
exécution sur le fichier, rw—x
En binaire, cette protection sera traduite par 111 110 001 et en décimal elle sera
traduite par « 761 »
II. MODIFICATION DES DROITS D’ACCES
La protection d’un fichier ne peut être modifier que par la propriétaire a l’aide de la
commande CHMOD.
Ils existent deux façons d’utiliser cette commande.
La première façon utilise la description de protection par le nombre octal
exple : $chmod 644 [nom du fichier], $chmod 733 [nom du fichier]
La deuxième façon est le mode symbolique. Il permet une description
absolue ou relatif des droits d’accès. La syntaxe est la suivante : $chmod
[who] option [permission] exple : $chmod u+x [nom du fichier]
U : propriétaire $chmod y-x [ ]
Y : groupe ; 0 les autres
Exercice d’application
Expliquer les commandes suivantes
1. Chmod 0-rwx
2. Chmod g-ro
3. Chmod u-row
Un fichier a pour droit d’accès 704 donner la valeur décimale après avoir modifier ses droits suivant
la syntaxe suivante
$chmod u-w =545
$chmod g+r
$chmod 0+x
code répertoire fichier
r= lecture (4) Explorer Voir le contenu
W= écriture (2) Ajouter ou supprimer les Modifier contenu
fichier
X= exécution (1) Autorise l’accès au répertoire exécuter
II-3 La commande LS -l
Pour un repertoire, la commande « ls » permet de lister le contenu d’un repertoire ; l’attribut
« -l » quant à lui, donne des informations supplémentaires sur la nature et le type des fichiers
contenus dans ce repertoire.
Le resultat fournit par cette commande a la structure suivante :
[Type de fichier][Autorisation][Nbre de lien][Nom de repertoire][Nom du groupe][Taille du repertoire
du fichier][Date dernière modification][Nom de fichier].
Exemple : drwx_xr_x 7 imene ENIT 3080 Feb 2 04 :07 TP2
III. CHANGEMENT DU PROPRIÉTAIRE OU DU GROUPE
La commande « chown » permet de changer le propriété. Pour des raisons de sécurité, seul
l’administrateur peut changer ou modifier le propiétaire d’un fichier ou d’un répertoire : c’est
l’utilisateur « root ».
Il peut accéder à tous les de fichiers et repertoires sans aucunes restrictions et peut
en modifier ses attributs.
La commande « chrgrp » permet de changer le groupe à condition que l’utlisateur
fasse partir du groupe.
Exemple : chown isac nom_du_fichier
Chgrp essaie Joëls.
Exerce d’application :
En utilisant les commandes d’aide à linux, donner le rôle des commandes suivantes :
-wc
--ls- d
-ls -s
-ls -r
-ls -l
En se placant se dans la racine de l’utilisation root, créer un fichier nommer tp2 dans le répertoire
mnt puis changer son propriétaire en lui donnant pour nouveaux propriétaire « test ».
La commande « Umask » permet de définir un masque je portection ry peut-être exécuter à tout
moment.
En effet lors de la création d’un fchier, ce fiicher par defaut posssède un certain droit d’accès
qui est 666(propriétaire par defaut)
et 777 d’un repertoire : Ce sont les droits maximum d’un ficuier.
On utilise la commande Umask pour changer ces droits maximum pour un fichier ou d’un
repertoire.
III.1 DROIT MAXIMUM POUR UN FICHIER
En exécutant le commande « Umask y », pour changer alors les droits maximum pour un
fichier en 666.y qui devient alors les droits par defaut lors de l’activation d’un fichier. Exemple : avec
umask 002 le nvx droiy par defaut de 644 c-à-d rw_r_r
III.2 DROIT MAXIMUN POUR UN REPERTOIRE
C’est le même principe que pour un fichier, on retranche alors 777-y pour obtenir les
nouveauxd ììì
Avec la comma de wmxx
Exercice d’application :
CHAP 4 : LA PROGRAMMATION SHELL
INTRODUCTION
Le Shell est un interpréteur de commandes, permettant d’exécuter des scripts.
Un script est un programme contenant une liste de commandes enregistrées dans un ficher.
Ce script est un fichier texte standard, pouvant être créer par n’importe quel type d’éditeur de
fichiers (nano, gedit).
Conventionnellement, un script commence toujours par une ligne de commentaire
contenant le nom du langage à utiliser pour l’interpréteur. Pour le cas de la programmation Shell, le
commentaire sera toujours « # !/bin/bash ». Les Scripts Shell sont enregistrés dans un fichier
d’extension « .sh ».
Exemple : script.sh est un fichier exécutable.
L’exécution d’un script Shell se fait dans le terminal à l’aide de la commande
« ./nom.du.fichier ».
Exemple : ./script
I- ECRITURE ET LECTURE
La commande « echo » permet d’afficher quelques choses à l’écran. Donc pour créer un script
qui va afficher « Bonjour TIC 1C » il faut écrire dans le ficher :
« # !/bin/bash
Echo ‘’Bonjour TIC 1C’’ ; »
La commande « read » permet de lire une donnée à partir du clavier et de l’insérer dans une
variable.
Avec le shell, la variable n’est pas obligatoirement déclarée initialement, elle peut-être déclarer
lors de son utilisation.
Exemple : écrire un script shell qui demande à l’utilisateur d’écrire son nom et prénom puis
d’afficher à l’écran « Bonjour nom.prenom » :
Ce fichier sera nommé Exemple.sh
#!/bin/bash
echo "Entrez votre nom";
read nom\n
ech "Entrez votre prenom";
read prenom\n
echo "Bonjour $nom $prenom"
Avant l’exécution d’un script shell, il faut toujours lui attribuer le droit en exécution.
II- LES VARIABLES SPECIALES DU SHELL
La variable « # » contient en shell un certain nombre de paramètres pouvant être passer ou
appeler à un autre script en cours d’exécution ; la variable « * » permet de contenir une liste de
paramètres c’est-à-dire de double et triple variables ; la variable « $ » a une double fonction, elle
permet dans un 1er temps, de récupérer le contenu d’une variable simple et également d’appeler
dans le script, un processus en cours d’exécution.
Exercice d’application :
Ecrire un script qui prend en paramètres 10 entiers et renvoi leur somme.
Pour rendre ce programme moins complexe, c’est-à-dire moins compliquer et éviter les
instructions répétitives, on utilise les structures de contrôle. Ils sont classés en 3 catégories : Les
instructions conditionnelles, les itérations bornés et les itérations non bornés.
1) Les instructions conditionnelles
- Le « if » :
Syntaxe :
If cond1
Then commande 1
Elif cond2.
Then commande 2
Elif condn
Then commande n
Else commande 0
Fi
- Le « case » :
Il permet de faire des choix multiples en fonction de la donnée saisie en entrée par l’utilisateur. Ca
sintaxe est la suivante :
Case ch in
Motif 1)) cmd 1 ;;
Motif2 )) cmd 2 ;;
Motif n)) cmd n ;;
Esac
Exemple :
Read nom
Case $nom in
‘’toto’’ ))echo « vous etes
- La structure « For » :
Il permet de déclarer un compteur permettant c. Sa syntaxe est la suivante :
For i in val1 valu2…val(n)
Do
<instruction>;
Done
Exo 1:
Read i
For i in 5
Do
Som = som+$i;
Done.
Read i
For I in 567
Do
Som = som + $i;
Done
- While:
La syntaxe est la suivante :
While count
Do
Commande 1
Done
Exemple :
Read i
While $i get ;
Do
Mkdir rep2 ;
Cd rep $i ;
i-$ i-1
Exercice d’application : calculatrie