Permissions UNIX

ÔĽŅ
Permissions UNIX

Permissions Unix

Les permissions UNIX constituent un système simple de définition des droits d'accès aux ressources, représentées par des fichiers disponibles sur un système informatique. Elles restent le moyen le plus utilisé pour définir les droits des utilisateurs sur les systèmes de type UNIX.

Sommaire

Introduction

Notion d'utilisateur (user)

Toute entité (personne physique ou programme particulier) devant interagir avec un système UNIX est authentifié sur cet ordinateur par un utilisateur ou user. Ceci permet d'identifier un acteur sur un système UNIX. Un utilisateur est reconnu par un nom unique et un numéro unique (la correspondance nom/numéro est stockée dans le fichier /etc/passwd).

Tous les utilisateurs UNIX n'ont pas les mêmes droits d'accès à l'ordinateur (ils ne peuvent pas tous faire la même chose), et ceci simplement pour des raisons de sécurité et d'administration. Par exemple, pour éviter tout problème sur Internet, l'utilisateur qui gère le serveur HTTP n'a pas le droit d'exécuter des commandes localement, pour éviter que le serveur puisse le faire.

Certains utilisateurs ne peuvent en effet pas s'authentifier sur l'ordinateur et acc√©der √† un interpr√©teur de commandes. Cela ne veut toutefois pas dire qu'ils ne peuvent rien faire sur l'ordinateur : il leur est possible de lire ou √©crire des fichiers mais cela n√©cessite que le super-utilisateur (voir plus bas) d√©marre un programme pour cet utilisateur. Ce m√©canisme est g√©n√©ralement utilis√© pour les d√©mons : le super utilisateur d√©marre le d√©mon et pour √©viter que ce dernier puisse faire tout et n'importe quoi sur la machine, il est par exemple attribu√© √† l'utilisateur bin.

Sur tout système UNIX, il y a un super-utilisateur, généralement appelé root, qui a tous les pouvoirs. Il peut accéder librement à toutes les ressources de l'ordinateur, y compris à la place d'un autre utilisateur, c'est-à-dire sous son identité. En général, du moins sur les systèmes de production, seul l'administrateur système possède le mot de passe root. L'utilisateur root porte le numéro 0.

Groupe

Un utilisateur UNIX appartient à un ou plusieurs groupes. Les groupes servent à rassembler des utilisateurs afin de leur attribuer des droits communs. Par exemple, sur un système doté d'une carte son, il y a souvent un groupe audio qui regroupe les utilisateurs autorisés à en faire usage.

Propriété

Tout fichier UNIX poss√®de un propri√©taire. Au d√©part, c'est l'utilisateur qui a cr√©√© le fichier mais "root" peut le ¬ę donner ¬Ľ √† un autre utilisateur. Seul le propri√©taire du fichier et le super utilisateur (root) peuvent changer les droits.

Traditionnellement, les Unix "System V" permettent au propriétaire de changer le possesseur d'un fichier, mais dans la tradition BSD et sous Linux, seul "root" peut changer le propriétaire d'un fichier[1], notamment pour éviter qu'un utilisateur échappe au quotas disque en donnant ses fichiers à un autre utilisateur.

Un fichier UNIX appartient aussi √† un groupe. Ceci donne pleinement son sens √† la notion de groupe. On d√©finit ainsi les actions du groupe sur ce fichier. Ce groupe est souvent le groupe d'appartenance du propri√©taire, mais ce n'est pas obligatoire. Tout d√©pend en fait de ce qu'on veut faire. On peut imaginer un sc√©nario de d√©l√©gation d'administration : le super utilisateur est propri√©taire d'un fichier de configuration, mais autorise tous les utilisateurs du groupe admin (les administrateurs) √† modifier ce fichier. Le fichier en question aura donc root comme propri√©taire et appartiendra au groupe admin.

Rappelons que les répertoires sous UNIX sont aussi des fichiers. Les droits sur les répertoires (mais aussi les périphériques, etc.) fonctionnent exactement de la même façon que sur des fichiers ordinaires.

Droits d'accès à un fichier

À chaque fichier est associée une liste de permissions, qui déterminent ce que chaque utilisateur a le droit de faire du fichier.

Norme POSIX

Les permissions d'accès aux fichiers dans la norme POSIX sont inspirées des permissions d'accès UNIX.

Fonctionnement

Les différents droits

