Permissions Unix - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

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. Pour des partitions supplémentaires, il faut activer le bit suid pour pouvoir l'utiliser en le spécifiant dans les options des partitions concernés dans le fichier fstab.

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 répertoire. En effet, le droit d'écriture signifie que l'on peut créer et supprimer les fichiers de ce répertoire. 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 d'un fichier qu'il contient à tout utilisateur autre que le propriétaire du fichier. 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). La création de nouveaux fichiers est toujours possible pour tous les utilisateurs possédant le droit d'écriture sur ce répertoire. 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      
Page générée en 0.087 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise