• Aucun résultat trouvé

Gestion des droits d’accès A5

N/A
N/A
Protected

Academic year: 2022

Partager "Gestion des droits d’accès A5"

Copied!
4
0
0

Texte intégral

(1)

TP : Initiation Unix

ENP/ ABDELOUEL Page

15

A5 Gestion des droits d’accès

5.1 Catégories et droits d’accès

Unix défirencie trois catégories de personnes:

L’utilisateur (user) est le propriétaire du fichier.

Chaque utilisateur appartient à un ou plusieurs groupes. La troisième catégorie concerne les droits de toute autre personne connectée à la machine.

Les codes utilisés sont les suivants

u Le propriétaire du fichier: (owner) (u) User g Les membres du groupe de l’utilisateur:

o Les autres utilisateurs (o) Others Sous unix, on ne compte que trois permissions11 distinctes

r Read : Permission de lecture -_, d r w x r w x r w x

w Write : Permission d'écriture

x EXecute : Permission d'exécuter Octale 400 200 100 40 20 10 4 2 1 Lorsqu'on lit les permissions sur un fichier

(cmd ls), on obtient le format suivant : Type User

u Group

g Others

o Le premier groupe de « rwx» concerne les droits du propriétaire (User), le second ceux du groupe et le dernier ceux des autres. Si la lettre apparaît, le droit correspondant est donné. Si la lettre est remplacée par un tiret, le droit correspondant est refusé.

5.2 Droits d’accès : notation octale

Dans la table des i-nodes, les permissions d'accès sont représentées par des "bits" dans un mot qui en contient neuf. Si le bit est activé, alors l'opération correspondante pour le ou les usagers (u,g,o) est permise. La notation octale permet d'attribuer les permissions de manière beaucoup plus efficace et concise. (voir la valeur des différentes permissions dans la notation octale). Ci-après quelques exemples:

Octal Total en binaire Droits Commentaires

644 110 100 100 rw-r--r Le propriétaire peut lire et écrire, les autres peuvent uniquement lire.

755 111 101 101 rwxr-xr-x Comme ci-dessus+exécution permise pour tout le monde 600 110 000 000 rw--- Seul le propriétaire peut lire et écrire.

Remarque : Seul le propriétaire des fichiers ou un utilisateur ayant des droits particuliers (root) peut changer le mode d'accès.

5.3 Signification des permissions

Les droits d’accès s’interprètent de manière différente selon qu’il s’agisse de fichiers ou de répertoires

Fichier (-) Répertoire (d)

r Lecture autorisée La lecture d’un répertoire se fait lorsqu’on liste son contenu en absence de ce droit, on peut néanmoins atteindre et lister les fichiers des sous- répertoires, s’il en existe, et si on connaît leur nom.

w Ecriture autorisée l’écriture dans un répertoire se fait lorsqu’on crée ou détruit un fichier x Exécution autorisée l’exécution se fait lorsqu’un chemin de fichier ou une commande cd

spécifie le nom de ce répertoire En absence de ce droit, aucun accès au répertoire et a la sous arborescence issue du répertoire n'est possible.

5.4 La commande umask

La commande umask permet de déterminer les droits par défaut avec lesquels tout fichier sera créé.

La commandeumask valUmask provoque la prise en compte des droits de base rw-rw-rw- (666 en octal), puis on fait l'opération : (droits de base) et (non umask). Ce qui revient à retirer chaque élément correspondant à un 1 binaire de valUmask. Par exemple :

Droits de base 110 110 110 Droits à la

creation Conséquences

umask 022 000 010 010 110100100 crée les fichiers avec les droits rw-r--r--

11 Il y a des fichiers dont les droits contiennent d’autres lettres que r,w et x. On trouve les lettres s, S, t. Pour en savoir plus, consultez le manuel en ligne de la commande chmod.

(2)

TP : Initiation Unix

ENP/ ABDELOUEL Page

16

A6 Unix : Gestion des processus

6.1 Les processus Unix

o Tous les systèmes multitaches permettent d'avoir plusieurs programmes exécutables en même temps o Un processus est un programme en exécution (vue de

l'usager qui lance des commandes). Une commande donnée peut lancer plusieurs processus.

Principaux attributs d'un processus

Unix assigne un numéro unique à tous les processus actifs pour les différencier et de les contrôler.Chaque processus est donc repéré par un identificateur de processus (PID – Processus IDentifier) qui se présente sous la forme d'un nombre entier. Ainsi, lorsqu'on veut effectuer une action sur un processus donné, on le repère exclusivement par son PID.

Principaux attributs d'un processus PID identificateur de processus PPID Id du processus père

COMMAND intitulé de la commande correspondant au processus PRI Priorité du processus TTY Terminal d’execution UID

et GID propriétaire actif12 réel et effectif.

NI La valeur Nice o Toutes les informations concernant les processus s’obtiennent avec la commande "ps"

