Operating system placement-fr.svg

Nous avons vu qu'un ordinateur a été conçu pour pouvoir lui faire exécuter des algorithmes sous forme de programmes.

Le système d'exploitation est un programme tout à fait singulier, il est chargé en mémoire vive dès le démarrage de l'ordinateur et y reste jusqu'à son extinction. Il a la charge de coordonner l'ensemble des tâches qui sont exécutées par l'ordinateur. Il est situé entre le matériel et les applications.

Les deux familles de systèmes d'exploitation les plus populaires sont Unix (dont macOS, GNU/Linux, iOS et Android) et Windows.

  • Windows est principalement utilisé sur les PC de bureau
  • Linux est principalement utilisé dans les serveurs, téléphones portables via Android et les supercalculateurs.

Voici une courte vidéo de l'institut Mines-Telecom présentant l'histoire des systèmes d'exploitation.

Thumbnail of Youtube video 4OhUDAtmAUo

Responsabilités du système d'exploitation

Le système d'exploitation a les responsabilités suivantes:

  • Gérer le lancement des diverses applications et donner l'illusion que l'ordinateur est multitâche;
  • identifier les utilisateurs;
  • gérer l'organisation du disuqe dur et de ses fichiers;
  • contrôler l'accès aux données du disque dur et ressources de l'ordinateur.

Émulation d'un système linux grâce à JSlinux

Comme nous avons au lycée un système d'exploitation Windows et que le programme officiel demande de travailler sous Linux, nous allons faire le TP de ce chapitre directement dans le navigateur grâce à l'émulateur de système mis au point par Fabrice Bellard accessible à l'adresse :

https://bellard.org/jslinux/vm.html?url=https://bellard.org/jslinux/buildroot-x86.cfg

Emulateur JS Linux

Quelques commandes de base

Où suis-je? pwd

pwd renvoie le dossier courant.

Par défaut quand on ouvre un terminal on se trouve dans son dossier $HOME:

  • /home/username pour l'utilisateur username
  • /root/ si vous êtes root, l'utilisateur administrateur du système.
  • ls liste les fichier et répertoires du dossier courant.
  • ls /chemin/vers/dossier: liste les fichiers et répertoires du dossier donné en argument/

On peut également se déplacer dans le système de fichiers avec cd pour change directory.

  • cd /root
chemins absolus et relatifs

Les chemins d'accés peuvent être specifiées de deux façons:

  • chemin absolu: commence par un / et précise le chemin complet à partir de la racine du système de fichier. P.ex: cd /usr/share/applications
  • chemin relatif: pas de slash au début(ou un point: ./) on part du répertoire courant:

    • cd Music ou cd ./Music
    • cd .. pour remonter d'un dossier
    • cd ../Documents pour remonter d'un dossier et aller dans le dossier Documents

Connaître les droits sur les fichiers ls -l

L'option -l pour long précise dans sa sortie:

permission type utilisateur propriétaire groupe propriétaire taille date nom

ls -l Documents/git/2heoinfo/flask-csv/

total 28
-rw-r--r-- 1 ben docker 2690  4 juil. 10:39 brouillon.ipynb
-rw-r--r-- 1 ben docker  120  4 juil. 12:30 data.csv
-rw-r--r-- 1 ben docker  881  4 juil. 13:53 flask-csv.py
-rw-r--r-- 1 ben docker 1064  4 juil. 13:42 LICENSE
drwxr-xr-x 2 ben docker 4096  2 juil. 22:26 pages
-rw-r--r-- 1 ben docker  501  4 juil. 12:39 README.md
-rw-r--r-- 1 ben docker   70  4 juil. 10:07 run-server.sh

Les droits sont sous la forme drwxrwxrwx.

  • d indique qu'il s'agit d'un dossier
  • r: droit de lecture
  • w: droit d'écriture
  • x: droit d'exécution

Il y a trois types de droits dans l'ordre:

  1. utilisateur
  2. groupe
  3. autres
  • -rw-r--r--: fichier avec droit de lecture et d'écriture pour l'utilisateur propriétaire, mais uniquement des droits de lecture pour les membres du groupe propriétaire et les autres utilisateurs.
  • drwxr-xr-x: dossier avec droit de lecture, écriture et exécution pour l'utilisateur propriétaire, mais uniquement des droits de lecture et d'exécution pour les membres du groupe propriétaire et les autres utilisateurs.

Gérer les droits avec chmod

Un utilisateur a le droit de faire un chmod sur un fichier :

  • s'il est root ;
  • ou s'il est le propriétaire du fichier en question.

Article Wikipedia sur chmod

Les options passées à la commande chmod sont indiquées comme ceci :

chmod options modes fichiers

Pour un fichier : chmod [u g o a] [+ - =] [r w x] nom_du_fichier

Pour le contenu d'un répertoire (de façon récursive) : chmod -R [u g o a] [+ - =] [r w x] nom_du_répertoire

Les lettres u g o a designe les types de propriétaires concernés:

  • u propriétaire (user)
  • g groupe (group)
  • o les autres (others)
  • a tous (all)

Les lettres + - = désignent les changements d'état: + et - pour ajouter ou retirer un type de droit aux droits courants, et l'opérateur = pour les écraser.

Les lettres r w x désignent les permissions: read, write, execute.

Dans le cas précédent si l'on souhaite que tous les utilisateurs du groupe docker puissent lire et écrire dans le fichier brouillon.ipynb, on lance la commande chmod g+w sur le fichier:

chmod g+w Documents/git/2heoinfo/flask-csv/brouillon.ipynb

On peut alors vérifier le changement de droits avec ls -l

ben@coolerarch:~$ ls -l Documents/git/2heoinfo/flask-csv/
total 28
-rw-rw-r-- 1 ben docker 2690  4 juil. 10:39 brouillon.ipynb
...
Ecriture octale

Pour modifier toutes les permission d'une seule commande, on utilise la notation octale. Tableau des valeurs octales Les commandes sont alors condensées pour préciser tous les droits:

  • chmod 755 mon_dossier donne au propriétaire tous les droits, aux membres du groupe et aux autres les droits de lecture et d'accès. C'est un droit utilisé traditionnellement sur les répertoires.
  • chmod 644 mon_fichier donne au propriétaire les droits de modification et lecture, aux membres du groupe et aux autres uniquement les droits de lecture. C'est un droit utilisé traditionnellement sur les fichiers.

Gérer les propriétaires avec chown

L'utilisateur racine(root) peut changer le propriétaire d'un fichier ou d'un dossier(de l'anglais change the owner)

Article Wikipedia sur chmod

La syntaxe générale de la commande est:

chown [-hHLPR] [utilisateur][:groupe] cible1 [cible2 ..]
  • Rendre l'utilisateur john propriétaire du fichier toto.txt: chown john /home/jane/toto.txt
  • Pour modifier le propriétaire de tout le contenu d'un dossier : chown -Rf utilisateur1 /home/dossier1
  • Pour modifier l'utilisateur et le groupe: chown ben:prof /home/jane/toto.txt

Références

Crédit image Golftheman, CC BY-SA 3.0, Lien