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

94

Lors de l'exécution de 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 taprès les autorisations?
  • Autant que je sache, il /tmpest utilisé pour créer des fichiers temporaires liés à différents utilisateurs du système. Comment se fait-il qu'il ait l'autorisation rwxrwxrwx(777)?

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

Communauté
la source
8
Lisez l'article Wikipedia , c'est plutôt mieux que les réponses ici.
Gilles
1
Voir aussi: unix.stackexchange.com/q/79395/4784
Martin Thoma
OK Pourquoi, alors, lorsque j'installe une mise à jour ou un nouveau paquetage rpm à partir de / tmp, le bit collant est-il supprimé?

Réponses:

112

Alors, quel est le bit collant?

Un sticky bit est un bit d'autorisation défini sur un répertoire qui permet uniquement au propriétaire du fichier de 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 des dossiers critiques et de leur contenu (sous-répertoires et fichiers), bien que les autres utilisateurs disposent de toutes les autorisations.

Pourquoi /tmpavoir le tpeu collant?

Le /tmprépertoire 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?

Eh bien, pour éviter ce genre de problème, le concept de sticky bit est utilisé. Donc, pour cela, 777c’est donné mais préserver le bit collant n’est pas une mauvaise idée.

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

Je vais mettre un peu collant sur un répertoire appelé testsur mon bureau.

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

chmod o+t ~/Desktop/test

ou

chmod +t ~/Desktop/test

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

chmod 1757 ~/Desktop/test

Maintenant, laissez-nous tester 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, laissez-nous 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 bit collant et comment le configurer sous Linux?” Dans The Linux Juggernaut

Maythux
la source
13
Cette utilisation du bit collant ne concerne que les répertoires, pas les fichiers. Dans un passé lointain, sa signification sur les fichiers exécutables consistait à enregistrer le segment de texte du programme pour le permuter plutôt que de le supprimer afin de le réexécuter plus rapidement, mais de nos jours cela n'a aucune signification pour les fichiers normaux.
Psusi
Quel était le segment de texte d'un programme et comment le conserver le rendrait-il plus rapide?
BluePython
@BluePython Le segment 'texte' d'un fichier exécutable est la partie qui comprend tout le code machine: le bit exécutable réel. Les autres segments communs sont 'data' pour les données statiques et 'bss' pour les données qui sont toutes nulles (et n'ont donc pas besoin d'être stockées dans l'exécutable).
Miles Rout
1
existe-t-il une différence entre 't' et 'T' pour l'autorisation de répertoire? @ psusi
Afshin
1
@ Afshin: Parce que le tmasque xindique si tous les utilisateurs peuvent exécuter le fichier / répertoire, nous avons besoin d'un autre moyen de l'indiquer. La chose habituelle est que tout le monde peut l'exécuter, auquel cas vous obtenez une normale t(au lieu d'une x). Mais sinon, vous obtenez une majuscule T(au lieu de a -). Source: Wikipedia.
Toby Bartels
25

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 ne dispose des privilèges nécessaires 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 à 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 de ce répertoire?

Eh bien, pour éviter ce genre de problème, le concept de sticky bit est utilisé. Puisque / tmp est utilisé à cette fin. Donc, pour éviter le scénario ci-dessus, / tmp utilise sticky bit.

Par exemple:

mkdir demo
chmod 777 demo

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

Maintenant, allumez le morceau collant sur cette

 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 bit collant

Sous Linux, le bit collant 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 ordinaires, et c'est de là que vient le nom.

Lorsqu'un programme est exécuté, il faut un certain temps pour le charger en mémoire avant que l'utilisateur ne 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 un temps système à l'époque.

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

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

Source: «Le concept Linux Sticky Bit expliqué à l'aide d'exemples» dans The Geek Stuff

g_p
la source
2

Un stickybit est une méthode de contournement des répertoires partagés à ne pas supprimer accidentellement. Lorsqu'un répertoire a un stickybit, seul le propriétaire ou la racine peut le supprimer, même si chaque utilisateur peut utiliser toutes les autres autorisations.

/tmpest le répertoire le plus partagé entre les processus et les utilisateurs et contient le stickybit garantissant qu'aucun utilisateur ne peut supprimer le répertoire, même avec l'autorisation 777, et il doit en être de même pour donner la possibilité aux utilisateurs et aux processus d'utiliser le répertoire. sans conflit dans les autorisations.


la source