Il existe d'autres droits spéciaux, rendant possible une gestion plus poussée des permissions.
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.
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
Le droit SUID possède la valeur octale 4000.
Exemple : - r w s r - x r - x correspond à 4755.
Le droit SUID est utilisé pour le programme mount (généralement localisé dans /bin) :
-rwsr-xr-x 1 root bin 68804 /bin/mount
Sur linux, des restrictions de droit ont été faites sur le drapeau SUID :
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.
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.
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--
Le droit SGID possède la valeur octale 2000.
Exemple : - r w x r - S r - - correspond à 2744.
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.
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.
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
Le droit sticky bit possède la valeur octale 1000.
Exemple : - r w x r - x r - t correspond à 1755.
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