Système d’exploitation Unix 1 Introduction 1.1 Généralité sur les systèmes d’exploitation Un système d’exploitation (noté SE ou OS pour Operating system) est un ensemble de programmes responsables de la liaison entre les ressources matérielles d’un ordinateur et les applications informatiques de l’utilisateur (traitement de textes, vidéo, . . .). L’OS gère : • le processeur : il le partage entre les différents programmes pour donner l’impression d’un fonctionnement en parallèle ; • la mémoire : il la partage entre les différentes applications. En cas d’insuffisance, il peut créer une zone mémoire sur le disque dur ; • les périphériques : il s’assure que les programmes puissent utiliser l’écran, l’imprimante, le disque dur de façon standard ; • les droits : il s’assure de la sécurité liée à l’exécution des applications en garantissant que les ressources ne sont utilisées que par les programmes et utilisateurs possédant les droits adéquats ; • les fichiers : il gère la lecture et l’écriture dans le système de fichiers et les droits d’accès aux fichiers par les utilisateurs et les applications ; • les informations : il fournit un certain nombre d’indicateurs permettant le diagnostique du fonctionnement de la machine. Le système d’exploitation est composé d’un ensemble de programmes permettant de gérer les interactions avec le matériel. On retrouve principalement : • le noyau représentant les fonctions fondamentales du OS telles que la gestion de la mémoire, des processus, des fichiers et des fonctionnalités de communication ; • l’interpréteur de commande (shell) permettant la communication avec l’OS par l’intermédiaire d’un langage de commandes ; • le système de fichiers permettant d’enregistrer les fichiers dans une arborescence. 1.2 Spécificité et fonctions d’unix Unix est un système d’exploitation multi-utilisateur et multi-tâche. Plusieurs utilisateurs peuvent se connecter sur une même machine, chacun dispose de l’ensemble des ressources du système. Unix comporte donc des mécanismes d’identification et de protection permettant d’éviter toute interférence entre utilisateurs. 1 Plusieurs programmes peuvent être en cours d’exécution en même temps sur une même machine. Un processus est une tâche en train de s’exécuter. En fait, à chaque instant, le processeur ne traite qu’au plus un seul des processus. La gestion des processus est effectuée par le système. La syntaxe des commandes en console est généralement la suivante : nom_commande [options] [arguments]. Les options commencent habituellement par le caractère "-" suivi d’une ou plusieurs lettres clés. Ces options vont modifier le comportement de la commande. Les arguments spécifient les objets (fichiers ou variables) sur lesquels la commande va s’appliquer. Les crochets autour des options et des arguments signifient que ceux-ci sont optionnels. L’aide en ligne donne les règles d’utilisation sur les fonctionnalités d’une commande. Elle s’obtient grâce à la commande man (manual pages). Par exemple, > man man Si on ne connait pas la syntaxe de la commande, il est possible de faire une recherche par mot-clé : > man -k list Certaines commandes acceptent plusieurs noms de fichiers en arguments. Il est intéressant d’avoir des notations permettant de raccourcir l’écriture d’une telle liste : • le caractère ? peut remplacer n’importe quel caractère ; • le caractère * peut remplacer n’importe quelle chaîne de caractères, y compris la chaîne vide ; • [. . .] peut remplacer un caractère quelconque appartenant à la liste donnée entre crochets. Le caractère – permet de représenter un intervalle ; • [! . . .] peut remplacer un caractère quelconque n’appartenant pas à la liste donnée entre crochets. Par exemple, • ??? représente l’ensemble des noms de fichier de longueur trois ; • [a-z]* représente l’ensemble des noms de fichier commençant par une lettre minuscule ; • *[!a-z, A-Z]? représente l’ensemble des noms de fichier dont l’avant-dernière lettre ne peut être ni minuscule, ni majuscule. 2 2.1 Système et manipulations de fichiers Organisation des fichiers On distingue trois types de fichiers : 2 • les répertoires (directories) qui sont les ensembles de fichiers contenant leurs caractéristiques comme les droits d’accès, la taille, la date de création, . . . ; • les fichiers ordinaires (files) qui sont des données stockées sur un disque ; • les fichiers spéciaux qui sont les ensembles de dispositif d’entrée/sortie (terminal, lecteur, . . .). L’ossature du système est une structure arborescente de fichiers et de répertoires. Chaque utilisateur peut ajouter de nouvelles branches. / bin fich dev fich1 etc home ··· Claire Claude ··· rep rep fich12 fich2 Le nom absolu d’un fichier est formé de tous les noms de répertoires traversés depuis la racine (root) pour l’atteindre. Les noms sont séparés par des obliques / avant. Chaque fichier a un nom absolu unique dans le système. Par exemple, /usr/local/bin/ /home/Claude/ sont des noms absolus. Le nom relatif d’un fichier est formé de tous les noms de répertoires traversés depuis le répertoire courant (working directory). Le répertoire courant est noté "·" et est identifié par la commande pwd (path working directory). Au début de la session, le répertoire courant est le répertoire personnel de l’utilisateur. Par exemple, si le répertoire courant est le répertoire Claire : > pwd /home/Claire/ Le répertoire parent est noté "··". Il correspond à un niveau supérieur dans l’arborescence. La commande cd (change directory) permet de changer de répertoire. L’argument de cette commande est le nom du répertoire dans lequel on veut se déplacer. Sans argument, on revient au répertoire personnel. Par exemple, les chemins ../Claude/rep/ ../Claire/rep/ ./rep/ sont des noms relatifs. 3 2.2 La La La La La La Manipulation des fichiers commande commande commande commande commande commande 2.3 mkdir (make directory) permet la création d’un répertoire. rmdir (remove directory) permet la destruction d’un répertoire vide. cp (copy) permet la copie d’un fichier. mv (move) permet le déplacement/renommage d’un fichier. rm (remove) permet la destruction d’un fichier. rm -R (remove) permet la destruction du contenu du répertoire et de lui même. Caractéristiques des fichiers Chaque fichier (ou répertoire) possède un ensemble d’attributs définissant les droits d’accès à ce fichier pour tous les utilisateurs du système. Il existe trois classes d’utilisateurs pouvant éventuellement accéder à un fichier : • le propriétaire du fichier (user) ; • le groupe (group) dans lequel appartient le propriétaire ; • les autres (others). À sa création, un fichier appartient à son auteur. Le propriétaire du fichier peut ensuite distribuer ou restreindre les droits d’accès à ce fichier aux autres utilisateurs du système. Pour chaque classe d’utilisateurs, il y a trois types de droits à un fichier donné : • r : en lecture (read) ; • w : en écriture (write) ; • x : en exécution (execute). Au niveau répertoire, ces droits signifient : • r : droit de lister le contenu du répertoire ; • w : droit de créer ou détruire un fichier s’y trouvant ; • x : droit de traverser ce répertoire. La commande ls permet de visualiser le contenu du répertoire. Avec l’option l, la commande ls -l permet de visualiser les droits et avec l’option a, la commande ls -a permet de visualiser tous les fichiers contenus dans le répertoire courant. Le premier caractère spécifie si le fichier est un répertoire (d) ou un fichier (-). Les neuf caractères suivants identifient les droits d’accès pour chaque classe d’utilisateurs. La présence du droit est codée par la lettre correspondante r, w ou x, l’absence du droit est codée par le caractère - et sont structurés de la façon suivante : r|{z} w x r|{z} wx r|{z} wx propriétaire groupe autres Par exemple, supposons que le répertoire courant contienne le répertoire rep qui contient les fichiers fich, fich1, fich2, fich12 : 4 > ls -l rep total 16 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich - rw- r-- r-- 1 root root 2 mai 18 08:49 fich1 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich12 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich2 > ls -al rep total 24 d rwx r-x r-- 1 root root 2 mai 18 08:49 . d rwx r-x r-- 1 root root 2 mai 18 08:49 .. - rw- r-- r-- 1 root root 2 mai 18 08:49 fich - rw- r-- r-- 1 root root 2 mai 18 08:49 fich1 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich12 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich2 > ls -l rep/fich? total 8 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich1 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich2 > ls -l rep/fich*2 total 8 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich12 - rw- r-- r-- 1 root root 2 mai 18 08:49 fich2 La commande chmod permet de changer les droits d’accès d’un utilisateur. Seul le propriétaire d’un fichier (ou l’administrateur) peut les modifier. La syntaxe est la suivante : > chmod mode nom_fichier où mode indique de quelle façon les droits d’accès doivent être modifiés. Il se décompose en [qui] op acces où • [qui] indique quelles classes sont cencernées et est composé de une ou plusieurs lettres parmi u, g et o. Si aucune classe n’est spécifiée, toutes les classes sont concernées ; • op peut être : + pour ajouter des droits d’accès ; – pour enlever des droits d’accès ; = pour affecter des droits d’accès. • acces est une combinaison des lettres r, w et x qui spécifient les types d’accès. La commande chown permet de changer le propriétaire d’un fichier. La commande chgrp permet de changer le groupe auquel le fichier est rattaché. 5