Vous définiriez le sticky bit principalement sur les répertoires sous UNIX/Linux.
Si vous définissez le sticky bit sur un répertoire, les autres utilisateurs ne peuvent pas supprimer ou renommer les fichiers (ou sous-répertoires) de ce répertoire.
Lorsque le sticky bit est défini sur un répertoire, seuls le propriétaire et l'utilisateur root peuvent supprimer/renommer les fichiers ou répertoires de ce répertoire.
1. Définissez le sticky bit sur Directory
L'exemple ci-dessous active le sticky bit sur un répertoire.
Utilisez la commande chmod pour définir le sticky bit. Si vous utilisez les nombres octaux dans chmod, donnez 1 avant de spécifier d'autres privilèges numérotés, comme indiqué ci-dessous. L'exemple ci-dessous donne l'autorisation rwx à l'utilisateur, au groupe et aux autres (et ajoute également le sticky bit au répertoire).
$ chmod 1777 dir
Ou, vous pouvez attribuer uniquement un sticky bit à un répertoire existant (sans toucher à aucun autre utilisateur, groupe et autres privilèges) à l'aide de la commande chmod comme indiqué ci-dessous.
$ chmod +t dir
Une fois que le sticky bit est attribué à un répertoire, vous verrez (t) comme dernier caractère de l'autorisation. Dans cet exemple, c'est drwxrwxrwt.
$ ls -ld /home/bala/dir drwxrwxrwt 2 bala bala 4096 2011-01-28 14:09 /home/bala/dir $ ls -l dir total 8 -rwxrwxrwx 1 bala bala 20 2011-01-28 14:12 bala.txt -rwxrwxrwx 1 guest guest 41 2011-01-28 14:13 guest.txt
Dans l'exemple ci-dessus, comme dir a la permission rwx pour tout le monde, tous les autres utilisateurs sont autorisés à créer leurs fichiers ou répertoires sous ce répertoire. Cependant, même lorsque les sous-répertoires ou les fichiers sous dir ont l'autorisation rwx pour tout le monde, seul le propriétaire de ceux-ci peut supprimer ou renommer ces fichiers et répertoires. Les autres utilisateurs ne peuvent pas le supprimer ou le renommer à cause du sticky bit.
Dans l'exemple ci-dessus, bala.txt a rwx pour les utilisateurs, les groupes et autres. Mais, lorsque l'utilisateur invité essaie de supprimer le fichier bala.txt, il verra le message "Opération non autorisée" comme indiqué ci-dessous.
$ su guest Password: $ cd /home/bala/dir1 $ rm bala.txt rm: cannot remove `bala.txt': Operation not permitted
Veuillez noter que /tmp a le sticky bit activé par défaut. Vous ne l'avez peut-être pas remarqué jusqu'à présent. Vous savez maintenant pourquoi le répertoire /tmp est censé avoir le sticky bit activé.
$ ls -ld /tmp drwxrwxrwt 3 root root 4096 Jan 31 08:29 /tmp
Pour supprimer le sticky bit d'un répertoire, procédez comme suit.
$ chmod -t dir
2. Définissez le sticky bit sur Fichier
Définir le sticky bit sur un fichier est pratiquement inutile et ne fait rien. Sur certaines des anciennes versions *nix, un fichier exécutable activé par sticky bit sera chargé dans la mémoire d'échange après la 1ère exécution, ce qui accélère toutes les exécutions ultérieures. Ce n'est plus vrai.
De Wikipédia :
Currently, this behavior is only operative in HP-UX, NetBSD, and UnixWare. Solaris appears to have abandoned this in 2005.[citation needed] The 4.4-Lite release of BSD retained the old sticky bit behavior but it has been subsequently dropped from OpenBSD (as of release 3.7) and FreeBSD (as of release 2.2.1); it remains in NetBSD. No version of Linux has ever supported the traditional behavior.