Historique et caractéristiques d'Unix
Historique et caractéristiques d'Unix
Dr Nagi Taleb
Plan
1
1 Historique du SE Unix/Linux
2 Fonctions principales
2
1 UNIX
Historique
1965 : Système d'exploitation MULTICS (MULTiplexed Information and
Computing Service) :
En cette année, les laboratoires Bell (filiales de la société AT&T, la puissante
compagnie Américaine de télécommunication) joignirent leurs efforts avec la
compagnie General Electric et le projet MAC (Multiple Access Computer) du
MIT (Massachusetts Institue of Technology) pour développer un système
d'exploitation en temps partagé appelé MULTICS.
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 developments d'Unix.
4
1 UNIX
o BSD 4.0 (Berkeley Software Distribution) est apparue en 1980 dans les
laboratoires de l'Université de Berkeley, en Californie.
5
1 UNIX
En cette même année, Microsoft publia une version d'UNIX appelée Xenix
fonctionnant sur les micro-ordinateurs du type PC (Personal Computer) et
confia son commercialisation et son évolution à la société SCO (Santa Cruz
Operation).
6
1 UNIX
1987 : Andrew Tanenbaum chercheur et enseignant en Informatique à
l'université libre d'Amsterdam au Pays-Bas (Hollande) : Développait la
première version du système Minix (Mini UNIX) à des fins pédagogiques.
Minix est un petit système UNIX destiné pour les micro-ordinateurs du type PC.
Andrew Tanenbaum voulait que ce système soit petit pour qu'un non expert ou
un étudiant puisse comprendre son fonctionnement et pour qu'il puisse être
enseigné en un semestre.
8
1 UNIX
Fonctions principales
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.
9
1 UNIX
Fonctions principales
Vous vous retrouvez donc avec deux processus lancés en même temps, c'est le
système d'exploitation qui est chargé de faire en sorte que les deux processus
puissent utiliser les ressources de manière équitable et que le deuxième processus
lancé n'attende pas la terminaison du premier pour se lancer.
1
1 UNIX
Fonctions principales
1
1 UNIX
Fonctions principales
1
1 UNIX
Fonctions principales
1
1 UNIX
Fonctions principales
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.
1
1 UNIX
Fonctions principales
Gestion de la mémoire
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.
1
1 UNIX
Fonctions principales
1
1 UNIX
Caractéristiques
générales d'Unix
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
1
1 UNIX
Caractéristiques
générales d'Unix
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
2
1 UNIX
Caractéristiques
générales d'Unix
fichiers spéciaux. Cette philosophie du "tout fichier" rend très simple la
redirection des flux d'entrées/sorties entre les processus.
2
1 UNIX
Caractéristiques
générales d'Unix
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 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 à travers des interfaces graphiques qui offrent une
convivialité appréciable.
2
1 UNIX
Caractéristiques
générales d'Unix
Les produits sous UNIX restent plus chers et plus rares que ceux du monde de
la micro informatique.
2
1 UNIX
Structure du Système
Unix
Le système UNIX/Linux est organisé en deux couches (coquilles) autour du
matériel :
La première couche le noyau (kernel) : Assure la gestion des processus et leur
enchaînement sur le processeur qu'ils partagent (ordonnancement des
processus), la gestion de la mémoire, du système de fichiers et des entrées-
sorties.
Le noyau est essentiellement écrit en langage C, la partie du noyau qui réalise
les échanges avec le BIOS et les périphériques (pilotes de périphériques) est
écrite en Assembleur.
2
1 UNIX
Structure du Système
Unix
La deuxième couche est composée des commandes utilisateurs : L'ensemble
des commandes facilement accessibles aux utilisateurs leur permettant de
communiquer avec le système.
Ces commandes comprenant l'interpréteur de commandes shell, les éditeurs de
texte (ed, vi, emacs, …, etc), les commandes de base (date, wc, grep, who, …,
etc), le courrier électronique mail, …, les programmes utilisateur ([Link] qui
représente le nom standard des fichiers exécutables produits par le compilateur
C), …, etc.
2
1 UNIX
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.
2
1 UNIX
Structure du Système
Unix
2
1 UNIX
Conclusion
2
1 UNIX
Accès au système par
l’utilisateur
Classement des utilisateurs
Sous UNIX/Linux, un utilisateur est une personne physique ou virtuelle
(utilisateur système) possédant des droits d'accès au système (c'est-à-dire, un
compte utilisateur), un groupe d'utilisateur et éventuellement un répertoire
personnel.
2
1 UNIX
Accès au système par
l’utilisateur
Le super-utilisateur (super-user) ou administrateur système : C'est le maître du
système, c'est-à-dire, un utilisateur privilégié ayant des pouvoirs plus étendus
que les autres utilisateurs.
Il a en effet tous les droits sur le système, les fichiers, les répertoires et les autres
utilisateurs. Il peut par exemple, installer/désinstaller/configurer des applications,
créer/supprimer/verrouiller des comptes utilisateurs, …, etc.
Le nom du super-utilisateur est root.
3
1 UNIX
Accès au système par
l’utilisateur
Les autres utilisateurs : Pour pouvoir se connecter sous UNIX/Linux, un
utilisateur doit être titulaire d'un compte utilisateur contenant le nom de
compte, le numéro d'identification d'utilisateur UID (User IDentification), un
répertoire personnel et un mot de passe.
3
1 UNIX
Accès au système par
l’utilisateur
3
1 UNIX
Accès au système par
l’utilisateur
Remarque
Sous Ubuntu le compte root existe, mais il est par défaut désactivé, ce qui
signifie qu'il est impossible de se connecter en root.
De ce fait, c'est l’utilisateur qui installe la distribution qui est considéré
comme un utilisateur spécial qui hérite les droits d’administrateur (ou de root)
soit par l'utilisation d'une commande particulière en mode texte appelée sudo
ou soit lorsqu'une action sur le système en mode graphique requiert des droits
d’administrateur, son mot de passe est redemandé pour s’assurer que c’est
bien lui qui effectue cette action et non pas une autre personne.
3
1 UNIX
Accès au système par
l’utilisateur
Remarque
Sous ubuntu, pour devenir root pendant une session de travail dans un
terminal shell, il faut utiliser la commande sudo su. Cette commande
demande le mot de passe de l'administrateur qu'il faut taper pour pouvoir
accéder au compte root. Pour quitter le compte root, il suffit de taper exit ou
Ctrl+D.
3
1 UNIX
Accès au système par
l’utilisateur
La connexion (login) et la déconnexion (logout) sur un système UNIX
La connexion (login) est l'opération qui consiste à se connecter sur un système
multiutilisateur. Pour se connecter à un système UNIX/Linux, un utilisateur doit
avoir un nom de compte utilisateur (login name) et éventuellement un mot de
passe.
Une fois un utilisateur est connecté, le système l'associe à son groupe par défaut
et le positionne dans son répertoire personnel (ou privé, home directory) qui est
généralement /home/<nom_d'utilisateur>. Ce répertoire est créé par
l'administrateur système au moment de la création du compte utilisateur.
3
1 UNIX
Accès au système par
l’utilisateur
3
1 UNIX
Accès au système par
l’utilisateur
Gestion des utilisateurs et des groupes
Pour gérer les comptes utilisateurs et les groupes, il faut devenir super-utilisateur
(ou root), pour cela, dans un terminal, tapez la commande sudo su ou pour plus
de sécurité, utilisez la commande sudo devant chacune des commandes de
gestion de comptes utilisateurs et de groupes qui sont présentées ci-après, il faut
ensuite introduire le mot de passe de l'administrateur.
3
1 UNIX
Accès au système par
l’utilisateur
3
1 UNIX
3
1 UNIX
4
1 UNIX
4
1 UNIX
4
1 UNIX
Ainsi:
1. Si les deux options -d et –m sont utilisées, alors la commande useradd
créera le répertoire indiqué après l'option –d et recopiera les fichiers
d'initialisation du shell du dossier /etc/skel vers le répertoire personnel.
2. Si l'option -d n'est pas utilisée et si l'option –m est utilisée, alors la
commande useradd créera le répertoire par défaut /home/nom_utilisateur et
recopiera les fichiers d'initialisation du shell du dossier /etc/skel vers le répertoire
personnel.
4
1 UNIX
Après avoir créé un compte utilisateur, il faut utiliser la commande passwd pour
attribuer un mot de passe à l'utilisateur, car sinon, le compte ne sera pas activé et
n'aura pas de mot de passe.
4
1 UNIX
Exemple : Création d'un compte utilisateur ayant pour nom de compte utilisateur
ng, pour nom complet Nagi, pour groupe par défaut ISCAE qu'on suppose déjà
créé, pour répertoire personnel /home/ng et pour shell de connexion /bin/bash.
sudo useradd ng−g ISCAE–c "Nagi" −d /home/ng -s /bin/bash −m
Ou tout simplement
sudo useradd ng−g ISCAE–c " Nagi" -s /bin/bash −m
sudo passwd ng # Attribution d'un mot de passe à l'utilisateur ng
pour l'activer.
4
1 UNIX
Suppression d’un compte utilisateur
Il faut utiliser la commande userdel :
Remarque : Sous ubuntu, s'il existe un seul compte administrateur, il faut éviter
de le supprimer. En effet, s'il est supprimé, il n'y aura plus que root sous le
système et Ubuntu interdit de se connecter en root.
4
1 UNIX
Modification des informations sur un compte utilisateur
La commande :
chfn [-f nom_complet] [-r no_bureau] [-w tel_bureau] [-h tel_personel]
[-o autres informations] [utilisateur]
Modifie le nom complet et les informations associées à un utilisateur. Sans
paramètres, la commande affiche des messages interactifs permettant de saisir
ces informations.
4
1 UNIX
Modification d’un compte utilisateur
4
1 UNIX
L'option –G permet de changer les groupes de l'utilisateur nom_utilisateur par
le(s) groupe(s) indiqué(s) après l'option. Les anciens groupes (sauf le groupe par
défaut) qui ne sont pas mentionnés après l'option seront supprimés des groupes
de l'utilisateur. Si l'option indique plusieurs groupes, il faut les séparer par des
virgules sans espaces.
Avec l'option –aG, la commande ajoute l'utilisateur au(x) groupe(s) indiqués
après l'option sans perdre les anciens groupes de l'utilisateur.
Un utilisateur (pas forcément root) peut changer ou définir à tout moment son
mot de passe à l'aide de la commande :
passwd [-l | -u | -d] [nom_utilisateur]
5
1 UNIX
5
1 UNIX
5
1 UNIX
5
1 UNIX
5
1 UNIX
5
1 UNIX
Exemple
$ id <Entrée>
uid=1000(ben) gid=1001(SMI) groups=1001(SMI), 4(adm), 20(dialout),
24(cdrom), 46(plugdev), 116(lpadmin), 118(admin), 124(sambashare)
$ id -u <Entrée>
1000
# id -nu
nagi
$
5
1 UNIX
Remarques :
Ubuntu fourni aussi les commandes adduser, deluser, addgroup et delgroup
pour respectivement ajouter un nouveau utilisateur, supprimer un utilisateur,
ajouter un nouveau groupe et supprimer un groupe. Ces commandes n'existent
que sous la distribution Debian et tous ses descendants, dont Ubuntu. En
revanche, les commandes useradd, userdel, groupadd et groupdel sont des
commandes Unix traditionnelles fonctionnant partout.
5
1 UNIX
Tous les utilisateurs déclarés sous UNIX/Linux sont référencés dans les
fichiers /etc/passwd et/ou /etc/shadow.
Le fichier /etc/passwd contient une ligne par utilisateur. Cette ligne comporte 7
champs séparés par le caractère : (deux-points). La syntaxe de chaque ligne est :
Nom de login:mot de passe crypté:UID:GID:Nom complet:Répertoire
personnel:shell
L'UID et le GID sont respectivement le numéro d'identification et le numéro
d'identification du groupe par défaut de l'utilisateur
5
1 UNIX
Pour des raisons de sécurité, certaines versions d'UNIX ne stockent pas les mots
de passe dans le fichier /etc/passwd. Si le champ des mots de passe dans le
fichier /etc/passwd fait apparaître des x, cela signifie qu'un autre fichier
accessible uniquement par root de nom /etc/shadow qui est utilisé pour stocker
le mot de passe crypté. Actuellement, toutes les versions Linux utilisent ce
fichier.
Pour vérifier la validité du fichier /etc/passwd, il faut utiliser la commande pwck
(password cheek).
5
1 UNIX
Les groupes sont déclarés dans le fichier /etc/group. Ce fichier contient les
références aux différents groupes, il contient une ligne par groupe. Cette ligne est
formée de 4 champs séparés par le caractère : (deux-points).
Nom de groupe:mot de passe de groupe:GID:UID (ou noms) des utilisateurs
Linux n'utilise pas le champ "mot de passe de groupe", ce champ reste vide ou
contient un astérisque (*) ou un x.
Dans le champ "UID (ou noms) des utilisateurs", les UID (ou les noms des
comptes) des utilisateurs membres du groupe sont séparés par des virgules.
6
1 UNIX
Il faut noter que les utilisateurs qui admettent ce groupe comme groupe par
défaut peuvent ne pas figurer dans le champ "UID (on noms) des utilisateurs".
La ligne de compte de ces utilisateurs dans le fichier /etc/passwd fait tout
simplement référence au groupe par défaut en indiquant son numéro dans le
champ GID, le quatrième champ de cette ligne.
6
1 UNIX
6
1 UNIX
Exemples :
Arrêt du système dans une minute : sudo shutdown -h 1
Arrêt du système à l'heure indiquée : sudo shutdown –h 13:30
Avec l'option -r, sudo shutdown -r 0 indique à UNIX/Linux de redémarrer
l'ordinateur.
L'utilisation de la commande shutdown permet d'arrêter le système de façon
propre. En effet, cette commande permet d'avertir tous les utilisateurs connectés
et donne un délai d'attente avant d'arrêter le système.
6
1 UNIX
6
1 UNIX