6.2 Exécution d’une commande dans le Shell

La gestion des processus sous Unix est dite hiérarchisée. Lorsqu’on lance une commande externe au shell (par exemple ls), un processus fils du shell est créé et la commande s’execute dans celui-ci. Le processus père (le shell) attend que la commande soit exécutée pour redevenir actif.

Ainsi, lorsqu'on demande l'exécution d'une commande, le shell lance la commande et se met en attente de sa terminaison. Ceci est mis en évidence aux yeux de l'utilisateur par le fait que le shell n'imprime un prompt que lorsque la commande en cours est terminée. Quand on travaille de cette maniére on dit que l'on exécute les programmes en premier plan (foreground)

Il existe donc une possibilité pour l'utilisateur de demander au shell de lancer l'exécution d'un programme et de ne pas attendre la fin de son exécution( exécution en arrière-plan :background). Il suffit de taper le caractére & à la fin de la commande

Execution d’une commande dans le Shell Une commande

est Lancée dans le Shell courant

Le processus Père (shell) Le processus Fils (commande)

Dort Est exécuté

Est Informé de la fin d’exécution

Se Réveil Meurt

Comme il ne peut y avoir pour un shell intéractif qu’un processus en avant-plan à la fois, on comprend qu’il est facile de le gérer, en particulier grâce aux caractères (par exemple : arrêt par "CTRL C")..

Par contre, il est possible d’avoir simultanément plusieurs processus en arrière-plan, lancés à partir du même shell intéractif. Dans ce cas, on contrôle ces processus en obtenant leur identifiant et leur état par les commandes ps/jobs, puis éventuellement en modifiant leur état par les commandes fg, bg ou kill13.

12 Propriétaire actif réel et effectif. Le réel est celui qui lance en premier le processus. L'effectif est celui qui exécute le processus avec les mêmes droits que le réel mais avec parfois des droits supplémentaires durant l'exécution du processus

13 Contrairement à son nom, cette commande n’est pas destinée réellement à tuer un processus, mais plutôt à lui envoyer un signal. La commande suspend n’existe pas en standard, mais on peut la définir avec un alias : alias suspend=’kill -STOP’

(3)

TP : Initiation Unix

ENP/ ABDELOUEL Page

17

A7 L'interpréteur de commandes : shell

7.1 L'interpréteur de commandes : shell

Le Shell c’est Les différents Shell

• Une Interface utilisateur avec le système Unix

• Un Interpréteur de commandes

• Un langage de programmation

Le shell est un interpréteur de commandes. Il permet

Shell

sh C Shell csh Bourne Shell bsh Korn Shell ksh

Bourne Again Shell

bash Trusted Shell

tsh Restricted Shell

Rsh Remote Shell

rsh de lancer les commandes UNIX disponibles en leur

affectant un certain nombre de paramètres d’exécution, de contrôler les données d’entrée et de sortie, les messages d’erreur éventuels et surtout de les enchaîner de manière efficace et pratique

Les différences entre ces shells portent essentiellement sur la syntaxe des constructions du langage et sur la richesse fonctionnelle. Mais certaines fonctionnalités sont proposées d'une manière ou d'une autre par tous les shells.

• Le shell est lui même un fichier binaire, qu’il est possible de lancer comme n’importe quelle autre commande UNIX.

• Un shell est démarré pour chaque console ouverte (ou fenêtre X11 équivalente créée); il est interactif dans ce cas, car les lignes de commande tapées au clavier sont exécutées une par une avec confirmation systématique (touche <return>).

7.2 Les méta caractères du shell

Les méta caractères du shell permettent de construire des chaînes de caractères génériques ou de modifier l'interprétation d'une commande: Le shell interprète les caractères spéciaux avant d'exécuter la commande

* désigne une chaîne de caractères quelconque

? désigne un caractère quelconque

[...] désigne les caractères entre crochets, définis par énumération ou par un intervalle

{ et } permettent de regrouper un ensemble de commandes et de les exécuter dans le "shell courant"

( et ) permettent de regrouper un ensemble de commandes et de les exécuter dans un "shell fils".

; sépare deux commandes sur une même ligne

' délimite une chaîne de caractères contenant des espaces (à l'intérieur, tous les méta caractères perdent leur signification)

" délimite une chaîne de caractères contenant des espaces (à l'intérieur, tous les méta caractères perdent leur signification, à l'exception des méta caractères ` et $)

` ou $( ) Le texte donné entre anti-quotes (`) ou $( ) est considéré comme une commande à exécuter et remplacé par son résultat. Cela permet d'utiliser le résultat d'une commande comme argument d'une autre.

\ annule la signification du méta caractère qui suit Exemples

ls *.[csp] Liste de tous les fichiers ayant l'un des suffixes .c, .s ou .p

