Vous êtes sur la page 1sur 85

Cours Systèmes d’exploitation

& Linux

1
Plan du cours
1. Linux: Introduction générale
2. Initiation au shell
3. Le système de fichiers
4. Les redirections & pipes
5. La gestion des utilisateurs
6. Les processus
7. Les filtres
8. L’éditeur vi
9. Les scripts
10. Fonctions avancées
Logiciel Libre

Liberté d’utiliser le logiciel pour n’importe quelle utilisation

Liberté d’étudier le fonctionnement du logiciel et de l’adapter


à ses besoins

Liberté de redistribuer des copies du logiciel

Liberté d’améliorer le logiciel et de distribuer publiquement ces

améliorations pour le bénéfice de toute la communauté


Pourquoi utiliser les logiciels
libres ?

•C’est le domaine des technologies de l’information qui possède une


histoire cohérente et continue

•Ce sont les systèmes alternatifs qui permettent une analyse comparative
critique

•C’est un moyen d’acquérir des outils et des méthodes originales

•C’est un moyen de s’approprier les nouvelles technologies de façon


autonome et indépendante
Définir Linux
• Propriétés
– multi-tâches :
– multi-utilisateurs :
– multi-postes :
– Outils / logiciels gratuits
– Environnement de développement
– Libre (et gratuit) !! :

• Ouverture/Fermeture d’une session


– Travailler sous Linux implique une connexion au système
– Login:
• Identification de l’utilisateur: login + mot-de-passe
• droits accordés par le super-utilisateur (root)
– Logout:
• procédure de sortie
• commande “logout” dans la console
Concepts de base
•Kernel = Noyau
Gestion des Entrées/Sorties
Ordonnancement des tâches (scheduleur)
Gestion de la mémoire virtuelle
•Shell
Interprétation des commandes utilisateur
Séquencement entre les programmes
•Application
Ajout et|ou retrait à l’aide de paquets
Développements modulaires pour partager les
bibliothèques entre applications
L’histoire…

Linux est le petit fils de Unix


Voir « Unix history »
La première fois !
• Une fois connecté, le système nous connaît,
ouvre une session à notre nom et attend nos instructions
via un programme spécial:
• Le Shell = interpréteur de commandes
– interface utilisateur “de base” (interlocuteur avec le syst.)
– interprétation ligne à ligne
– plusieurs shells: sh, csh, tcsh, bash, ksh, zsh, ...
– configurable: fichiers d’environnement (commençant par un “.”)
• “.login”
• “.logout”
• “.bashrc”
– langage de programmation

• shell par défaut : bash


Les utilisateurs et les groupes
• Linux est multi-utilisateurs
• Chaque utilisateur a un login = nom identifiant unique
• Un utilisateur particulier : root
• Rôle du root :
– Administrer la machine
– Configurer les comptes utilisateurs
– Résoudre les problèmes systèmes
• Les utilisateurs sont organisés dans des groupes
– s’ils partagent les mêmes fichiers
– S’ils ont les mêmes responsabilités
– S’ils appartiennent au même service
Procédure de login

1. Démarrer la machine
2. Choisir le système Linux
3. Login : root
4. Passwd :
Initiation au shell
• Format général des commandes:

commande [-option(s)] [argument(s)]

Exemple : ls –a *.txt
Exemples
– date
– touch fic
crée un fichier fic
– hostname
– whoami
affiche le nom de login de l’utilisateur connecté
– echo
affiche un message (echo "bonjour !")
– ls
liste le contenu d’un répertoire
– man <cde>
manuel en ligne de la commande <cde>
Exercice

1. Chercher la page manuelle de la commande ls

2. Tester les différentes options ( -R)

3. Tester ces mêmes options sur l’argument /