Les droits sur un fichier UNIX s'attribuent sur trois ¬ę actions ¬Ľ diff√©rentes possibles :

  • la lecture (r) : on peut par exemple lire le fichier avec un logiciel. Lorsque ce droit est allou√© √† un r√©pertoire, il autorise l'affichage du contenu du r√©pertoire (la liste des fichiers pr√©sents √† la racine de ce r√©pertoire).
  • l'√©criture (w) : on peut modifier ou supprimer le fichier. Lorsque ce droit est allou√© √† un r√©pertoire, il autorise la cr√©ation, la suppression et le changement de nom des fichiers qu'il contient, quels que soient les droits d'acc√®s des fichiers de ce r√©pertoire (m√™me s'ils ne poss√®dent pas eux-m√™mes le droit en √©criture). N√©anmoins le droit sp√©cial sticky bit permet de passer outre ce comportement.
  • l'ex√©cution (x) : on peut ex√©cuter le fichier s'il est pr√©vu pour, c'est-√†-dire si c'est un fichier ex√©cutable. Lorsque ce droit est attribu√© √† un r√©pertoire, il autorise l'acc√®s (ou ouverture) au r√©pertoire.

On appelle parfois r, w et x des ¬ę flags ¬Ľ ou ¬ę drapeaux ¬Ľ. Sur un fichier donn√©, ces 3 flags doivent √™tre d√©finis pour son propri√©taire, son groupe, mais aussi les autres utilisateurs (diff√©rents du propri√©taire et n'appartenant pas au groupe).

Seuls root et le propriétaire d'un fichier peuvent changer ses permissions d'accès.

Représentation des droits

Cet ensemble de 3 droits sur 3 entit√©s se repr√©sente g√©n√©ralement de la fa√ßon suivante : on √©crit c√īte √† c√īte les droits r, w puis x respectivement pour le propri√©taire (u), le groupe (g) et les autres utilisateurs (o). Les codes u, g et o (u comme user, g comme group et o comme others) sont utilis√©s par les commandes UNIX qui permettent d'attribuer les droits et l'appartenance des fichiers. Lorsqu'un flag est attribu√© √† une entit√©, on √©crit ce flag (r, w ou x), et lorsqu'il n'est pas attribu√©, on √©crit un '-'. Par exemple,

 rwxr-xr--
 \ /\ /\ /
  v  v  v
  |  |  droits des autres utilisateurs (o)
  |  |
  |  droits des utilisateurs appartenant au groupe (g)
  |
 droits du propriétaire (u)

signifie que le propriétaire peut lire, écrire et exécuter le fichier, mais que les utilisateurs du groupe attribué au fichier ne peuvent que le lire et l'exécuter, et enfin que les autres utilisateurs ne peuvent que lire le fichier.

Une autre mani√®re de repr√©senter ces droits est sous forme binaire gr√Ęce √† une clef num√©rique fond√©e sur la correspondance entre un nombre d√©cimal et son expression binaire :

  • 0 = 000
  • 1 = 001
  • 2 = 010
  • 3 = 011
  • 4 = 100
  • 5 = 101
  • 6 = 110
  • 7 = 111

A l'expression binaire en trois caract√®res sont associ√©s les 3 types de droits (r w x) ; il suffit donc de d√©clarer pour chacune des cat√©gories d'utilisateur (user, group, others) un chiffre entre 0 et 7 auquel correspond une s√©quence de droits d'acc√®s. Par exemple :

  • 777 donne 111 111 111 soit r w x r w x r w x
  • 605 donne 110 000 101 soit r w - - - - r - x
  • 644 donne 110 100 100 soit r w - r - - r - -
  • 666 donne 110 110 110 soit r w - r w - r w -

Une astuce permet d'associer rapidement une valeur d√©cimale √† la s√©quence de droits souhait√©e. Il suffit d'attribuer les valeurs suivantes pour chaque type de droit :

  • lecture (r) correspond √† 4
  • √©criture (w) correspond √† 2
  • ex√©cution (x) correspond √† 1

Puis on additionne ces valeurs selon qu'on veuille ou non attribuer le droit en correspondant.

Ainsi, rwx ¬ę vaut ¬Ľ 7 (4+2+1), r-x ¬ę vaut ¬Ľ 5 (4+1) et r-- ¬ę vaut ¬Ľ 4. Les droits complets (rwxr-xr--) sont donc √©quivalent √† 754. Une mani√®re directe d'attribuer les droits est de les √©crire sous cette forme et d'utiliser le code √† 3 chiffres r√©sultant avec chmod (voir ci-apr√®s).

Utilisation

Pour voir quels droits sont attribu√©s √† un fichier, il suffit de taper la commande ls -l nom_du_fichier :

 # ls -l toto
 -rwxr-xr--    1 user     group     12345 Nov 15 09:19 toto 

La sortie signifie que le fichier toto (de taille 12345) appartient √† ¬ę user ¬Ľ, qu'on lui a attribu√© le groupe ¬ę group ¬Ľ, et que les droits sont rwxr-xr--. On remarque qu'il y a en fait 10 caract√®res sur la zone de droits. Le premier - n'est pas un droit, c'est un caract√®re r√©serv√© pour indiquer le type de fichier. Il peut prendre les valeurs suivantes :

  • d : r√©pertoire
  • l : lien symbolique
  • c : p√©riph√©rique de type caract√®re
  • b : p√©riph√©rique de type bloc
  • p : fifo
  • s : socket
  • - : fichier classique

Le changement de droits s'effectue avec la commande chmod ; le changement de propri√©taire ou de groupe, √† l'aide de la commande chown.

Changer les droits peut s'effectuer √©galement simplement √† partir du nombre √† 3 chiffres calcul√© comme pr√©c√©demment. Ainsi, pour attribuer les droits r-xr-xr-x (i.e. 555), il suffit d'ex√©cuter :

 chmod 555 nom_du_fichier

Droits étendus

Il existe d'autres droits spéciaux, rendant possible une gestion plus poussée des permissions.

Droit SUID

Définition

Ce droit s'applique aux fichiers ex√©cutables, il permet d'allouer temporairement √† un utilisateur les droits du propri√©taire du fichier, durant son ex√©cution. En effet, lorsqu'un programme est ex√©cut√© par un utilisateur, les t√Ęches qu'il accomplira seront restreintes par ses propres droits, qui s'appliquent donc au programme. Lorsque le droit SUID est appliqu√© √† un ex√©cutable et qu'un utilisateur quelconque l'ex√©cute, le programme d√©tiendra alors les droits du propri√©taire du fichier durant son ex√©cution. Bien s√Ľr, un utilisateur ne peut jouir du droit SUID que s'il d√©tient par ailleurs les droits d'ex√©cution du programme. Ce droit est utilis√© lorsqu'une t√Ęche, bien que l√©gitime pour un utilisateur classique, n√©cessite des droits suppl√©mentaires (g√©n√©ralement ceux de root). Il est donc √† utiliser avec pr√©caution.

Notation

Son flag est la lettre s ou S qui vient remplacer le x du propri√©taire. La majuscule sur le flag permet de voir le flag x (droit d'ex√©cution du propri√©taire) cach√© par le droit SUID. C'est un s si le droit d'ex√©cution du propri√©taire est pr√©sent, ou un S sinon. Il se place donc comme ceci :

 ---s------  ou  ---S------

Un fichier avec les droits

 -rwxr-xr-x

auquel on ajoute le droit SUID aura donc la notation

 -rwsr-xr-x

Valeur

Le droit SUID possède la valeur octale 4000.
Exemple : - r w s r - x r - x correspond √† 4755.

Exemple d'utilisation

Le droit SUID est utilis√© pour le programme mount (g√©n√©ralement localis√© dans /bin) :

 -rwsr-xr-x  1 root bin 68804 /bin/mount

Protection contre une attaque de type sushi

Sur linux, des restrictions de droit ont √©t√© faites sur le drapeau SUID :

  • pour un fichier de script, l'ex√©cution se fera sans tenir compte du drapeau SUID
  • Il semble de plus que si un utilisateur autre que le propri√©taire modifie le fichier, alors le bit SUID est remis √† 0.

Il n'est pas s√Ľr que les versions d'Unix actuelles aient impl√©ment√© cette s√©curit√© ; dans ce cas, cela ouvre la porte √† une attaque qui est appel√©e sushi (su shell) : l'utilisateur root cr√©e un fichier de shell avec le bit SUID en laissant les droits en √©criture √† d'autres utilisateurs ; l'un d'eux pourra modifier le fichier et ex√©cuter tout ce qu'il voudra avec les droits de root.

Droit SGID

Définition

Ce droit fonctionne comme le droit SUID, mais appliqué aux groupes. Il donne à un utilisateur les droits du groupe auquel appartient le propriétaire de l'exécutable et non plus les droits du propriétaire. De plus, ce droit a une tout autre utilisation s'il est appliqué à un répertoire. Normalement, lorsqu'un fichier est créé par un utilisateur, il en est propriétaire, et un groupe par défaut lui est appliqué (généralement users si le fichier a été créé par un utilisateur, et root ou wheel s'il a été créé par root). Cependant, lorsqu'un fichier est créé dans un répertoire portant le droit SGID, alors ce fichier se verra attribuer par défaut le groupe du répertoire. De plus, si c'est un autre répertoire qui est créé dans le répertoire portant le droit SGID, ce sous-répertoire portera également ce droit.

Notation

Comme le droit SUID, il vient remplacer le flag x, mais celui des droits du groupe, et la majuscule indique le droit d'exécution x caché, elle est présente s'il n'est pas alloué.

 ------s---  ou  ------S---

Un fichier avec les droits

 -rwxr--r--

auquel on ajoute le droit SGID aura donc la notation

 -rwxr-Sr--

Valeur

Le droit SGID possède la valeur octale 2000.
Exemple : - r w x r - S r - - correspond √† 2744.

Sticky Bit

Ce droit (traduction bit collant) est utilisé pour manier de façon plus subtile les droits d'écriture d'un fichier. En effet, un droit d'écriture signifie que l'on peut modifier et supprimer le fichier. Le sticky bit permet de faire la différence entre les deux droits.

Définition

Lorsque ce droit est positionné sur un répertoire, il interdit la suppression des fichiers qu'il contient à tout utilisateur autre que le propriétaire. Néanmoins, il est toujours possible pour un utilisateur possédant les droits d'écriture sur ce fichier de le modifier (par exemple de le transformer en un fichier vide). Remarquons que c'est le même principe que les pages de wikipédia, elles sont modifiables mais on ne peut pas les supprimer.

Pour les fichiers, l'utilisation est tout autre. Le bit collant (sticky bit) indique alors que ce fichier doit encore rester en mémoire vive après son exécution. Le but était, à l'époque, d'améliorer les performances en évitant de charger/décharger un fichier de la mémoire (par exemple, un exécutable ou une bibliothèque logicielle). Le terme sticky (collant) voulait dire que le fichier restait collé en mémoire.

Notation

Son flag est le t ou T, qui vient remplacer le droit d'exécution x des autres utilisateurs que le propriétaire et ceux appartenant au groupe du fichier, de la même façon que les droits SUID et SGID. La majuscule fonctionne aussi de la même façon, elle est présente si le droit d'exécution x caché n'est pas présent.

 ---------t ou ---------T

Un fichier avec les droits

 -rwxr-xr-x

auquel on ajoute le droit sticky bit aura donc la notation

 -rwxr-xr-t

Valeur

Le droit sticky bit possède la valeur octale 1000.
Exemple : - r w x r - x r - t correspond √† 1755.

Exemple d'utilisation

Sur certaines distribution linux, le sticky bit est utilis√© pour le r√©pertoire /tmp, qui doit √™tre accessible en √©criture par tous les utilisateurs, sans que ceux-ci se suppriment leurs fichiers les uns les autres :

 drwxrwxrwt   86 root root  20480 tmp

Ajout de la gestion des listes de contr√īle d'acc√®s

Avec les permissions Unix, il n'est pas possible d'avoir une gestion des Liste de contr√īle d'acc√®s tr√®s fine : On ne peut seulement donner des droits particuliers qu'√† :

  • 1 utilisateur
  • 1 groupe d'utilisateurs
  • ceux qui ne sont ni l'un, ni l'autre.

Il est possible d'y rem√©dier en rajoutant un logiciel suppl√©mentaire, pour la gestion des liste de contr√īle d'acc√®s. Dans le cas particulier d'une des distributions Linux, cela s'obtient en rajoutant le paquetage correspondant (exemple : paquetage acl, version 2.2.23-1 dans la version sarge de debian).

Comparaison avec le NTFS de Microsoft

Les permissions NTFS de Microsoft et les permissions d'acc√®s Unix sont conformes √† la norme POSIX, mais sont profond√©ment diff√©rentes :

  1. NTFS inclut la gestion des Liste de Contr√īle d'acc√®s (ACL) : les syst√®mes de type Unix ne disposent pas tous des ACL. Les ACL permettent de contr√īler plus finement les droits de bases, en ayant plus de d√©coupages au niveau des droit (lecture, √©criture, etc.), et de d√©finir les droits pour chaque utilisateur et chaque groupe, si on le souhaite ;
  2. Sur NTFS, il y a 2 permissions qui n'existent pas explicitement sur les syst√®mes de type Unix :
  3. Le droit de modification NTFS ne permet pas la suppression du fichier comme sous UNIX, il y a donc un droit spécifique de suppression du fichier.

La complexit√© de la gestion des droits sous Windows n'est pas forc√©ment un avantage : en augmentant la complexit√©, on peut diminuer la maitrise et la compr√©hension des interactions entre les droits du syst√®me par un humain. Une gestion simple de la s√©curit√© peut donner un meilleur sentiment de ma√ģtrise du syst√®me mais emp√™che une certaine finesse.

Notes

Références

Crystal Clear app kservices.png Contr√īle d'acc√®s en s√©curit√© informatique
Types de contr√īle d'acc√®s

Mod√®les de contr√īle d'acc√®s

  • Portail de la s√©curit√© informatique Portail de la s√©curit√© informatique
Ce document provient de ¬ę Permissions Unix ¬Ľ.

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Permissions UNIX de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Permissions Unix ‚ÄĒ Les permissions UNIX constituent un syst√®me simple de d√©finition des droits d acc√®s aux ressources, repr√©sent√©es par des fichiers disponibles sur un syst√®me informatique. Elles restent le moyen le plus utilis√© pour d√©finir les droits des… ‚Ķ   Wikip√©dia en Fran√ßais

  • Unix security ‚ÄĒ Unix security: maintaining a secure environment on Unix and Unix like operating systems is dependent on design concepts of these operating systems, but vigilance through user and administrative techniques is important to maintain security… ‚Ķ   Wikipedia

  • Unix file types ‚ÄĒ For normal files in the file system, Unix does not impose or provide any internal file structure. This implies that from the point of view of the operating system, there is only one file type. The structure and interpretation thereof is entirely… ‚Ķ   Wikipedia

  • Unix File System ‚ÄĒ Infobox filesystem full name = UNIX file system name = UFS developer = CSRG introduction os = 4.2BSD introduction date = partition id = directory struct = table file struct = bad blocks struct = max file size = 2^73 bytes (8 ZiB) max files no =… ‚Ķ   Wikipedia

  • permissions ‚ÄĒ ‚óŹ n. f. pl. ‚ĖļUNIX Syn. de droit d acc√®s, l acc√®s √©tant √† un fichier. Si l on n a pas les permissions ad√©quates, on n aura pas le droit de lire, √©crire ou ex√©cuter (dans le cas d un programme ou d un r√©pertoire) un fichier. Avec les ACL, les… ‚Ķ   Dictionnaire d'informatique francophone

  • Droit unix ‚ÄĒ Permissions Unix Les permissions UNIX constituent un syst√®me simple de d√©finition des droits d acc√®s aux ressources, repr√©sent√©es par des fichiers disponibles sur un syst√®me informatique. Elles restent le moyen le plus utilis√© pour d√©finir les… ‚Ķ   Wikip√©dia en Fran√ßais

  • Droits Unix ‚ÄĒ Permissions Unix Les permissions UNIX constituent un syst√®me simple de d√©finition des droits d acc√®s aux ressources, repr√©sent√©es par des fichiers disponibles sur un syst√®me informatique. Elles restent le moyen le plus utilis√© pour d√©finir les… ‚Ķ   Wikip√©dia en Fran√ßais

  • Permission unix ‚ÄĒ Permissions Unix Les permissions UNIX constituent un syst√®me simple de d√©finition des droits d acc√®s aux ressources, repr√©sent√©es par des fichiers disponibles sur un syst√®me informatique. Elles restent le moyen le plus utilis√© pour d√©finir les… ‚Ķ   Wikip√©dia en Fran√ßais

  • File system permissions ‚ÄĒ Most modern file systems have methods of administering permissions or access rights to specific users and groups of users. These systems control the ability of the users affected to view or make changes to the contents of the file… ‚Ķ   Wikipedia

  • Umask (Unix) ‚ÄĒ umask umask (user file creation mode mask, masque de cr√©ation de fichier par l utilisateur) est un attribut des processus Unix, ainsi que la commande POSIX qui permet de modifier cet attribut. Le umask d√©finit les permissions par d√©faut d un… ‚Ķ   Wikip√©dia en Fran√ßais


Share the article and excerpts

Direct link
… Do a right-click on the link above
and select ‚ÄúCopy Link‚ÄĚ

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.