web-dev-qa-db-fra.com

Comment fonctionne la mèche collante?

SUID

Le sticky bit appliqué aux programmes exécutables marquant le système pour conserver une image du programme en mémoire une fois le programme terminé.

Mais je ne sais pas ce qu'il est stocké en mémoire. Et comment je peux les voir, dans ce cas.?

153
lotusirous

C'est probablement l'une de mes choses les plus gênantes que les gens gâchent tout le temps. Le bit SUID/GUID et le bit collant sont deux choses complètement différentes.

Si vous faites un man chmod vous pouvez lire sur le SUID et les sticky-bits. La la page de manuel est également disponible ici également.

contexte

extrait

Les lettres rwxXst sélectionnent les bits du mode fichier pour les utilisateurs concernés: lecture (r), écriture (w), exécution (ou recherche de répertoires) (x) , exécuter/rechercher uniquement si le fichier est un répertoire ou dispose déjà d'une autorisation d'exécution pour un utilisateur (X), définir l'ID utilisateur ou de groupe lors de l'exécution , 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 prend le bit x dans le rwxrwxrwx pour l'utilisateur octal (1er groupe de rwx) et le groupe octal (2e groupe de rwx) peut prendre un état supplémentaire où le 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 s'exécutera 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, sauf si l'utilisateur dispose des privilèges appropriés. Des restrictions supplémentaires peuvent entraîner l'ignorance des bits set-user-ID et set-group-ID de MODE ou RFILE. Ce comportement dépend de la stratégie et de la fonctionnalité de l'appel système chmod sous-jacent. 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 explicite. Vous pouvez définir ou effacer les bits avec des modes symboliques comme u + s et g-s, et vous pouvez définir (mais pas effacer) les bits avec un mode numérique.

Exemples SUID/GUID

aucun 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-x-r-x 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é (majuscule S) - 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

Bit exécutable de guid & group activé (minuscules) - les bits rwxr-sr-x sont définis.

$ 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é (majuscule S) - les bits rwxr-Sr-x sont définis.

$ 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 désigné par t, comme avec le /tmp répertoire:

$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp

Ce bit aurait toujours dû être appelé le "bit de suppression restreinte" étant donné que c'est ce qu'il implique vraiment. Lorsque ce bit de mode est activé, il crée un répertoire tel que les utilisateurs ne peuvent supprimer que les fichiers et répertoires dont ils sont les propriétaires.

extrait

DRAPEAU DE SUPPRESSION RESTREINT OR STICKY BIT

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, il
empêche les utilisateurs non privilégiés de supprimer ou de renommer un fichier dans le répertoire à moins qu'ils ne soient propriétaires du fichier ou du répertoire; cela s'appelle l'indicateur de suppression restreinte pour le répertoire, et se trouve généralement sur les répertoires accessibles en écriture comme/tmp. Pour les fichiers réguliers sur certains systèmes plus anciens, le bit enregistre l'image de texte du programme sur le périphérique d'échange afin qu'il se charge plus rapidement lors de l'exécution; c'est ce qu'on appelle le bit collant.

200
slm

"Le bit collant appliqué aux programmes exécutables signalant au système de conserver une image du programme en mémoire une fois le programme terminé."

Je pense que c'est une information assez obsolète, aujourd'hui la plupart des Unix modernes ignorent cela. Sous Linux, le bit collant n'est pertinent que pour les répertoires. Voir ici et le tout à fait informatif article Wikipedia .

Quoi qu'il en soit, dans cet ancien comportement, l'image (uniquement le "code", pas les données) était uniquement conservée dans la mémoire virtuelle - normalement échangée, pas dans la mémoire réelle, afin de l'exécuter plus rapidement la prochaine fois.

8
leonbloy

Que sont les morceaux collants?

Un bit collant est un bit d'autorisation qui est défini sur un répertoire qui permet uniquement au propriétaire du fichier dans ce répertoire ou à l'utilisateur root de supprimer ou de renommer le fichier. Aucun autre utilisateur ne dispose des privilèges nécessaires pour supprimer le fichier créé par un autre utilisateur.

Il s'agit d'une mesure de sécurité pour éviter la suppression des dossiers critiques et de leur contenu (sous-répertoires et fichiers), bien que les autres utilisateurs disposent des autorisations complètes.

3
chandrakumar.M

Voici un bon tutoriel avec des exemples et des explications pratiques. La clé pour comprendre cela est le système octal impliqué. Tutoriel Linux Sticky Bits avec des exemples travaillés .

0
CMP