Sortie de ls
drwx------ 7 jebali sor 512 Sep 30 17:51 cours1.ps
drwxr-xr-x 4 jebali sor 512 Sep 12 2003 xIngenieur
drwxr-xr-x 4 jebali sor 1024 Oct 10 2003 xMedianet
drwxr-xr-x 14 jebali sor 1024 Sep 28 12:22 xPack
drwx------ 55 jebali sor 1536 May 16 14:48 xPersonnel
drwx------ 4 jebali sor 512 Jul 10 2000 xProjet
drwxr-xr-x 3 jebali sor 512 Dec 29 2000 xReunion
-rw-r--r-- 1 jebali sor 888 Nov 26 1999 notes.txt
drwx------ 2 jebali sor 512 Jan 16 2002 xShrap
drwxr-xr-x 4 jebali sor 512 Jul 11 2000 xThese
lrwxr-xr-x 1 jebali sor 17 Apr 11 2002 yoko -> /home/yoko/
Shell : les méta-caractères
• Caractères spéciaux:

! ^ * ? [] \ ; & < > | >>

• L'astérisque ou étoile: *
– interprété comme toute suite de caractères alphanumériques
– utiliser avec précaution (commande rm par ex...)

• Le point d’interrogation: ?
– remplace 1 seul caractère alphanumérique
Shell : les méta-caractères
• Caractères spéciaux:

! ^ * ? [] \ ; & < > | >>

• Le point-virgule: ;
– Séparateur de commandes
• Les crochets: []
– Remplace un caractère choisi parmi ceux énumérés entre les
crochets
– [a-Z] : les lettres
Exercice

Ecrire une commande qui affiche les fichiers dont le nom

1. se compose de 4 caractères

2. se compose de deux caractères ou plus

3. se compose de de deux caractères séparés par un -


Les variables d’environnement
 La commande env affiche les variables d’environnement

 La plupart servent à configurer l’environnement utilisateur

 export Nomvariable=valeur affecte valeur à la variable

 echo $Nomvariable affiche la valeur de la variable


Variables d’environnement
La variable PS1 contient le « prompt » = l’invite de commande

\d pour ajouter la date


\t pour ajouter l'heure
\u pour ajouter le nom de l'utilisateur
\r pour un retour à la ligne
\w pour ajouter le chemin complet du répertoire courant
\W pour ajouter le répertoire courant
\h pour ajouter le nom de la machine

Exercice : changer le contenu de cette variable


Exercice

Ecrire une commande qui affiche

1. La variable d’environnement contenant le chemin des exécutables

2. Deux variables d’environnements de votre choix

3. Les fichiers dont le nom est le contenu d’une variable


d’environnement que vous avez créé à l’avance, et avec une extension
.numéro (exemple fic.9)
Forme générale des commandes

Sortie standard (écran)

Entrée standard (clavier) Commande

Sortie d’erreur (écran…)


Exemple

 Lancer la commande sort


 Donner des noms de villes par exemple
 Finir par Ctr-d
 Observer le résultat
Mécanisme de redirection

 < nomfic prend comme entrée nomfic


 > nomfic envoyer la sortie de la commande dans ce fichier
 >> ajouter la sortie au fichier

Faire le test avec les commandes que vous connaissez


Exercice

Ecrire une commande qui stocke les informations


 Propres au système dans un fichier nommé sysinfo
 Propres à l’utilisateur dans le fichier userinfo

Ces informations sont récupérées soit dans les variables


d’environnement soit avec des commande que vous connaissez.
Les tubes/pipes
Sortie
standard
Sortie standard

Entrée standard
Commande
Sortie
Sortie d’erreur
d’erreur

Exemple : ls | sort

AltGr-6
Exercice

Ecrire une commande qui ordonne dans l’ordre inverse


 Les variables d’environnements
 Le contenu d’un fichier de noms de pays
Commandes

Chercher dans le manuel ces commandes


cat nomfichier
more nomfichier
wc
grep texte nomfichier
head nomfichier
tail nomfichier
Exercice

Ecrire une commande qui calcul le nombre d’occurrence


de « Paris » dans un fichier de noms de villes.
Les scripts

• Des utilitaires écrits avec des commande du


shell.
• Interprétés directement en shell
• Gère l’interactivité avec l’utilisateur
• Commence par #!/bin/shellutilisé
• Ne pas oublier le droit exécution !
Système de fichiers

• Implanté sur une partition du disque


• Structuré en répertoire
/
• La racine est /
Exo :
cd / /etc /usr /bin

