Le bit collant est utile sur les répertoires accessibles en écriture, tels que /tmp
. Dans ces répertoires, n'importe qui peut créer un fichier, le répertoire doit donc être accessible en écriture. Mais cela signifierait que n'importe qui pourrait également supprimer un fichier, même s'il ne lui appartenait pas, car la suppression d'un fichier est contrôlée par l'autorisation d'écriture sur le répertoire. Lorsqu'un répertoire contient le bit collant, seul le propriétaire d'un fichier est autorisé à le supprimer.
Dans un répertoire avec des autorisations rwx------
ou rwxr-xr-x
, seul le propriétaire du répertoire peut créer ou supprimer un fichier. S'il existe des fichiers appartenant à un autre utilisateur (déplacés par root ou créés lorsque le répertoire a des autorisations plus ouvertes), c'est toujours le propriétaire du répertoire qui dispose des autorisations pour les supprimer, pas le propriétaire du fichier.
Dans un répertoire avec des autorisations rwxrwx---
, tous les membres du groupe peuvent créer et supprimer des fichiers. Tout membre du groupe peut supprimer n'importe quel fichier même s'il appartient à un autre utilisateur. Si les autorisations sont à la rwxrwx--T
place (le capital T
est comme t
, mais t
signifie que le x
bit est défini et T
signifie que le x
bit est clair), alors tout membre du groupe peut créer un fichier, et les membres du groupe peuvent supprimer des fichiers mais uniquement leurs propres fichiers .
Vous pouvez utiliser la commande suivante pour voir quels répertoires contiennent le bit collant sur votre système:
find / /run /run/lock /run/shm -xdev -path /usr -prune -o -perm -o+t -ls 2>/dev/null
Vous trouverez des répertoires comme ceux /tmp
qui sont ouverts à tout le monde, et certains répertoires comme ceux /var/spool/cron/crontabs
qui sont réservés à un programme système qui s'exécute comme son propre groupe ( setgid ), où le bit collant garantit que le programme ne peut supprimer des fichiers qu'au nom de la utilisateur qui les possède (ce qui garantit que le programme ne peut créer des fichiers qu'au nom de l'utilisateur qui les possède, c'est que le programme s'exécute en tant qu'utilisateur, pas en tant que root, donc ne peut pas créer de fichiers appartenant à d'autres utilisateurs).