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

80

En exécutant la commande ls -ld /tmp , la sortie 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 a la permission rwxrwxrwx (777)?

Cela me semble faux. S'il vous plaît, j'ai besoin de votre aide pour comprendre ce qui se passe ici.

    
posée Community 11.03.2014 - 13:33
la source

3 réponses

101

Alors, quel est le bit collant?

Un bit sticky est un bit d’autorisation défini sur un répertoire qui autorise uniquement le propriétaire du fichier dans ce répertoire, le propriétaire du répertoire ou l’utilisateur root à supprimer ou à renommer le fichier. Aucun autre utilisateur ne dispose des privilèges requis pour supprimer le fichier créé par un autre utilisateur.

Ceci est une mesure de sécurité pour éviter la suppression des dossiers critiques et de leur contenu (sous-répertoires et fichiers), même si les autres utilisateurs ont des autorisations complètes.

Pourquoi /tmp a-t-il le bit collant t ?

Le répertoire /tmp peut être utilisé par différents utilisateurs Linux pour créer des fichiers temporaires. Maintenant, que faire 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é. Donc, pour cela un 777 est donné, mais préserver le sticky bit n'est pas une mauvaise idée.

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

Je vais mettre un bit collant sur un répertoire appelé test sur mon bureau.

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

chmod o+t ~/Desktop/test

ou

chmod +t ~/Desktop/test

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

chmod 1757 ~/Desktop/test

Laissez-nous maintenant tester les résultats:

ls -li ~/Desktop/test

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

Supprimer / Supprimer un bit collant

chmod o-t ~/Desktop/test

Laissez-nous maintenant tester 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 configurer sous Linux?" au Linux Juggernaut

    
réponse donnée Maythux 11.03.2014 - 13:37
la source
22
  

Un bit Sticky est un bit d'autorisation qui est 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 ne dispose des privilèges pour supprimer le fichier créé par un autre utilisateur.

Il arrive parfois que vous ayez besoin d’un répertoire Linux pouvant ê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.

  

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, le concept de sticky bit est utilisé. Puisque / tmp est utilisé à cette fin. Donc, pour éviter le scénario ci-dessus, / tmp utilise un sticky bit.

Par exemple:

mkdir demo
chmod 777 demo

J'ai également créé deux fichiers avec des utilisateurs différents dans ce dossier avec l'autorisation 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

Activez maintenant le bit sticky

 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 second 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 bit sticky n’a que l’utilisation décrite ci-dessus, sur les répertoires. Historiquement, il était utilisé pour quelque chose de complètement différent sur les fichiers normaux, d'où le nom.

  

Lorsqu'un programme est exécuté, le chargement du programme en mémoire prend du temps avant que l'utilisateur puisse réellement l'utiliser. Si un programme, par exemple un éditeur, est fréquemment utilisé par les utilisateurs, le délai de démarrage était alors trop élevé.

     

Pour améliorer ce délai, le sticky bit a été introduit. Le système d'exploitation vérifiait que si le bit collant sur un exécutable était 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.

Les systèmes modernes, tels que Linux, gèrent automatiquement leur cache de fichiers exécutables et d’autres fichiers et n’ont pas besoin du bit sticky pour cela.

Source: "Le concept de Linux Sticky Bit est expliqué avec des exemples" chez Geek Stuff

    
réponse donnée g_p 11.03.2014 - 14:06
la source
2

Un stickybit est une méthode de contournement pour supprimer les répertoires partagés accidentellement. Lorsqu'un répertoire comporte un stickybit, seul le propriétaire ou la racine peut le supprimer, même si chaque utilisateur peut prendre 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 garantir qu'aucun utilisateur ne peut supprimer le répertoire, même si l'autorisation est 777 , et il doit en être ainsi. aux utilisateurs et aux processus d'utiliser le répertoire sans conflit d'autorisations.

    
réponse donnée user259474 18.03.2014 - 12:14
la source

Lire d'autres questions sur les étiquettes