ls
Arborescence de Linux
• / la racine
– /bin
– /usr
– /root
– /lib
– /etc
– /home
– /dev
– /var
– /mnt
– /boot
– /sbin
Commandes du FS
• Répertoires • Fichiers
• mkdir nom-de-répertoire Création • touch mon-fichier création d'un fichier vide
d'un répertoire • more mon-fichier visualisation d'un fichier
par page
• rmdir nom-de-répertoire • rm mon-fichier suppression
Suppression d'un répertoire vide • mv mon-fichier répertoire déplacer
• mv mon-fichier nouveau-nom renommer
• mv répertoire répertoire-d'accueil • cp nom-fichier répertoire-d'accueil/autre-
déplacement nom copie
• file mon-fichier type de fichier
• mv répertoire nouveau-nom
Sortie de ls –l
drwx------ 7 jebali sor 512 Sep 30 17:51 cours1.ps
drwxr-xr-x 4 jebali sor 512 Sep 12 2003 xIngenieur
drwxr-xr-x 4 jebali sor 1024 Oct 10 2003 xMedianet
drwxr-xr-x 14 jebali sor 1024 Sep 28 12:22 xPack
drwx------ 55 jebali sor 1536 May 16 14:48 xPersonnel
drwx------ 4 jebali sor 512 Jul 10 2000 xProjet
drwxr-xr-x 3 jebali sor 512 Dec 29 2000 xReunion
-rw-r--r-- 1 jebali sor 888 Nov 26 1999 notes.txt
drwx------ 2 jebali sor 512 Jan 16 2002 xShrap
drwxr-xr-x 4 jebali sor 512 Jul 11 2000 xThese
lrwxr-xr-x 1 jebali sor 17 Apr 11 2002 yoko -> /home/yoko/
Type de fichiers
• - fichier normale
• d : répertoire (directory)
• b : bloc, fichier spécial mode bloc
• c : caractère, fichier spécial mode caractère
• l : lien symbolique
• p : fichier pipe
• s : socket
Droits
• Organisé en trois lots
• Droits utilisateur, du groupe, des autres
• Exo ls –l
• R: read lire
• W : write écrire
• X : execute exécution
• Attention signification différente selon fichier ou
répertoire
Changer les droits d’accès
• chmod [droit] nomfichier
• Les droits sont exprimés par
ugo+/-rwx

Exercice :
changer les droits de vos fichiers
Enlever le droit de lecture pour le propriétaire
Et voir si vous pouvez afficher son contenu
Droits en octal
• Exprimer les droits avec les chiffres
• 0 pas de droits
• 1 pour - - x
• 2 pour - w –
• 3 pour – wx …
• Exemple :
Droits d’accès sur les répertoires
• x : travaerser avec la commande cd
• r : lister le contenu avec ls
• w : écriture, donc supprimer aussi des
fichiers
Gestion de l’espace de stockage

Consulter le manuel des commandes


df
du
Les inodes
• Comment les voir : ls –li
• C’est quoi ?
– Un numéro qui renvoie sur une structure dans
une table d’inodes
– Information : nom, taille, date, permission,
Les montages : introduction
• Tout appartient à /
• Chaque périphérique est monté sur un
répertoire appartenant à /
• Comment faire : avec la commande mount
• mount /dev/periph /mnt/repertoire
• Puis on peut naviguer dans /mnt/repertoire
Exercice

Calculer le nombre de fichiers et de répertoire dans votre


répertoire de travail

Calculer le nombre de répertoiress et sous-répertoire dans votre


répertoire de travail.
L’éditeur vi
Consulter le manuel de la commande
vi

vi est un éditeur de texte basique.

D’autres éditeurs de texte sont utilisés comme pico.


Gestion des utilisateurs
• Un utilisateur privilégier : root
• Appartient au groupe root

