GNU/Linux >> Tutoriels Linux >  >> Linux

Linux Sticky Bit Concept expliqué avec des exemples

Pensez à un scénario dans lequel vous créez un répertoire Linux qui peut ê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 selon leur convenance dans ce répertoire. Pour tous ceux qui pensent que pourquoi créer un tel répertoire ? Il existe, par exemple, un répertoire /tmp dans le système Linux qui peut être utilisé par différents utilisateurs Linux pour créer des fichiers temporaires.

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 ?

Eh bien, pour éviter ce genre de problèmes, le concept de sticky bit est utilisé.

Un Sticky bit 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'est autorisé à supprimer le fichier créé par un autre utilisateur.

Histoire de Sticky Bit

Avant d'expliquer davantage le sticky bit, discutons de l'histoire du sticky bit car cette information mérite d'être discutée.

Le sticky bit n'est pas un nouveau concept. En fait, il a été introduit pour la première fois en 1974 dans le système d'exploitation Unix. Le but du morceau collant à l'époque était différent. Il a été introduit pour minimiser le délai introduit à chaque fois qu'un programme est exécuté.

Lorsqu'un programme est exécuté, il faut du temps pour charger le programme en mémoire avant que l'utilisateur puisse réellement commencer à l'utiliser. Si un programme, par exemple un éditeur, est fréquemment utilisé par les utilisateurs, le délai de démarrage était une surcharge à l'époque.

Pour améliorer ce délai, le sticky bit a été introduit. Le système d'exploitation a vérifié que si le sticky bit d'un exécutable est activé, le segment de texte de l'exécutable était conservé dans l'espace d'échange. Cela a facilité le chargement de l'exécutable dans la RAM lorsque le programme a été exécuté à nouveau, minimisant ainsi le délai.

Bien que cette méthode ait réussi à minimiser le délai de démarrage, un problème majeur est apparu en raison de cette opération. Le problème était que si une sorte de correctif était appliqué à l'exécutable en tant que correction de bogue ou nouvelle fonctionnalité, les étapes suivantes devaient être effectuées :

  • Retirez d'abord le sticky bit de l'exécutable
  • Maintenant, lancez l'exécutable et quittez-le pour que le segment de texte existant du swap soit vidé
  • Maintenant, définissez à nouveau le sticky bit sur l'exécutable et relancez l'exécutable afin que le nouveau segment de texte soit stocké dans la mémoire d'échange

Les étapes ci-dessus étaient nécessaires pour que le programme reflète les nouvelles fonctionnalités ou les corrections de bogues qui ont été ajoutées à l'exécutable.

C'était donc l'un des principaux problèmes. De plus, avec l'évolution de la technologie, les techniques d'accès rapide à la mémoire ont évolué, ce qui a en quelque sorte rendu obsolète l'exigence d'un bit collant à cette fin.

Exemples de bits collants

Dans cette section, nous verrons comment activer et désactiver le sticky bit à l'aide de quelques exemples.

Un exemple de base

Créez un répertoire et donnez à tous les utilisateurs un accès en lecture-écriture-exécution :

# mkdir allAccess

# chmod 777 allAccess/

# ls -ld allAccess/
drwxrwxrwx 2 himanshu himanshu 4096 Oct 24 15:43 allAccess/

Nous voyons donc qu'un répertoire nommé "allAccess" est créé et l'accès en lecture-écriture-exécution à ce répertoire est donné à tous les utilisateurs via la commande chmod.

Maintenant, créez plusieurs fichiers dans ce répertoire (avec différents utilisateurs) de sorte que tous les utilisateurs y aient accès en lecture-écriture-exécution.

Par exemple :

# ls -l allAccess/
total 0
-rwxrwxrwx 1 himanshu himanshu 0 Oct 24 15:48 user1
-rwxrwxrwx 1 guest    guest    0 Oct 24 16:11 user_file_0
-rwxrwxrwx 1 guest-2  guest-2  0 Oct 24 16:15 user_file_1

Les fichiers user_file_0 et user_file_1 sont créés par des utilisateurs différents mais disposent d'un accès en lecture-écriture-exécution pour tous les utilisateurs. Cela signifie que l'utilisateur "invité" peut supprimer ou renommer le fichier créé par l'utilisateur "invité-2".

Afin d'éviter cela, un sticky bit peut être défini sur le répertoire allAccess.

Maintenant, activez le sticky bit sur le répertoire en utilisant l'indicateur +t de la commande chmod.

# chmod +t allAccess/

# ls -ld allAccess/
drwxrwxrwt 2 himanshu himanshu 4096 Oct 24 16:19 allAccess/

Comme on peut le constater, un bit de permission ‘t’ est introduit dans les bits de permission du répertoire.

Maintenant, si l'utilisateur 'guest' essaie de renommer le fichier 'user_file_1', voici ce qui se passe :

$ mv /home/himanshu/allAccess/user_file_1 /home/himanshu/allAccess/user_file_0
mv: cannot move `/home/himanshu/allAccess/user_file_1' to `/home/himanshu/allAccess/user_file_0': Operation not permitted

Nous voyons donc que l'opération n'était pas autorisée.

Supprimer le sticky bit à l'aide de l'option -t

Sticky bit peut être supprimé des autorisations d'un répertoire via l'option -t de la commande chmod.

Voici un exemple :

# chmod -t allAccess/

# ls -ld allAccess/
drwxrwxrwx 2 himanshu himanshu 4096 Oct 24 16:19 allAccess/

Nous voyons donc que le bit d'autorisation "t" est supprimé du répertoire.

Différents systèmes d'exploitation se comportent différemment avec les sticky bits, comme expliqué dans cet article de wikipedia. Par exemple, Linux ne recherche le sticky bit que si un utilisateur essaie de renommer un fichier. Il ne vérifiera pas le bit collant si un fichier est en cours de suppression.


Linux
  1. Commande d'arrêt Linux expliquée avec des exemples

  2. Commande Linux nslookup expliquée avec des exemples

  3. Commande Linux Traceroute, expliquée avec des exemples

  4. La commande whoami sous Linux expliquée avec des exemples

  5. La commande Linux Ping expliquée avec des exemples

La commande Bash Echo expliquée avec des exemples sous Linux

Commande Tr sous Linux expliquée avec des exemples

w Commande expliquée avec des exemples sous Linux

La commande Wait sous Linux expliquée avec des exemples pratiques

Explication de la commande Linux tee (avec exemples)

La commande Linux csplit expliquée (avec des exemples)