129 votes

Quelle est la lettre "t" dans la sortie de "ls -ld /tmp" ?

En exécutant la commande  ls -ld /tmp le résultat serait :

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

J'ai donc deux questions principales :

  • Quelle est la lettre t après les permissions ?
  • Pour autant que je sache /tmp est utilisé pour créer des fichiers temporaires liés à différents utilisateurs dans le système, alors comment se fait-il qu'il ait la permission rwxrwxrwx (777) ?

Cela ne me semble pas correct. J'ai besoin de votre aide pour comprendre ce qui se passe ici.

154voto

Maythux Points 77506

Alors, qu'est-ce qui est collant ?

Un sticky bit est un bit de permission qui est défini sur un répertoire et qui permet uniquement au propriétaire du fichier dans ce répertoire, au propriétaire du répertoire ou à l'utilisateur root de supprimer ou de renommer le fichier. Aucun autre utilisateur ne dispose des privilèges nécessaires pour supprimer le fichier créé par un autre utilisateur.

Il s'agit d'une mesure de sécurité visant à éviter la suppression de dossiers critiques et de leur contenu (sous-répertoires et fichiers), bien que d'autres utilisateurs disposent de toutes les autorisations.

Pourquoi est-ce que /tmp ont le t la partie collante ?

El /tmp peut être utilisé par différents utilisateurs de Linux pour créer des fichiers temporaires. Maintenant, que se passe-t-il si un utilisateur supprime/renomme un fichier créé par un autre utilisateur dans ce répertoire ?

Pour éviter ce genre de problèmes, le concept de sticky bit est utilisé. Ainsi, pour qu'un 777 est donné, mais préserver la partie collante n'est pas une mauvaise idée.

Comment puis-je configurer le sticky bit pour un répertoire ?

Je vais placer un sticky bit sur un répertoire appelé test sur mon bureau.

Manière symbolique ( t représente le bit collant) :

chmod o+t ~/Desktop/test

ou

chmod +t ~/Desktop/test

Voie numérique/octale (1, bit collant comme valeur 1 en première position)

chmod 1757 ~/Desktop/test

Maintenant, testons les résultats :

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Pour supprimer/supprimer un bit collant

chmod o-t ~/Desktop/test

Maintenant, testons les résultats :

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Source : "Qu'est-ce qu'un sticky Bit et comment le définir sous Linux ?" chez The Linux Juggernaut

26voto

g_p Points 17101

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

2voto

Un stickybit est une méthode de contournement pour que les répertoires partagés ne soient pas supprimés accidentellement. Lorsqu'un répertoire est doté d'un stickybit, seul le propriétaire ou la racine peut le supprimer, même si tous les utilisateurs peuvent bénéficier de toutes les autres autorisations.

/tmp est le répertoire le plus partagé entre les processus et les utilisateurs et pour cela il contient le stickybit pour assurer qu'aucun utilisateur ne puisse supprimer le répertoire, même si la permission est 777 et il doit en être ainsi pour permettre aux utilisateurs et aux processus d'utiliser le répertoire sans conflit de permissions.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X