• Aucun résultat trouvé

ARCHITECTURES MATÉRIELLES ET SYSTÈME D'EXPLOITATION CHAPITRE 4 : LES SYSTÈMES D'EXPLOITATION ET LES COMMANDES FONDAMENTALES SOUS LINUX

N/A
N/A
Protected

Academic year: 2022

Partager "ARCHITECTURES MATÉRIELLES ET SYSTÈME D'EXPLOITATION CHAPITRE 4 : LES SYSTÈMES D'EXPLOITATION ET LES COMMANDES FONDAMENTALES SOUS LINUX"

Copied!
40
0
0

Texte intégral

(1)

1

ARCHITECTURES

MATÉRIELLES ET SYSTÈME D'EXPLOITATION

CHAPITRE 4 : LES SYSTÈMES

D'EXPLOITATION ET LES COMMANDES FONDAMENTALES SOUS LINUX

(2)

Principes généraux Un système d'exploitation est un programme ou un ensemble de

programmes dont le but est de gérer les ressources matérielles et logicielles d'un ordinateur. Il fournit en particulier aux programmes utilisateurs un accès unifié à ces ressources.

L'utilisateur interagit avec des programmes

(applications) (jeu, navigateur, web, traitement de texte…).

Ces derniers ont besoin d'utiliser les ressources de la machine pour effectuer leur tâches (lire ou sauvegarder des fichiers, afficher des images à l'écran, récupérer des caractères saisis au clavier ou la position du pointeur de la souris). C'est le rôle du système d'exploitation. Il offre un ensemble de fonctions primitives permettant

d'interagir avec le matériel.

(3)

3

Principes généraux Parmi les différents composants logiciels que l'on retrouve dans les

systèmes d'exploitation moderne on retrouve :

L'ordonnanceur qui décide quel programme s'exécute à un instant donné sur le processeur

Le gestionnaire de mémoire, qui répartit la mémoire vive entre les différents programmes en cours

d'exécution

Les différents systèmes de fichiers, qui définissent la manière de stocker les fichiers sur des supports

physiques (disque, clé USB, disques optiques..) La pile réseau qui implémente entre autres des protocoles tels que TCP/IP

Les pilotes de périphériques (ou drivers), dont le but est de gérer les périphériques matériels (carte graphique, disques durs, clavier etc.)

(4)

Historique

Avant 1950 : les premiers calculateurs, tels que l'ENIAC (1945) n'ont pas de système d'exploitation. Ils n'exécutent qu'un seul programme à la fois. Ce dernier est saisi en re-cablant physiquement l'ordinateur (en connectant des câbles entre différentes sections faisant des calculs élémentaires)

L'ENIAC : 1er ordinateur électronique pesait 30 tonnes

(5)

5

Historique

1956 : GM-NAA I/O est l'un des premiers systèmes d'exploitation.

C'est un programme qui fonctionne sur le calculateur IBM 704 (photo ci-contre) et dont le rôle est d'exécuter en séquence des programmes utilisateurs stockés sur des cartes perforées. Il

propose aussi des routines (ou fonctions) pour accéder simplement aux périphériques entrées/sortie.

1967 : MultICS (Multiplexed Information and Computing Service) développé à Bell Labs et au MIT est l'un des premiers systèmes d'exploitation à temps partagé : plusieurs programmes pouvaient s'exécuter en même temps. Il a largement influencé les systèmes

d'exploitation moderne. L'un de ses inventeurs : Fernando Corbato est également l'inventeur des comptes utilisateurs sécurisés à l'aide d'un mot de passe.

1970-1990 : Unix, développé à Bell Labs, est l'un des premiers systèmes d'exploitation multi-tâches et multi- utilisateurs. Les premiers versions du système sont écrites en assembleurs puis dans le langage C, nouvellement créé pour cela.

(6)

Historique

1960-1980 : les ordinateurs du constructeurs IBM utilisent différents variantes de systèmes d'exploitation, différents d'Unix. Ils utilisent en particulier à partir des années 1980 le système MS-DOS de Microsoft. Ce système est conçu pour fonctionner uniquement sur le processeur x86 d'Intel.

1980 - 1990 : Les succès de l'architecture x86 d'Intel et de l'ordinateur personnel (PC, par opposition aux calculateurs) installent MS-DOS comme le système d'exploitation principal pour les particuliers et de nombreux domaines d'activités.

1990 – présent : L'éditeur Microsoft développe un système graphique au dessus de MS-DOS, qui deviendra ensuite un système d'exploitation à part entière, le système Windows. Il

devient, à la suite de MS-DOS, le système d'exploitation le plus utilisé sur PC.

A gauche : Windows 1 (1985) A droite : Windows 10 (2015)

(7)

7

Historique

