Que fait le sticky bit sur les fichiers? (FreeBSD)

Je sais que le bit sticky sur les répertoires permet la suppression de fichiers uniquement par le propriétaire des fichiers contenus dans le répertoire sticky.

Mais je peux aussi chmod 1777 un fichier et ls -l cmd montre que le fichier a bien le bit sticky défini.

Rien.

À partir des documents: https://www.freebsd.org/cgi/man.cgi?query=sticky&sektion=7&apropos=0&manpath=FreeBSD+10.3-RELEASE+and+Ports

Un mode de fichier spécial, appelé le sticky bit (mode S_ISTXT), est utilisé pour indiquer un traitement spécial pour les répertoires. Il est ignoré pour les fichiers réguliers . Voir chmod (2) ou le fichier pour une explication des modes de fichier.

Erik Bennett a lié l’article de Wikipédia à l’historique du sticky bit. Son objective initial était de donner au kernel la possibilité d’essayer de conserver les fichiers en swap, pour des performances optimales. Les systèmes d’exploitation modernes ont cependant abandonné cette fonctionnalité.

Une fois défini, le système d’exploitation a été invité à conserver le segment de texte du programme dans l’espace d’échange après la fin du processus. Cela accélère les exécutions ultérieures en permettant au kernel d’effectuer une seule opération de déplacement du programme de swap en mémoire réelle.

Un problème notable avec les programmes “collés” était le remplacement de l’exécutable (par exemple, lors de l’application des correctifs); pour cela, il fallait supprimer le bit sticky de l’exécutable, exécuter le programme et quitter pour vider le cache, remplacer l’exécutable binary, puis restaurer le bit sticky.

Actuellement, ce comportement ne fonctionne que dans HP-UX et UnixWare. Solaris semble l’avoir abandonné en 2005. La version 4.4-Lite de BSD a conservé l’ancien comportement de sticky bit, mais elle a été abandonnée par la suite par OpenBSD (à partir de la version 3.7) et FreeBSD (à partir de la version 2.2.1). Aucune version de Linux n’a jamais supporté ce comportement traditionnel.