Outils de développement · Calculatrice Chmod
Les deux vies du sticky bit : du texte résident d'échange à /tmp
· Contexte
chmod unix contrôle d'accès
Le t en mode /tmp's signifiait quelque chose de complètement différent dans Unix des années 1970. Cet article suit le point délicat, d'un indice de performances à une règle de suppression, et explique ce qu'il fait aujourd'hui.
drwxrwxrwt sur /tmp — la dernière lettre n'est pas r, w ou x, et l'explication habituelle en un mot n'explique rien
La chaîne drwxrwxrwt montre pourquoi l'arithmétique rwx ordinaire ne constitue pas toute l'histoire. Sticky est le bit 1000, rendu dans la position d'exécution finale. Avec other-execute présent, le caractère est t minuscule ; sans cela, un T majuscule apparaît. La saisie de 1777 produit donc rwxrwxrwt, tandis que le résumé à quatre chiffres préserve le premier chiffre du bit spécial.
Cet affichage convertit un mode fourni ; il n'inspecte pas un répertoire. La page divise une valeur en bits propriétaire, groupe, autres et spéciaux, puis reconstruit chaque vue à partir de ces parties. Leur accord vérifie l'arithmétique, et non la propriété, les ACL ou la politique du système de fichiers. La commande chmod générée reste en texte brut jusqu'à ce que quelqu'un l'exécute ailleurs.
La signification originale : conserver le segment de texte d'un programme en échange après la sortie afin que la prochaine exécution démarre plus rapidement sur les disques lents.
L'explication du fichier standard indique que sticky a demandé que le texte du programme reste dans le swap. C’est l’affirmation historique complète soutenue par ces sources. Ils ne citent aucun manuel Unix principal, aucune date, aucun système nommé ou mesure d'adoption. Un compte rendu attentif peut comparer cette ancienne signification de fichier avec le comportement actuel du répertoire sans inventer un historique plus large du système d'exploitation.
La calculatrice établit comment le bit est représenté. Sticky occupe l'octal 1000 et partage la position d'exécution en notation symbolique. Ainsi 1777 se termine par t car exécuter est défini, tandis que 1644 se termine par T car il est absent. Les masques de bits, l'analyseur, le moteur de rendu et les tests aller-retour prennent en charge ces faits, et non une chronologie du comportement du noyau.
La source décrit un ancien indice de fichier mais ne fournit aucune citation historique principale
Pour les fichiers normaux, l'outil décrit sticky comme un indice d'échange historique que les noyaux modernes ignorent. Le libellé ne doit pas devenir une affirmation universelle concernant chaque noyau ou système de fichiers. Ce référentiel propose une explication de la calculatrice, pas une enquête sur la plateforme. Son argument défendable est plus restreint : sticky ne modifie pas les autorisations de lecture, d'écriture ou d'exécution affichées pour un fichier normal.
La représentation reste exacte même lorsque l'exécution n'est pas réclamée. Avec other-execute défini, le dernier caractère est t ; sans lui, ce caractère est T. L'analyseur restaure l'une ou l'autre forme au bit collant, et les tests couvrent 1777, 1644 et tous les modes jusqu'à 7777. Aucun ne lance des programmes, ne monte des systèmes de fichiers ou n'interroge un noyau pour connaître son comportement réel.
L'explication du fichier standard indique que les noyaux modernes ignorent le sticky ; aucune affirmation universelle n'est faite
Le comportement de l'annuaire est l'utilisation moderne que l'implémentation explique directement. Sur un répertoire partagé, sticky ajoute une restriction de suppression et de renommage : les utilisateurs peuvent créer des entrées, mais la suppression est limitée au propriétaire ou à la racine d'une entrée. Les préréglages capturent 1777 comme modèle /tmp, tandis que l'explication avertit lorsqu'un répertoire est accessible en écriture par tout le monde sans collant.
L'écran expose cette distinction sans prétendre inspecter les modes /tmp. 777 et 1777 partagent les autorisations ordinaires rwxrwxrwx. L'ajout de 1000 modifie le x symbolique final en t et ajoute +t aux affectations générées. Les subventions de propriétaire, de groupe et autres restent par ailleurs inchangées ; la propriété réelle, les ACL et les règles du système de fichiers restent en dehors du calcul.
Le comportement persistant du répertoire est l'explication actuelle implémentée
La phrase du répertoire énonce une règle limitée : avec sticky set, seul le propriétaire ou la racine d'un fichier peut le supprimer ou le renommer. L'outil ne résout pas les identités, n'inspecte pas la propriété du répertoire et ne tente pas d'opération. Un 1777 affiché confirme les bits rwx universels plus sticky, mais il ne peut pas identifier à qui appartient une entrée impliquée dans un véritable litige.
Les politiques supplémentaires doivent être étudiées séparément. La calculatrice ne lit aucune ACL, capacité, option de montage, contrôle obligatoire ou état du système de fichiers. Basculer entre le fichier et le répertoire change l'explication, pas le mode. Si un changement de nom réussit ou échoue de manière inattendue, la page ne peut pas expliquer pourquoi ; il isole uniquement les bits traditionnels pour une enquête spécifique au système.
L'outil décrit les limites de suppression du propriétaire ou de la racine sans inspecter les extensions de stratégie.
Comparez 1777 et 777 comme modes de répertoire. Le mode 777 restitue drwxrwxrwx et permet à chaque classe de lister, créer, saisir, renommer et supprimer. L'outil avertit que les utilisateurs peuvent supprimer les entrées dont ils ne sont pas propriétaires. L'activation de sticky produit drwxrwxrwt : les autorisations rwx restent fixes, tandis que la restriction de suppression du propriétaire ou de la racine entre dans l'explication.
Les affectations générées affichent la même différence d'un bit. Le mode 777 devient u=rwx,g=rwx,o=rwx, tandis que 1777 ajoute +t ; l'aperçu octal conserve également le premier chiffre. Aucun des deux aperçus n'ouvre le chemin ou n'exécute chmod. La comparaison prouve que seul 1000 a changé et explique sa forme t, mais la propriété et l'application nécessitent toujours une inspection externe.
Exemple concret : comparez les explications 1777 et 777 dans la calculatrice
L'historique Setgid n'est pas pris en charge par ces documents. Le référentiel peut coder setgid comme 2000, restituer s ou S en position d'exécution de groupe et expliquer l'héritage du groupe de répertoires. Ces détails d'implémentation ne documentent pas les origines de setgid et ne relient pas son développement à sticky. L’arithmétique pour un élément particulier ne constitue pas une preuve historique pour un autre.
La stratégie de répertoire protégé s'étend également au-delà de l'ensemble source. La page ne lit aucun paramètre fs.protected, configuration système, ACL, enregistrement de propriété ou tentative d'opération. Il peut confirmer qu'un mode fourni contient du sticky et afficher ses autorisations de base, mais il ne peut pas certifier que le sticky est la seule restriction de la machine. Un diagnostic plus large nécessite des preuves de cet environnement.
L'historique Setgid et la politique de répertoire protégé restent en dehors de l'ensemble source
La distinction pratique tient dans un seul caractère. Pour les répertoires, t enregistre le sticky avec other-execute, tandis que T enregistre le sticky sans ce bit d'exécution. La calculatrice préserve les deux formulaires et garde 1000 visible dans son résumé. Sa source mentionne également une ancienne allusion provenant d’un dossier régulier, mais fournit trop peu de preuves primaires pour étayer une chronologie historique universelle.
Utilisez la page pour régler la représentation avant de débattre de la politique. Entrez un mode, choisissez un fichier ou un répertoire et comparez les octaux, symboliques, matriciels, résumés et affectations. L'accord confirme une conversion cohérente sur douze bits. Arrêtez-vous là à moins que le système cible ne fournisse plus de preuves : l'outil n'identifie aucun utilisateur, ne lit aucun chemin, n'exécute aucune commande et n'inspecte aucune extension de stratégie.