1984 - 2001 : En parallèle de Microsoft, l'entreprise Apple commercialise des ordinateurs personnels basés sur l'architecture Motorola puis PowerPC. Les machines sont équipées du système d'exploitation Mac Os, un système graphique

1991 : Linus Torvalds, alors étudiant à l'université d'Helsinki, souhaite modifier le système d'exploitation MINIX (une variante d'Unix pour processeur Intel

développe par S. Tanenbaum). Bien que les sources de MINIX soient disponibles, la licence logicielle ne permet pas la diffusion des modifications. Linus Torvalds décide donc de créer son propre système d'exploitation. Il le diffuse sous la licence libre GNU GPL. Le système d'exploitation Linux est né.

(8)

Historique

1991 – présent : Le système Linux connait une adoption rapide, principalement due à sa

diffusion sous licence libre. Il est particulièrement répandu comme système d'exploitation pour serveurs et machines de calculs ou de stockage.

2001 – présent : Apple crée un nouveau système d'exploitation, base sur un système BSD (variante d'Unix), le système macOS (d'abord appelé OS X)

2007 – présent : Apple reprend le cœur du système macOS et en développe une version pour les téléphones portables qu'il commercialise.

2008 – présent : Google diffuse le système d'exploitation Android pour téléphones mobiles.

Ce système utilise le noyau du système Linux, auquel sont ajoutés des programmes et bibliothèques non libres.

Le noyau : c'est le cœur du système d'exploitation qui fournit les fonctionnalités basiques aux programmes. Il consiste au moins en du code qui est exécuté au démarrage de l'ordinateur et dont le rôle est d'initialiser les périphériques

correctement. Le noyau Linux, de même que celui de nombreux autres systèmes ne contient ni programmes utilisateurs, ni interface (graphique ou texte). Un

ordinateur ne possédant que le noyau est donc inutilisable en l'état.

(9)

9

Le standard POSIX Malgré la grande diversité des

systèmes d'exploitation, il existe un ensemble de standards,

regroupés sous le nom de POSIX (Portable Operating System

Interface). Ce standard débute en 1985 grâce à Richard Stallman.

Cela peut s'expliquer par le fait que le standard POSIX est largement inspiré par le système d'exploitation Unix. Or à l'inverse de Linux,

Android, macOS ou iOS, le système d'exploitation Windows n'est pas un dérivé d'Unix, mais de MS-DOS.

Ces standards définissent aussi bien les fonctions de bibliothèques que doit offrit le système d'exploitation (par exemple pour lire et écrire dans les fichiers, accéder au réseau…) que les programmes de base permettant d'utiliser le système.

La plupart des systèmes d'exploitation modernes sont compatibles avec le standard POSIX à l'exception de Windows de Microsoft.

(10)

Si vous êtes utilisateurs Windows, vous allez découvrir un

environnement nouveau, peut-être un peu obscur, mais pourtant infiniment riche : la console de Linux

La console (ou invite de commandes) est né dans les années 70 à une

époque où les écrans couleurs étaient un luxe et ou la puissance de calculs était bien plus faible qu'aujourd'hui.

La console de Linux

Cette console (ou terminal également) attend des saisies de commandes de l'utilisateur. Ce sont ces commandes que nous allons découvrir dans la suite.

Même si les présentations peuvent varier entre les systèmes, le terminal affiche toujours une invite de commandes (constituée du nom de l'utilisateur courant, ici mark, suivi du nom de l'ordinateur, ici linux-desktop, séparé par un @). Un curseur clignotant apparaît après le symbole $, indiquant que le terminal attend la saisie d'une commande.

Ainsi, la gestion d'une souris et d'une interface graphique, chose qui aujourd'hui sont tout à fait normal, ne l'était pas à l'époque. On utilisait donc la console pour gérer l'ordinateur.

(11)

11

Les commandes que nous allons voir sont les mêmes que celles utilisées au début de l'informatique (à l'époque d'UNIX) soit depuis les années 60.

Pour les utilisateurs de MacOS X basé sur le noyau UNIX, toutes les commandes de ce cours sont utilisables

La console de Linux

Pour accéder à la console (en fait il en existe plusieurs) utiliser le raccourci suivant :

Ctrl + Alt + F1

ou + F2 pour la 2ème console, ou + F3 pour la 3ème etc…

Ctrl + Alt + F7 permet de retourner en mode graphique Il faudra alors entrer le login et le mot de passe (ne soyez pas étonné si lorsque vous tapez votre mot de passe, il ne se passe rien. C'est simplement une question de sécurité.)

Vous devriez avoir une ligne comme celle-ci :

steph@NSI:~$

Cependant, nous utiliserons plutôt la console en mode graphique

(12)

12

La console de Linux Sous Raspberry, voici une capture d'écran,

la console (ou terminale) en mode graphique se lance depuis cette icône

Et voici la console lancée

(13)

13

Nous allons dans un premier temps voir quelques commandes pour naviguer dans les fichiers.

Arborescence du système Linux

Voici une arborescence de dossier et de fichier tel que l'on pourrait en trouver dans le système Linux

La base de l'arbre s'appelle la racine et se représente par un "/"

Depuis cette racine se développe des branches menant à des

répertoires (ou dossiers), contenant d'autres répertoires et des fichiers (logo.png par exemple…)

(14)

Pour indiquer la position d'un fichier (ou d'un

répertoire) dans

l'arborescence, il existe 2 méthodes :

indiquer un chemin absolu ou

indiquer un chemin relatif.

Le chemin absolu doit indiquer "le chemin" depuis la racine.

Exemple le chemin absolu du fichier logo.png sera : /home/bob/images/logo.png

rq. on part bien de la racine car le 1er caractère est le "/"

Un chemin relatif commence depuis un répertoire quelconque.

Exemple le chemin pour aller à track1.mp3 depuis le répertoire music est : music/rock/track1.mp3

rq. pas de présence de "/" au début du chemin

Arborescence du système Linux

(15)

15

Et si nous désirons depuis le répertoire music

accéder au fichier logo.png ?

Dans ce cas le chemin relatif est le suivant : ../bob/images/logo.png

Trouver le chemin absolu permettant d'accéder au fichier :

fichier.txt

track2.mp3

Il faut dans ce cas remonter d'un niveau dans l'arborescence

Le "../" a permis de remonter d'un niveau.

Si on veut remonter de deux niveaux on écrira : "../../"

Trouver le chemin relatif permettant d'accéder au fichier :

logo.png depuis le dossier alice

track1.mp3 depuis le dossier home

Arborescence du système Linux

(16)

Dans l'arborescence précédente, vous remarquerez deux utilisateurs bob et alice.

Par défaut, lorsque l'on ouvre une console, on se trouve dans le répertoire personnel de l'utilisateur courant (donc ici dans le répertoire de bob ou alice)

Rq. le caractère "~" indique que vous êtes dans le répertoire courant.

steph@NSI:~$

Arborescence du système Linux

Attention : les systèmes de type "UNIX" sont "sensibles à la casse" (il faut différencier les caractères majuscules et les caractères minuscules) : le répertoire "Musique" et le répertoire "musique" sont 2 répertoires différents.

(17)

17

Pour se déplacer dans l'arborescence en utilisant les chemins absolu ou relatif, il faut utiliser la commande cd (abréviation de change directory)

steph@NSI:~$ cd Documents

Les commandes de navigation dans l'arborescence

Par exemple si je suis dans le répertoire courant et que je veux aller dans le dossier Documents, je peux écrire :

steph@NSI:~$ cd /home/steph/Documents

chemin relatif

chemin absolu

steph@NSI:~/Documents$ ls

'Cours ISN' 'Cours NSI première' 'Formation DU NSI' 'ICN'

Je veux maintenant connaitre le contenu du dossier dans lequel je me trouve, on utilise la commande ls (abréviation de list)

Entrer la commande ls pour connaître le contenu de votre répertoire personnel

RQ. On peut également afficher le contenu d'un répertoire dont on donne le chemin

steph@NSI:~$ ls Documents

'Cours ISN' 'Cours NSI première' 'Formation DU NSI' 'ICN' Par défaut, vous, êtes dans votre répertoire personnel soit "/home/utilisateur/", c'est donc votre répertoire courant (celui dans lequel vous êtes actuellement)

RQ. Le symbole "~" peut remplacer le chemin absolu vers votre répertoire personnel

Si vous êtes perdu, la commande pwd permet de savoir dans quel répertoire vous êtes localisé

(18)

18

Les commandes de navigation dans l'arborescence

steph@NSI:~/Documents$ ls –l total 16

drwxrwxr-x 17 steph steph 4096 juin 23 18:22 'Cours ISN'

drwxrwxr-x 6 steph steph 4096 juin 23 18:22 'Cours NSI première' drwxrwxr-x 5 steph steph 4096 juin 23 18:23 'Formation DU NSI' drwxrwxr-x 12 steph steph 4096 juin 23 18:26 'ICN'

Les commandes ont souvent des paramètres constitués d'une seule lettre précédée d'un tiret.

Ainsi la commande ls possède plusieurs paramètres : -l permet d'afficher les informations détaillées

-a permet d'afficher les fichiers cachés -h permet d'afficher la taille des fichiers

-R permet de visualiser le contenu des sous-dossiers (très pratique) etc…

RQ. Si vous cherchez les paramètres d'une commande, vous pouvez accéder à son manuel (man). Si vous cherchez les paramètres de la commande ls, il suffit d'entrer man ls

Utilisez la commande ls suivie d'un paramètre depuis votre répertoire personnel

(19)

19

Les commandes d'opération sur les répertoires/fichiers Depuis le terminal, on peut effectuer des opérations sur les répertoires et les fichiers

La commande mkdir (abréviation de make directory) permet de créer un nouveau répertoire

Utilisez cette commande pour créer un répertoire de votre choix dans votre répertoire personnel

steph@NSI:~/Documents$ ls

'Cours ISN' 'Cours NSI première' 'Formation DU NSI' 'ICN' steph@NSI:~/Documents$ mkdir test

steph@NSI:~/Documents$ ls

'Cours ISN' 'Cours NSI première' 'Formation DU NSI' 'ICN' 'test'

La commande rmdir (abréviation de remove directory) permet de

supprimer un répertoire uniquement si il est vide. La commande doit être suivie du nom du répertoire à supprimer

La commande touch permet de créer un fichier. Celle-ci doit être suivie du nom du fichier à créer en n'oubliant pas son extension (.txt, .jpg…)

La commande rm permet de supprimer un fichier ou un répertoire. Celle-ci doit être suivie du nom du fichier ou dossier à supprimer. Pour supprimer un dossier non vide, elle doit être suivie du paramètre -r :

'rm -r nom_du_répertoire'

(20)

Les commandes d'opération sur les répertoires/fichiers Encore quelques autres…

La commande cp (abréviation de copy) permet de copier un fichier. Elle s'écrit de la façon suivante :

"cp /répertoire_source/nom_fichier_à_copier /répertoire_destination/nom_fichier"

La commande mv (abréviation de move) permet de déplacer un fichier/dossier. Elle s'utilise comme la commande cp

La commande wc (abréviation de … word count) permet de compter le nombre de lignes, de mots , de caractères dans un fichier texte (-l pour lignes, -w pour les mots, -m pour les lettres…

La commande wget permet de copier un fichier distant sur l'ordinateur.

Exemple : wget http://site.org/rep/02/fichier.txt

La commande find permet de chercher un fichier dans le disque dur.

Elle s'écrit de la façon suivante :

find /adresse_du_repertoire/ element_a_trouver Et pleins d'autres…. des exemples à l'adresse :

https://buzut.developpez.com/tutoriels/101-commandes-indispensables- sous-linux/

(21)

21

La gestion des utilisateurs et des groupes Comme vous l'avez vu précédemment dans l'arborescence, les systèmes Linux sont des systèmes multi-utilisateurs.

C’est-à-dire que plusieurs utilisateurs peuvent partager le même ordinateur.

Cette particularité pourrait poser un problème car dans votre ordinateur certains fichiers sont personnels et vous ne voudriez pas forcément qu'un autre utilisateur de l'ordinateur puissent y accéder.

C'est pourquoi chaque utilisateur possède certains droits lui permettant d'effectuer certaines opérations mais lui en interdisant également d'autres.

Un utilisateur particulier a cependant tous les droits, il s'agit de l'administrateur (ou "root").

C'est lui qui pourra gérer les droits des utilisateurs et donc retirer ou

attribuer certains droits. Cependant d'un point de vue pratique au lieu de gréer les utilisateurs séparément, il est possible de créer des groupes

d'utilisateurs et d'attribuer des droits à un groupe au lieu d'attribuer les droits à chaque utilisateur du groupe.

(22)

22

La gestion des utilisateurs et des groupes Mais quels sont ces droits ?.

Regardons le résultat de ls –l que vous aviez vu précédemment.

steph@NSI:~/Documents$ ls –l total 16

drwxrwxr-x 17 steph steph 4096 juin 23 18:22 'Cours ISN'

drwxrwxr-x 6 steph steph 4096 juin 23 18:22 'Cours NSI première' drwxrwxr-x 5 steph steph 4096 juin 23 18:23 'Formation DU NSI' drwxrwxr-x 12 steph steph 4096 juin 23 18:26 'ICN'

Vous remarquez une suite curieuse de lettres au début de chaque ligne.

Chacune d'elle donne une information liée aux droits.

Les fichiers et les répertoires possèdent 3 types de droits :

• les droits en lecture (symbolisés par la lettre r (read)) : est-il possible de lire le contenu de ce fichier

• les droits en écriture (symbolisés par la lettre w (write)) : est-il possible de modifier le contenu de ce fichier

• les droits en exécution (symbolisés par la lettre x (execute)) : est-il possible d'exécuter le contenu de ce fichier (quand le fichier du code exécutable)

(23)

23

La gestion des utilisateurs et des groupes

steph@NSI:~/Documents$ ls –l total 16

drwxrwxr-x 17 steph steph 4096 juin 23 18:22 'Cours ISN'

drwxrwxr-x 6 steph steph 4096 juin 23 18:22 'Cours NSI première' drwxrwxr-x 5 steph steph 4096 juin 23 18:23 'Formation DU NSI' drwxrwxr-x 12 steph steph 4096 juin 23 18:26 'ICN'

Vous remarquerez que ces lettres se répètent, en effet, il existe 3 types d'utilisateurs pour un fichier ou un répertoire :

• le propriétaire du fichier (par défaut c'est la personne qui a créé le fichier), il est symbolisé par la lettre u

• un fichier est associé à un groupe, tous les utilisateurs appartenant à ce groupe possèdent des droits particuliers sur ce fichier. Le groupe est symbolisé par la lettre g

• tous les autres utilisateurs (ceux qui ne sont pas le propriétaire du fichier et qui n'appartiennent pas au groupe associé au fichier). Ces utilisateurs sont symbolisés la lettre "o"

Ces lettres ne sont pas visibles ici mais nous nous en serviront quand nous modifierons les droits.

(24)

La gestion des utilisateurs et des groupes

steph@NSI:~/Documents$ ls –l total 16

drwxrwxr-x 17 steph steph 4096 juin 23 18:22 'Cours ISN'

drwxrwxr-x 6 steph steph 4096 juin 23 18:22 'Cours NSI première' drwxrwxr-x 5 steph steph 4096 juin 23 18:23 'Formation DU NSI' drwxrwxr-x 12 steph steph 4096 juin 23 18:26 'ICN'

Analysons maintenant la première ligne :

drwxrwxr-x 17 steph steph 4096 juin 23 18:22 'Cours ISN'

le premier symbole est un "d" ce qui signifie que nous avons affaire à un dossier, dans le cas d'un fichier nous aurions eu un "-"

Les 3 symboles suivants : rwx donnent les droits du propriétaire du fichier : lecture autorisée (r), écriture autorisée(w) et exécution autorisée(x)

Les 3 symboles suivants : rwx donnent les droits du groupe lié au fichier : lecture autorisée (r), écriture autorisée(w) et exécution autorisée(x)

Les 3 symboles suivants : r-x donnent les droits des autres utilisateurs : lecture autorisée (r), écriture interdite(-) et exécution autorisée(x)

Le caractère suivant 17 donnent le nombre de liens

le premier steph donne le nom du propriétaire du fichier

le second steph représente le nom du groupe lié au fichier

le 4096 représente la taille du répertoire en octet

le reste est assez évident

(25)

25

La gestion des utilisateurs et des groupes

-rw-r--r-- 1 steph steph 379894 juin 23 18:23 'Présentation_ICN.docx' drwxr-xr-x 6 steph steph 4096 avril 19 05:35 'Evènement'

Analysez les deux lignes ci-dessus :

Première ligne :

le premier symbole est un "-" signifie que c'est un fichier

Les 3 symboles suivants : rw- signifient que pour le propriétaire du fichier : lecture autorisée (r), écriture autorisée(w) et exécution interdite(-)

Les 3 symboles suivants : r-- signifient que pour le groupe lié au fichier : lecture autorisée (r), écriture interdite(-) et exécution interdite(-)

Les 3 symboles suivants : r-- signifient que pour les autres utilisateurs : lecture autorisée (r), écriture interdite(-) et exécution interdite(-)

1lien

le premier steph donne le nom du propriétaire du fichier

le second steph représente le nom du groupe lié au fichier

le 379894 représente la taille du fichier en octet

(26)

La gestion des utilisateurs et des groupes Il est possible avec un terminal de modifier les droits d'un utilisateur.

On utilise pour cela la commande chmod

Cette commande ne sera utilisable que si vous êtes l'administrateur (qui par défaut à tous les droits) ou si vous êtes le propriétaire du fichier (ou du répertoire)

Pour l'utiliser, il est nécessaire de connaitre certains symboles :

• les symboles liés aux utilisateurs : "u" correspond au propriétaire, "g"

correspond au groupe lié au fichier (ou au répertoire), "o" correspond aux autres utilisateurs et "a" correspond à "tout le monde" (permet de modifier "u", "g" et "o" en même temps)

rq : u (user), g (group), o (other), a (all)

• les symboles liés à l'ajout ou la suppression des permissions : "+" on ajoute une permission, "-" on supprime une permission, "=" les permissions sont réinitialisées (permissions par défaut)

• les symboles liés aux permissions : "r" : lecture, "w" : écriture, "x" : exécution.

La commande a alors cette forme :

chmod [u g o a] [+ - =] [r w x] nom_du_fichier

(27)

27

La gestion des utilisateurs et des groupes Exemples :

chmod o-w NSI.txt permet de retirer aux autres utilisateurs le droit en écriture sur le fichier NSI.txt

chmod g+wx NSI.txt permet d'attribuer les droits en écriture et en exécution au groupe lié au fichier

Exercice : En ligne de commande uniquement :

Créer dans le répertoire Documents un répertoire NSI

Dans ce répertoire créer un fichier cours_nsi.txt

Lister alors le contenu de ce répertoire pour avoir le détail des droits

Modifier les droits pour que le groupe ne puisse pas écrire dans le fichier

Modifier les droits pour que les autres utilisateurs ne puissent ni lire, ni écrire, ni exécuter le fichier.

Modifier les droits pour que tout le monde puisse lire, écrire et exécuter ce fichier.

(28)

28

Exercice : En ligne de commande uniquement :

Créer dans le répertoire Documents un répertoire NSI

Dans ce répertoire créer un fichier cours_nsi.txt

Lister alors le contenu de ce répertoire pour avoir le détail des droits

Modifier les droits pour que le groupe ne puisse pas écrire dans le fichier

Modifier les droits pour que les autres utilisateurs ne puissent ni lire, ni écrire, ni exécuter le fichier.

Modifier les droits pour que tout le monde puisse lire, écrire et exécuter ce fichier.

steph@NSI:~$ cd Documents

steph@NSI:~/Documents $ mkdir NSI steph@NSI: :~/Documents $ cd NSI

steph@NSI: :~/Documents/NSI $ touch cours_nsi.txt

steph@NSI: :~/Documents/NSI $ ls -l

steph@NSI: :~/Documents/NSI $ chmod g-w cours_nsi.txt steph@NSI: :~/Documents/NSI $ chmod o-rwx cours_nsi.txt steph@NSI: :~/Documents/NSI $ chmod a+rwx cours_nsi.txt

(29)

29

La gestion des utilisateurs et des groupes

En ce qui concerne les répertoires, les trois types de permissions existent, mais ont un sens bien particulier.

Le droit en lecture su un répertoire signifie que son contenu peut être listé.

Le droit en écriture signifie que l'on peut modifier des entrées du

répertoire, c'est-à-dire créer des fichiers, les supprimer, les renommer. En particulier, il n'est pas nécessaire d'avoir les droits en écriture sur un fichier pour le supprimer, mais il faut avoir les droits en écriture sur son

répertoire parent.

Le droit en exécution pour un répertoire signifie que l'on a le droit d'en faire le répertoire courant et d'afficher les informations détaillées sur les entrées du répertoire.

Par exemple, si l'on suppose qu'il existe deux utilisateurs : alice et bob.

Supposons qu'alice retire les droits en lecture de son répertoire personnel.

alice~$ chmod o-r /home/alice alice~$ ls -l -d /home/alice drwxrr-x--x 1 alice nsi 4096 ….

ici la commande -d de la commande ls permet d'afficher les informations du répertoire /home/alice

Si bob ouvre une session à son tour et utilise un terminal, il ne peut pas voir le contenu du répertoire personnel d'alice

bob~$ cd /home/alice bob~/home/alice$ ls -l

ls : impossible d'ouvrir le répertoire : permission non accordée

(30)

La gestion des utilisateurs et des groupes

Si maintenant alice remet les droits en lecture et retire les droits en exécution.

alice~$ chmod o+r,o-x /home/alice alice~$ ls -l -d /home/alice

drwxrr-xr-- 1 alice nsi 4096 ….

Si bob ouvre une session à son tour et utilise un terminal, il pourra alors lire les entrées, mais pas les informations associées et ne pourra pas pénétrer dans le répertoire.

bob~$ ls -l /home/alice

ls : impossible d'accéder à '/home/alice/photos' : permission non accordée ls : impossible d'accéder à '/home/alice/Documents' : permission non accordée bob~$ cd /home/alice

bash: cd: /home/alice/: Permission non accordée

(31)

31

La gestion des utilisateurs et des groupes Pour information, il est possible de modifier les droits lecture, écriture et exécution en utilisant un système de correspondance en binaire/octale.

Regardez le tableau ci-dessous :

Position Binaire Valeur octale Droits Signification

000 0 - - - Aucun droit

001 1 - -x Exécutable

010 2 - w - Ecriture

011 3 - w x Ecrire et exécuter

100 4 r - - Lire

101 5 r - x Lire et exécuter

110 6 r w - Lire et écrire

111 7 r w x Lire écrire et exécuter

Ainsi un chmod 751 fichier.txt attribuera la possibilité de lire,

écrire et exécuter le fichier au propriétaire, la lecture et l'exécution au groupe lié au fichier, et l'exécution aux autres utilisateurs.

(32)

32

Les motifs glob

Nous avons vu que l'écriture d'une ligne de commande peut se résumer ainsi : alice~$ commande arg1 arg2 …. argn.

Les arguments peuvent contenir des caractères normaux et des caractères spéciaux : " * ", " ? " et des ensembles de caractères entre crochets. Les expressions contenant de tels caractères sont appelées motifs glob.

Le caractère " * " signifie "n'importe quelle séquence de caractères (potentiellement vide)"

Ainsi, dans le répertoire d'alice, le motif glob Photos/img*.jpg permet de lister d'un seul coup tous les noms de fichiers qui commencent par img et qui se terminent par .jpg avec n'importe quelle suite de caractères entre les deux.

Le caractère " ? " est quant à lui remplacé par un seul caractère.

Ainsi, Photos/img_001.j?g dénotera bien des fichiers jpg , le caractère ? pouvant être remplacé par "p"

Enfin, il est possible d'utiliser des ensembles de caractères. Le motif [c1c2…cn]

représente n'importe lequel des caractères énumérés entre crochets.

Par exemple, le motif glob Photos/img_00[2345].jpg correspond au fichier jpg comme img_002.jpg car 2 est présent dans la liste.

Le motif [^c1,c2..cn] représente un caractère qui n'est pas un de ceux dans la liste.

Par exemple, le motifs Documents/[^abc]* représente bien le fichier Documents/diapos.pdf.

En effet, le nom du fichier ne doit pas commencer par "a","b" ou"c", et le motif "*"

indique que la suite de caractères peut être quelconque.

(33)

33

Les motifs glob Un exemple plus complexe mais très puissant :

le /*/ signifie que l'affichage du contenu peut se faire dans n'importe quel répertoire contenu dans le répertoire "alice"

le nom peut contenir un caractère , n'importe lequel après le img, ce caractère peut être suivi d'une suite de n'importe quel caractère. Ces caractères seront suivis obligatoirement de "2" ou "3" et de .jpg.

Par exemple : Le fichier /home/alice/Photos/img_002.jpg correspond à cette recherche.

alice~$ ls /home/alice/*/img?*[23].jpg

(34)

34

Les redirections L'opérateur > permet de rediriger la sortie standard d'un

programme vers un fichier.

Une opération puissante, introduite par le système d'exploitation Unix et repris par tous ses successeurs puis adoptée dans la norme POSIX, est la redirection entre commandes, effectuée au moyen de l'opérateur | .

Considérons trois commandes : alice~$ ls –l */*

-rw-r--r-- 1 alice nsi 500341 juil. 1 09:32 Documents/cours.odt -rw-r--r-- 1 alice nsi 201314 juil. 3 17:45 Documents/diapos/pdf -rw-r--r-- 1 alice nsi 1431099 juil. 1 15:06 Photos/img_001.jpg -rw-r--r-- 1 alice nsi 1300458 juil. 1 15:06 Photos/img_002.jpg Cette 1ère commande affiche simplement la liste des fichiers.

alice~$ ls -l Photos/* > liste_photos.txt

La commande ci-dessus ne provoque pas l'affichage classique de la liste, en revanche les lignes qui auraient dû être affichées dans la console ont été écrites dans le fichier liste_photos.txt.

Si ce dernier existait déjà, il sera écrasé, sinon il sera créé.

Rq. La sortie d'erreurs n'est pas concerné par cette redirection.

(35)

35

Les redirections

alice~$ ls –l */* | sort -k 5 -n -r

-rw-r--r-- 1 alice nsi 1431099 juil. 1 15:06 Photos/img_001.jpg -rw-r--r-- 1 alice nsi 1300458 juil. 1 15:06 Photos/img_002.jpg -rw-r--r-- 1 alice nsi 500341 juil. 1 09:32 Documents/cours.odt -rw-r--r-- 1 alice nsi 201314 juil. 3 17:45 Documents/diapos/pdf

Cette 2ème commande redirige la sortie standard de la commande ls vers l'entrée

standard de la commande sort. Celle-ci permet de trier les lignes d'un fichier. Ici, l'option -k 5 indique à sort de prendre le 5ième champ de chaque ligne comme clé de tri, l'option -n indique que cette clé doit être considérée comme un nombre (et non comme du texte), enfin l'opérateur -r inverse l'ordre de tri. Ces deux commandes reliées par l'opérateur |

permettent donc d'afficher les fichiers par ordre de taille décroissante.

alice~$ ls –l */* | sort -k 5 -n -r | head -n 1

-rw-r--r-- 1 alice nsi 1431099 juil. 1 15:06 Photos/img_001.jpg

Cette 3ème commande ajoute la commande head qui permet de ne garder que les n premières lignes d'un fichier. Ici on ne garde que la 1ère ligne (grâce à l'option -n 1).

L'enchainement de ces trois commandes nous permet donc de trouver le fichier le plus volumineux dans la liste initiale.

(36)

Les redirections L'opérateur > permet de rediriger la sortie standard d'un

programme vers un fichier et écrase le contenu du fichier vers lequel on redirige la sortie.

alice~$ ls Photos > liste.txt

La variante >> permet d'ajouter du nouveau contenu à la fin d'un fichier existant ou de le créer s'il n'existe pas.

alice~$ ls Document >> liste.txt

Dans ce cas la liste des fichiers contenu dans le répertoire Documents sera ajoutée à la fin du fichier liste.txt en préservant le contenu précédent.

(37)

37

Même si l'utilisation de la console semble dans un premier temps moins intuitive qu'une interface graphique (et c'est plutôt vrai), elle est à

l'usage bien plus puissante et beaucoup plus rapide pour qui sait s'en servir.

Ici 510 est le résultat.

Exemple : En mode graphique, allez dans un répertoire qui contient beaucoup de fichiers en tout genre : des fichiers texte, des images, des vidéos… Vous voudriez savoir combien il y a d'images JPEG dans ce dossier…

Avec la console, on peut obtenir ce résultat très facilement :

ls -l | grep jpg | wc -l 510

On peut même faire encore plus fort et enregistrer directement ce nombre dans un fichier texte :

ls -l | grep jpg | wc -l > nb_jpg.txt

La commande grep permet de rechercher une chaîne de caractères dans un fichier.

(38)

38

Correction exercice 1

1. cd ~ : permet de se déplacer dans le répertoire utilisateur qui devient alors le répertoire courant.

2. mkdir NSI : crée un répertoire NSI dans le répertoire courant (qui est donc le répertoire utilisateur).

3. mkdir NSI/TP_SHELL : crée un répertoire TP_SHELL dans le répertoire NSI

4. cd NSI/TP_SHELL : NSI/TP_SHELL devient le répertoire courant

5. cd .. : le répertoire parent devient le répertoire courant (on se trouve donc dans NSI) (vous êtes remonté d'un répertoire)

6. ls : affiche le contenu du répertoire courant (donc affiche TP_SHELL) 7. chmod u+rwx,g-rwx,o-rwx TP_SHELL : change les permissions de

TP_SHELL. Il devient accessible en lecture/écriture et "traversable" (on peut rentrer dedans) pour l'utilisateur et ni lisible, ni écrivable, ni

traversable par les autres.

(39)

39

Correction exercice 2

1. *.jpg : une chaîne quelconque se terminant par ".jpg" : helle.jpg par exemple

2. [0-9]*[a-z] : une chaîne commençant par un chiffre et finissant par une minuscule , par exemple : 1e ou 4_bonne_annee

3. *.??? : une chaîne se terminant par un "." suivi d'exactement trois caractères , par exemple .123 ou ABCDE.FGH ou hello.iii

4. *[^A-Z]* : une chaine contenant un caractère qui n'est pas une majuscule, par exemple ABCD_EFG ou 8AaBCD

5. ????? : une chaine de cinq caractères, par exemple : hello

6. ?*? : une chaîne d'au moins deux caractères (* peut être vide), par exemple : ab ou 1abracada_a

7. *[^.]??? : une chaîne de longueur au moins quatre, dont le quatrième caractère à partir de le fin n'est pas un ".", par exemple : hello ou TP\SHELL

(40)

Correction exercice 3

1. chmod u+rwx,g-rw,g+x,o-rw,o+x ~ 2. chmod u+rwx,g+rw,g-x,o+rw,o-x NSI

chmod u+rwx,g+rw,g-x,o+rw,o-x NSI/TP_SHELL

3. chmod u+rw,u-x,g+r,g-wx,o+r,o-wx NSI/TP_SHELL/lisible.txt 4. chmod u+rw,u-x,g-rwx,o-rwx NSI/TP_SHELL/secret.txt

Correction exercice 4

TEST

a b c

f

e g

foo.txt t.txt t.txt

Références

Documents relatifs

a) Décodez le reste du programme en décrivant clairement quelles instructions se trouvent à partir de l’adresse 109. b) Exécutez le programme et donner le contenu de N, S et I

— Le plus souvent, pour se connecter à un serveur, l’utilisateur ne donne pas l’adresse IP, mais le nom de domaine ou URL (Uniform Resource Locator ), couramment ap- pelée adresse

Rédiger une fonction qui parmi toutes les combinaisons de photos possibles pesant moins de 15 Mo retourne celle qui rapportera le plus au photographe. Indication utilisez

Comme son nom l’indique, cet algorithme permet de déterminer les K plus proches voisins pour ensuite, par exemple, classifier une donnée dans une catégorie ou une autre..

Dupliquer le fichier texte.txt en deux fichier texte1.txt et texte2.txt Déplacer texte1.txt dans le répertoire livre1. Se déplacer dans chaque répertoire et vérifier que le contenu

l Si votre administrateur réseau a autorisé cette opération, Microsoft Windows peut examiner votre réseau et détecter automatiquement les paramètres de connexion réseau.. Si

Pour ceux qui sont sous Mac ou qui veulent installer Mono à partir des sources je les invite à ce rendre sur le site de Mono afin d'y trouver les informations nécessaires à

Implémentation des appels système sous Linux – 177 phys() , de numéro 52, permet à un processus de spécifier une adresse physique (et non une adresse virtuelle) ; sa fonction de