Outils de développement · Calculatrice Chmod
Pourquoi chmod utilise octal : le raccourci base-8 et d'où il vient
· Contexte
chmod unix contrôle d'accès
Octal semble arbitraire jusqu'à ce que vous remarquiez qu'un chiffre contient exactement trois bits. Cet article explique l'adéquation entre la base 8 et rwx, l'habitude de l'ère DEC qui a rendu l'octal naturel et la convention du zéro non significatif.
Pourquoi 755 et non 493 — le même mode en décimal ne signifie rien pour personne, et il y a une raison pour laquelle l'octal a gagné
La valeur décimale 493 et la valeur octale 755 peuvent représenter le même entier, mais 755 expose directement le regroupement d'autorisations. Chaque chiffre affiché correspond à une classe et chaque classe contient exactement trois choix binaires. La calculatrice fonctionne à partir de cet ajustement arithmétique ; il n'a pas besoin d'une histoire historique pour montrer pourquoi l'octal est lisible pour les modes rwx.
Entrez 755 et la sortie devient rwxr-xr-x. Le propriétaire reçoit 7, le groupe 5 et les autres 5. La conversion du même entier en une étiquette décimale non groupée masquerait ces limites de classe. Cela explique l'utilité de la notation dans le modèle implémenté sans prétendre pourquoi chaque commande ou plate-forme externe l'a adoptée.
Trois bits par chiffre - comment la base 8 regroupe les binaires en triples qui s'alignent exactement avec r, w et x
Un chiffre en base huit couvre les valeurs de zéro à sept, exactement les totaux disponibles à partir de trois bits indépendants pondérés 4, 2 et 1. Les combinaisons correspondent clairement : 0 est ---, 1 est --x, 2 est -w-, 3 est -wx, 4 est r--, 5 est r-x, 6 est rw- et 7 est rwx.
Trois chiffres ordinaires correspondent donc au propriétaire, au groupe et aux autres. Pour 640, les triplets binaires sont 110, 100 et 000, donnant rw-r-----. La matrice de cases à cocher rend le même regroupement visible sans nécessiter de notation binaire. La modification d'une autorisation modifie uniquement le total de la classe correspondante et sa position symbolique associée.
L'habitude matérielle - les machines DEC sur lesquelles Unix fonctionnait au début étaient documentées en octal, donc les programmeurs y ont déjà pensé
Les sources du référentiel n'établissent pas de lignée matérielle pour la notation octale. Ils contiennent des masques de bits JavaScript, des règles d'analyseur, des tests et des contrôles d'interface utilisateur, mais pas de documentation pour les processeurs ou environnements de développement antérieurs. Toute affirmation selon laquelle une culture machine particulière aurait provoqué l’adoption nécessiterait des preuves historiques au-delà des fichiers autorisés pour cet article.
L'explication basée sur la source est plutôt arithmétique. Trois bits ont huit combinaisons possibles, donc un chiffre en base huit capture un triple rwx sans franchir une limite de classe. Cette relation peut être démontrée dans chaque résultat de la calculatrice. Il reste valable qu’un récit historique plus large soit finalement fourni ou non à partir de sources primaires.
L'historique du matériel n'est pas établi par les sources du référentiel
L'analyseur accepte un à quatre chiffres octaux et supprime un préfixe 0o facultatif. Par conséquent, 644, 0644 et 0o644 donnent tous la même valeur. Les chiffres 8 et 9 sont rejetés avec une explication spécifique car aucun d'eux n'appartient à la base huit et le texte mal formé n'est pas deviné dans un mode valide.
Un premier chiffre significatif contient des bits spéciaux plutôt qu'une autre classe ordinaire. Ses poids 4, 2 et 1 représentent setuid, setgid et sticky, tandis que les chiffres de fin conservent le propriétaire, le groupe et autres. Le formateur affiche trois chiffres lorsqu'aucun bit spécial n'est défini et quatre lorsqu'un bit spécial est requis, à moins qu'une sortie à quatre chiffres ne soit explicitement demandée.
Formes principales acceptées et chiffre du bit spécial dans cet analyseur
La conversion de 0644 par triples donne 6, 4 et 4. En binaire, ce sont 110, 100 et 100, donc le résultat symbolique est rw-r--r--. Le propriétaire a lu et écrit, tandis que le groupe et les autres ont uniquement lu. Chaque vue est dérivée du même entier, permettant un contrôle de cohérence direct.
Inverser le processus aboutit au même résultat. Commencez par rw-r--r--, ajoutez 4 et 2 pour le propriétaire, prenez 4 pour le groupe et prenez 4 pour les autres. Les chiffres sont 644. Le zéro facultatif accepté par l’analyseur n’ajoute pas de bit spécial ; il laisse la valeur numérique inchangée.
Pourquoi l'hexadécimal n'a jamais pris le dessus : deux chiffres hexadécimaux ne se divisent pas proprement en trois classes
Hexadécimal peut coder l'entier, mais ses limites de chiffres à quatre bits ne s'alignent pas avec les classes d'autorisation à trois bits. Il s’agit d’une comparaison arithmétique et non d’une preuve de la notation que les gens préféraient historiquement. La calculatrice n'accepte pas les entrées hexadécimales et ses sorties sont conçues autour de chiffres octaux, de positions symboliques et de commandes booléennes nommées.
Par exemple, les autorisations ordinaires occupent neuf bits, naturellement visibles sous forme de trois groupes octaux. Regrouper les mêmes bits en morceaux de quatre bits diviserait une classe rwx au-delà des limites des chiffres. Cela rend l'hexadécimal moins transparent pour cet affichage, mais aucune affirmation concernant l'adoption, les normes ou l'historique de la ligne de commande ne découle de cette seule observation.
La comparaison hexadécimale est arithmétique et non une preuve d'adoption historique
Les constantes nommées provenant d'autres langages ou interfaces système sont en dehors de cette implémentation JavaScript. Le référentiel utilise ses propres propriétés descriptives telles queownerRead, groupWrite, otherExecute, setuid, setgid et sticky. Ces noms rendent lisible l’arithmétique des bits internes sans affirmer d’équivalence avec un en-tête ou une API externe particulière.
Restez dans les limites de ce que l'outil peut vérifier : la valeur numérique d'un mode fourni, ses booléens de classe, le rendu symbolique, l'explication et le texte de commande généré. La page du navigateur n'inspecte pas la plate-forme cible et ne compile pas de constantes natives. Toute personne traduisant le résultat dans une autre interface de programmation doit consulter séparément la documentation faisant autorité de cette interface.
Les constantes C nommées sont en dehors de cette implémentation JavaScript
Octal correspond à cette calculatrice car chaque classe d'autorisation est une quantité de trois bits et chaque chiffre de base huit contient exactement trois bits. La correspondance est visible, réversible et facile à tester. Les bits spéciaux utilisent un quatrième chiffre avec le même modèle 4, 2 et 1, tandis que les symboles s, S, t et T préservent leurs détails de position d'exécution.
Utilisez la notation comme aide à la révision plutôt que comme incantation. Divisez la valeur en propriétaire, groupe, autre et tout préfixe spécial ; vérifier les lettres et les cases ; puis décidez de l'adéquation à partir des preuves réelles de propriété et de charge de travail. L'arithmétique explique complètement le regroupement, sans affirmations non fondées sur l'historique du matériel, les normes ou la politique universelle.