Un bit collant est un bit d'autorisation défini sur un fichier ou un répertoire qui permet uniquement au propriétaire du fichier/répertoire ou à l'utilisateur root de supprimer ou de renommer le fichier. Aucun autre utilisateur n'a le droit de supprimer un fichier créé par un autre utilisateur.
Il arrive parfois que vous ayez besoin d'un répertoire Linux qui puisse être utilisé par tous les utilisateurs du système Linux pour créer des fichiers. Les utilisateurs peuvent créer, supprimer ou renommer des fichiers à leur convenance dans ce répertoire.
Maintenant, que se passe-t-il si un utilisateur supprime (ou renomme) accidentellement ou délibérément un fichier créé par un autre utilisateur dans ce répertoire ?
Pour éviter ce genre de problèmes, on utilise le concept de sticky bit. Puisque /tmp est utilisé à cette fin. Donc pour éviter le scénario ci-dessus, /tmp utiliser une mèche collante.
Par exemple :
mkdir demo
chmod 777 demo
J'ai également créé deux fichiers avec des utilisateurs différents dans ce dossier avec la permission 777.
ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo
ls -l demo
-rwxrwxrwx 1 abhi abhi 0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu 0 Mar 11 18:15 file2
Maintenant, mettez la partie collante sur ce
chmod +t demo/
ls -ld demo
drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo
Maintenant, que se passe-t-il si un utilisateur (abhi) veut renommer le deuxième utilisateur (anshu).
mv /home/guru/demo/file2 /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to '/home/guru/demo/file3': Operation not permitted
L'origine du sticky bit
Sous Linux, le sticky bit n'a que l'usage décrit ci-dessus, sur les répertoires. Historiquement, il était utilisé pour quelque chose de complètement différent sur les fichiers ordinaires, et c'est de là que vient le nom.
Lorsqu'un programme est exécuté, il faut du temps pour le charger en mémoire avant que l'utilisateur puisse réellement commencer à l'utiliser. Si un programme, par exemple un éditeur, est utilisé fréquemment par les utilisateurs, le délai de démarrage était une charge supplémentaire à l'époque.
Pour améliorer ce délai, le sticky bit a été introduit. Le système d'exploitation vérifiait que si le sticky bit d'un exécutable était activé, le segment de texte de l'exécutable était conservé dans l'espace d'échange. Il est ainsi facile de recharger l'exécutable en RAM lorsque le programme est relancé, ce qui minimise le délai.
Les systèmes modernes tels que Linux gèrent leur cache d'exécutables et d'autres fichiers automatiquement et n'ont pas besoin du sticky bit pour cela.
Source : "Le concept de bit collant de Linux expliqué avec des exemples" chez The Geek Stuff