C’est probablement l’une des choses les plus embêtantes que les gens perdent tout le temps. Le bit SUID / GUID et le sticky-bit sont deux choses complètement différentes.
Si vous faites un, man chmod
vous pouvez lire sur le SUID et les sticky-bits. La page de manuel est également disponible ici .
Contexte
extrait
Les lettres rwxXst sélectionnent les bits de mode de fichier pour les utilisateurs concernés: lecture (r), écriture (w), exécution (ou recherche de répertoires) (x), exécution / recherche uniquement si le fichier est un répertoire ou dispose déjà de l'autorisation d'exécution pour certains utilisateur (X), définition de l'identifiant de l'utilisateur ou du groupe lors de l'exécution (s) , indicateur de suppression restreinte ou
bit collant (t) .
SUID / GUID
Ce que la page de manuel ci-dessus essaie de dire, c’est que la position que le bit x prend dans le rwxrwxrwx pour l’octal de l’utilisateur (1er groupe de rwx) et le groupe octal (le deuxième groupe de rwx) peut prendre un état supplémentaire où x devient un s. Lorsque cela se produit, ce fichier, lorsqu'il est exécuté (s'il s'agit d'un programme et pas seulement d'un script shell), s'exécutera avec les autorisations du propriétaire ou du groupe du fichier.
Donc, si le fichier appartient à root et que le bit SUID est activé, le programme sera exécuté en tant que root. Même si vous l'exécutez en tant qu'utilisateur régulier. La même chose s'applique au bit GUID.
extrait
SETUID ET SETGID BITS
chmod efface le bit set-group-ID d'un fichier normal si l'ID de groupe du fichier ne correspond pas à l'ID de groupe effectif de l'utilisateur ou à l'un des ID de groupe supplémentaires de l'utilisateur, à moins que l'utilisateur ne dispose des privilèges appropriés. Des restrictions supplémentaires peuvent faire en sorte que les bits set-user-ID et set-group-ID de MODE ou RFILE soient ignorés. Ce comportement dépend de la stratégie et des fonctionnalités de l'appel système sous-jacent chmod. En cas de doute, vérifiez le comportement du système sous-jacent.
chmod conserve les bits set-user-ID et set-group-ID d'un répertoire, sauf indication contraire de votre part. Vous pouvez définir ou effacer les bits avec des modes symboliques tels que u + s et gs, et vous pouvez définir (mais pas effacer) les bits avec un mode numérique.
Exemples SUID / GUID
no suid / guid - seuls les bits rwxr-xr-x sont définis.
$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl
Suid et bit exécutable de l'utilisateur activé (minuscules) - les bits rwsr-xrx sont définis.
$ chmod u+s b.pl
$ ls -lt b.pl
-rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid activé et bit exécutable désactivé (S majuscule) - les bits rwSr-xr-x sont définis.
$ chmod u-x b.pl
$ ls -lt b.pl
-rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl
Le bit exécutable de guid & group est activé (minuscules) - les bits rwxr-sr-x sont activés .
$ chmod g+s b.pl
$ ls -lt b.pl
-rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl
guid activé et bit exécutable désactivé (S majuscule) - les bits rwxr-Sr-x sont activés .
$ chmod g-x b.pl
$ ls -lt b.pl
-rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl
peu collant
Le bit collant, d’autre part, est noté comme t
, par exemple, avec le /tmp
répertoire:
$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp
Ce bit aurait toujours dû s'appeler le "bit de suppression restreinte" étant donné ce qu'il indique vraiment. Lorsque ce bit de mode est activé, un répertoire est créé pour que les utilisateurs ne puissent y supprimer que les fichiers et les répertoires dont ils sont propriétaires.
extrait
DRAPEAU DE SUSPENDANCE OU DRAPEAU DE SUPPRESSION RESTRICTED
L'indicateur de suppression restreinte ou bit collant est un bit unique, dont l'interprétation dépend du type de fichier. Pour les répertoires, cela
empêche les utilisateurs non privilégiés de supprimer ou de renommer un fichier du répertoire sauf s'ils sont propriétaires du fichier ou du répertoire; c'est ce qu'on appelle l'indicateur de suppression restreinte pour le répertoire. On le trouve généralement dans les répertoires en écriture, tels que / tmp. Pour les fichiers normaux sur des systèmes plus anciens, le bit enregistre l'image texte du programme sur le périphérique d'échange afin qu'il se charge plus rapidement à l'exécution. c'est ce qu'on appelle le bit collant.