ls /usr/[a-z][0-9] Liste de tous les éléments de /usr dont le nom est composé de deux caractères : une minuscule suivie d'un chiffre

ls /bin/[!a-z]* Liste de tous les éléments de /bin dont le nom ne commence pas par une minuscule

$ echo Je suis sous `pwd`

(4)

TP : Initiation Unix

ENP/ ABDELOUEL Page

18

7.3 Variables du shell

Comme dans la plupart des langages, il est possible d'utiliser des variables dans un script. Les variables du shell contiennent des chaînes de caractères. Elles n'ont pas besoin d'être déclarées. Elles prennent vie lors de la première affectation (avant la première affectation, elles ont pour valeur la chaîne vide).

Bash, ksh csh Remarques

variable=chaine set variable valeur Affectation de valeur à variable

Attention, Il ne doit pas y avoir d'espace autour du signe =

$variable Valeur de la variable

${variable} Valeur de la variable (permet d'éviter certaines ambiguïtés:

si a="var",${a}b renvoie varb alors que $ab est invalide) Exemple ENP="Ecole Nationale Polytechnique"

On récupère le contenu de la variable en la préfixant du signe $: echo $ENP

Variables pré positionnées

Lorsque le shell courant ou un programme en shell démarre, son environnement contient un certain nombre de variables qui sont positionnées dynamiquement, et dont le contenu (pour les principales,) est le suivant :

$0 Le nom du programme shell en cours.

$1,..${N} Les N paramètres passés au programme (au shell) lors de son appel.

$# Le nombre de paramètres passés à l’appel du programme shell (non compris le paramètre $0)

$* La liste des paramètres passés à l’appel du programme shell (non compris le paramètre $0)

$? Le code d’erreur de la dernière commande exécutée

$HOME Votre répertoire principal

$PWD Le répertoire courant

$PATH La liste des répertoires où le shell est susceptible de trouver les commandes élémentaires à exécuter. Cette variable est toujours positionnée dans les fichiers profile (/etc/profile et .profile) au moment du démarrage

$PS1

$prompt Le prompt (ce qui s’affiche après chaque ligne de commande en mode interactif)

Ces variables d’environnement sont transmises par le système d’exploitation à tous les processus. Chaque processus hérite des variables de son père (le processus qui l’a lancé, ici en général le shell). Ces variables peuvent être consultées ou modifiées.

Exemple :

La variable PS1 contient la forme de votre invite : exemple : PS1="[\u@\h \w

] 7.4 Les Scripts shell :

Les scripts shell sont des programmes courts (et parfois un peu moins courts) interprétés, constitués d'appels de commande et de constructions du langage proposé par le shell correspondant. Ils permettent notamment de contrôler les informations transmises aux programmes et d'analyser de manière rudimentaire les sorties générées par de tels programmes. Pour faire des traitements plus complexes, tout en gardant la souplesse d'utilisation des scripts, on peut faire appel à l'un des nombreux langages de scripts tels que PERL, Python ou encore TCL.

Écriture et exécution d'un script

Un script shell est un fichier texte contenant des instructions, des commandes et des symboles spéciaux. On exécute le script en passant le nom du fichier en paramètre au shell.

% cat exemple #!/bin/sh echo hello

% chmod +x exemple

% ./exemple

Le premier symbole spécial est le #. Tout mot commençant par un # est ignoré et le reste de la ligne également. Le caractère # introduit donc un commentaire.

Il existe un commentaire spécial de la forme #!programme que l'on peut mettre sur la première ligne du script.

Dans ce cas, si le fichier contenant le script a le droit d'exécution, il peut être exécuté comme un programme normal

Références

Documents relatifs

Le Bourne shell est introduit dans le syst` eme UNIX V7. Il a ´ et´ e d´ evelopp´ e par Stephen Bourne avec l’objectif de cr´ eer un outil de scriptage des commandes pour

Pour créer votre premier script qui affichera Bonjour à l'écran, vous allez éditer un fichier que vous appelez script1 avec vi et vous allez taper ceci

Cliquez ici pour telecharger le

• Les noms de fichiers possèdent souvent une extension qui permet d’identifier facilement le type de fichier dont il s’agit (par ex : .c pour un programme C, .f, .f77, .f90 pour

It is also used for variable names and shell keywords, options,and functions; for filename suffixes; and in examples to show the con- tents of files or the output from commands,as

C'est pourquoi il faut toujours faire précéder de son chemin complet une commande qui n'est pas dans le PATH, et ce même si vous êtes dans le même répertoire que la commande. Ainsi,

Habituellement, une ligne de commande saisie au prompt de la console ou bien écrite dans un script est une phrase composée de mots séparés par des espaces (ou des tabulations); le

$ chmod u=rw,go-rwx toto positionne les droits de lecture/écriture pour le propriétaire, et retire tous les droits pour le groupe et les autres.. Afficher le contenu