• Et les autres !
Gestion des utilisateurs
Identification
• Uid : user identificateur numéro
d’identification de l’utilisateur
– Pour le root c’est 0
• Gid : Group identificateur numéro
d’identification du groupe
– Pour le root c’est 0
– id user permet d’afficher le UID d’un utilisateur
identification
• finger permet d’afficher les information
d’un utilisateur
Gestion des utilisateurs
• La commande useradd
• Comportement par défaut de la commande
– Ajoute un utilisateur au système
– Lui créer un groupe du même nom
– Crée un répertoire dans /home/ avec ce nom
– Copie /etc/skel/* dans /home/nom-utilisateur
Exercice
• man useradd
– Explorer les différentes options
– Combiner plusieurs options
useradd

Exemple de création d’un compte


Attribution d’un mot de passe
• Avec la commande passwd nomutilisateur
• Demande de confirmation
• Vérification de la robustesse du mot de
passe
Supprimer un utilisateur
• Avec la commande userdel
• Avec l’option –r on supprime aussi son
répertoire
Le fichier /etc/passwd

Extrait du fichier :
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
Le fichier /etc/passwd
• Les champs :
– Nom utilisateur
– Mot de passe : codé, ou x donc dans /etc/shadow, ou !!
Interdit de connexion
– UID
– GID
– Libre : nom et prénom, adresse…
– Le répertoire de connexion
– Le shell
Le fichier /etc/shadow
• Contient les mots de passe cryptés
• Champ :
– Nom utilisateur
– Mot de passe
– Dernière date de modification depuis 1 janv 1970 en j
– Min nombre de jour avant le quel le pass peut être changé
– Max nombre de jour après lequel le pass doit être changé…
– Days_Warm les jours d’informations avant l’expiration de mots de
passe ; par defaut 7 jours
– Disabled_Days nombre de jours d’attente avant la desactivation
– Expire
• Pour vérifier l’intergrite entre les mots de
passes
Utiliser pwck
useradd
• /etc/dafault/useradd : contient les parametres par
defaut utilisés par useradd
passwd
• Créer un mot de passe pour un utilisatreur
• passwd user
• Pour visualiser l’atat de mot de passe
• passwd –S user
Le fichier /etc/group

Contient la description des groupes des utilisateurs


Organisé en champs :
Le nom du groupe
Mot de passe (non utilisé)
Le numéro du groupe
Champs vide
Champs description
Liste des membres
Manipulation des groupes
• La commande groupadd
• groupdel
• groupmod
/etc/group
Exercice
• Noter les droits des fichiers
– /etc/passwd
– /etc/shadow
– /etc/group
/etc/gshadows
Exercice
• Créer « manuellement » un utilisateur
• Attention aux manipulations !
• Démarche :
– Éditer passwd shadow group
– Créer /home/user
– Copier /etc/skel
– Changer le propriétaire et le groupe
Connexion et profil des
utilisateurs
• À la connexion /etc/profile puis
/home/user/.profile
• Sur Linux :
– Si /etc/profile
– Si /home/user/.bash_profile existe, il est exécuté
• Sinon si /home/user/.bash_login existe il est exécuté
– Sinon si /home/.profile existe il est exécuté
• Cas particulier : Mandrake .bash_profile
appelle .bashrc qui appelle /etc/bashrc
Gestion des taches planifiées
• Utilisation de programme deamon at

• Utilisation de daemon cron deamon crond


cron
Exercice
• Changer l’environnement de l’utilisateur en
agissant sur ces fichiers
Les processus
• Définition : un processus est un programme dont
l’exécution est en cours.
• Un programme existe d’abord sous forme de fichier
exécutable
• Il est ensuite chargé en mémoire puis exécuté -> donc
devient processus
• Un même programme peut être exécuté plusieurs fois (cas
de /bin/bash)
• Time sharing : méthode de partage du temps processeur
entre les processus en time slice (= 5ms)
États d’un processus Linux
Running R

Création Exécutable En exécution Fin et destruction

Endormi
Sleeping S

Exécutable : dans la file de l’ordonnanceur


En exécution : sur le processeur
Endormi : attend un événement (clavier, communication, sémaphore)
Zombi : un processus terminé, mais son père n’est pas informé
Un peu de code noyau
volatile long state;

#define TASK_RUNNING 0
#define TASK_INTERRUPTIBLE 1

#define TASK_UNINTERRUPTIBLE 2
#define TASK_ZOMBIE 4
#define TASK_STOPPED 8
Caractéristique d’un processus
• Le PID : Process Identifier, numéro
identificateur du processus
• Ce numéro est attribué par le noyau de
façon unique par processus
• Renvoie vers une table de processus gérée
par le noyau
Linux : Gestion des Processus

•Au démarrage le processus init est créé


•init crée tous les autres processus qui sont ses fils
•La commande ps nous permet de voir les processus créés

init

syslogd crond ….
La commande ps
• Infos retournées par ps: temps CPU utilisé

[jebali:~] ps
PID TT TIME COMMAND
3899 p1 0:00.08 -zsh
numéro de 4743 p1 0:00.14 emacs
processus commande
4180 std 0:00.04 -zsh
exécutée

terminal
associé
Autres informations avec ps
• ps –alx
• UID : numéro de l’utilisateur
• PID : numéro du processus
• PPID : numéro du processus père
• PRI : priorité du processus fixée par le système
• NI(CE) : facteur influençant la priorité
• STAT : état du processus
• TTY : le terminal auquel le processus est rattaché
Exercice
• Exécuter ps –alx
• Retrouver l’arbre généalogique de votre
processus bash
• bash a-t-il des fils ? lesquels ?
Exercice

Ecrire une commande qui calcule le nombre de processus


de l’utilisateur root
Arbre des Processus
• Infos retournées par pstree (-a):
init-+-ahc_dv_0
|-crond
|-cupsd
|-devfsd
|-keventd
|-khubd
|-kinoded
|-klogd
|-ksoftirqd_CPU0
|-kswapd
|-kupdated
|-lockd
|-mdrecoveryd
|-6*[mingetty]
|-10*[mysqld_safe---mysqld---mysqld---mysqld]
|-8*[nfsd]
|-ntpd
|-portmap
Une vue dynamique de l’exécution
des processus : top
• top : affiche en boucle les processus du
système (fréquence 1s)
• On interagie avec top en appuyant sur une
touche :
– h aide
– u nomutilisateur : que les processus de
l’utilisateur
–…
Priorités
• Chaque processus a une priorité d’exécution
• Sous Linux les priorités vont de –20 à 19
• Plus la valeur est grande plus la priorié est
petite
• La commande nice affecte la priorité
• #>nice –5 find / -name *.c 
Avant plan et tâche de fond
• Avant plan : on tape la commande ou le nom du
programme, on n’a pas la main sur le terminal, on
attend que la commande fini
• Tâche de fond ou en arrière plan : on lance la
commande ou le programme puis on a la main sur
le terminal de suite
• Comment ? Avec le signe & à la fin de la
commande
• Typiquement, les serveurs tournent en tâche de
fond
Passage avant - arrière plan
• Suspendre le processus en avant plan Ctrl-z
• bg pour redémarrer le processus et arrière
plan
• fg pour passer le processus de l’arrière plan
à l’avant plan
• jobs connaître les processus en arrière plan
Les signaux
• Un signal est un événement logiciel envoyé
à un processus
• Envoyé par le noyau, l’utilisateur, un autre
programme
• kill –l liste tous les signaux, désignés par un
nom auquel correspond un numéro
Les signaux
•Chaque processus peut recevoir des signanux
•Chaque signal a une signification particulière
•Pour envoyer un signal on utilise la commande kill
•Exemple kill –9 2345

Nom du signal Numéro Description

SIGINT 2 touche Ctrl-C, termine le processus

SIGKILL 9 arrêter tout programme car il ne peut être géré


différemment que le comportement par défaut.
L'arrêt du programme est brutal.
SIGTERM 15 Arrête le processus, mais permet d’effectuer
des opérations avant l’arrêt.
SIGCHLD 17 Informe le père de la mort de son fils
La commande trap
• Permet de modifier la réaction d’un
processus via-à-vis d’une commande
• À la réception d’un signale permet :
– De l’ignorer
– D’exécuter une commande particulière
– De restaurer le comportement par défaut
Exemples
• Ignorer les signaux 2 et 3
– trap ‘’ SIGINT SIGQUIT
• Exécuter une commande
– trap ‘echo signal recu’ SIGINT
• Restaurer le comportement par défaut
– trap - SIGINT

Vous aimerez peut-être aussi