Entwicklertools · Chmod-Rechner
Warum chmod Oktal verwendet: die Abkürzung base-8 und woher sie kommt
· Hintergrund
chmod Unix Zugriffskontrolle
Oktal sieht willkürlich aus, bis Sie bemerken, dass eine Ziffer genau drei Bits enthält. Dieser Beitrag erklärt die Übereinstimmung zwischen der Basis 8 und rwx, die Gewohnheit aus der DEC-Ära, die Oktal natürlich machte, und die Konvention für die führende Null.
Warum 755 und nicht 493 – der gleiche Modus im Dezimalformat bedeutet für niemanden etwas, und es gibt einen Grund, warum der Oktalmodus gewonnen hat
Der Dezimalwert 493 und der Oktalwert 755 können dieselbe Ganzzahl darstellen, aber 755 macht die Berechtigungsgruppierung direkt verfügbar. Jede angezeigte Ziffer entspricht einer Klasse und jede Klasse enthält genau drei binäre Auswahlmöglichkeiten. Der Rechner arbeitet mit dieser arithmetischen Anpassung; Es bedarf keiner historischen Geschichte, um zu zeigen, warum Oktal für RWX-Modi lesbar ist.
Geben Sie 755 ein und die Ausgabe wird zu rwxr-xr-x. Der Besitzer erhält 7, die Gruppe 5 und andere 5. Das Konvertieren derselben Ganzzahl in eine nicht gruppierte Dezimalbezeichnung würde diese Klassengrenzen verbergen. Dies erklärt die Nützlichkeit der Notation innerhalb des implementierten Modells, ohne zu behaupten, warum alle externen Befehle oder Plattformen sie übernommen haben.
Drei Bits pro Ziffer – wie die Basis 8 Binärwerte in Tripel gruppiert, die genau mit r, w und x übereinstimmen
Eine Ziffer zur Basis Acht umfasst die Werte Null bis Sieben, genau die Summen, die aus drei unabhängigen Bits mit der Gewichtung 4, 2 und 1 verfügbar sind. Die Kombinationen sind sauber zugeordnet: 0 ist ---, 1 ist --x, 2 ist -w-, 3 ist -wx, 4 ist r--, 5 ist r-x, 6 ist rw- und 7 ist rwx.
Drei gewöhnliche Ziffern stimmen daher mit Besitzer, Gruppe und Andere überein. Für 640 sind die binären Tripel 110, 100 und 000, was rw-r----- ergibt. Die Checkbox-Matrix macht die gleiche Gruppierung sichtbar, ohne dass eine binäre Notation erforderlich ist. Das Ändern einer Berechtigung ändert nur die entsprechende Klassensumme und die zugehörige symbolische Position.
Die Hardware-Gewohnheit – die DEC-Maschinen, auf denen frühes Unix lief, waren in Oktalform dokumentiert, sodass Programmierer bereits daran gedacht hatten
Repository-Quellen legen keine Hardware-Herkunftslinie für die Oktalnotation fest. Sie enthalten JavaScript-Bitmasken, Parserregeln, Tests und Benutzeroberflächensteuerelemente, keine Dokumentation für frühere Prozessoren oder Entwicklungsumgebungen. Für jede Behauptung, dass eine bestimmte Maschinenkultur die Adoption verursacht hat, sind historische Beweise erforderlich, die über die für diesen Artikel zulässigen Dateien hinausgehen.
Die quellengestützte Erklärung ist stattdessen arithmetisch. Drei Bits haben acht mögliche Kombinationen, sodass eine Ziffer zur Basis acht ein rwx-Triple erfasst, ohne eine Klassengrenze zu überschreiten. Dieser Zusammenhang kann in jedem Rechnerergebnis nachgewiesen werden. Es bleibt gültig, unabhängig davon, ob letztendlich ein umfassenderer historischer Bericht aus Primärquellen bereitgestellt wird oder nicht.
Der Hardwareverlauf wird von den Repository-Quellen nicht ermittelt
Der Parser akzeptiert ein bis vier Oktalziffern und entfernt ein optionales 0o-Präfix. Folglich werden 644, 0644 und 0o644 alle in denselben Wert aufgelöst. Die Ziffern 8 und 9 werden mit einer spezifischen Erklärung abgelehnt, da keine davon zur Basis acht gehört und fehlerhafter Text nicht in einen gültigen Modus erraten wird.
Eine führende signifikante Ziffer trägt Sonderbits und keine andere gewöhnliche Klasse. Seine Gewichtungen 4, 2 und 1 stellen Setuid, Setgid und Sticky dar, während die nachfolgenden Ziffern Besitzer, Gruppe und andere beibehalten. Der Formatierer zeigt drei Ziffern an, wenn kein spezielles Bit gesetzt ist, und vier, wenn eine erforderlich ist, es sei denn, die vierstellige Ausgabe wird ausdrücklich angefordert.
Akzeptierte führende Formen und die Sonderbitziffer in diesem Parser
Die Konvertierung von 0644 durch Tripel ergibt 6, 4 und 4. Binär sind das 110, 100 und 100, das symbolische Ergebnis ist also rw-r--r--. Der Besitzer hat Lese- und Schreibrechte, während die Gruppe und andere nur Leserechte haben. Jede Ansicht wird von derselben Ganzzahl abgeleitet, was eine direkte Konsistenzprüfung ermöglicht.
Das Umkehren des Prozesses führt zum gleichen Ergebnis. Beginnen Sie mit rw-r--r--, fügen Sie 4 und 2 für den Besitzer hinzu, nehmen Sie 4 für die Gruppe und nehmen Sie 4 für andere. Die Ziffern sind 644. Die vom Parser akzeptierte optionale führende Null fügt kein spezielles Bit hinzu; Der numerische Wert bleibt unverändert.
Warum sich Hexadezimalzahl nie durchgesetzt hat – zwei Hexadezimalziffern lassen sich nicht sauber in drei Klassen aufteilen
Hexadezimal kann die Ganzzahl kodieren, aber seine Vier-Bit-Zifferngrenzen stimmen nicht mit den Drei-Bit-Berechtigungsklassen überein. Dabei handelt es sich um einen arithmetischen Vergleich, nicht um einen Beweis dafür, welche Notation die Menschen in der Vergangenheit bevorzugt haben. Der Rechner akzeptiert keine hexadezimale Eingabe und seine Ausgaben basieren auf Oktalziffern, symbolischen Positionen und benannten booleschen Steuerelementen.
Beispielsweise belegen normale Berechtigungen neun Bits, die natürlich als drei Oktalgruppen sichtbar sind. Das Gruppieren derselben Bits in Vier-Bit-Blöcken würde eine RWX-Klasse über Zifferngrenzen hinweg aufteilen. Dadurch wird die Hexadezimalzahl für diesen Anzeigezweck weniger transparent, aber allein aus dieser Beobachtung lässt sich kein Anspruch auf Akzeptanz, Standards oder Befehlszeilenverlauf ableiten.
Der Hexadezimalvergleich ist arithmetisch und kein Beweis für eine historische Übernahme
Benannte Konstanten aus anderen Sprachen oder Systemschnittstellen liegen außerhalb dieser JavaScript-Implementierung. Das Repository verwendet seine eigenen beschreibenden Eigenschaften wie OwnerRead, GroupWrite, OtherExecute, Setuid, Setgid und Sticky. Diese Namen machen die interne Bitarithmetik lesbar, ohne eine Äquivalenz zu einem bestimmten externen Header oder einer bestimmten API zu bestätigen.
Bleiben Sie innerhalb dessen, was das Tool überprüfen kann: der numerische Wert eines bereitgestellten Modus, seine booleschen Werte der Klasse, symbolische Darstellung, Erklärung und generierter Befehlstext. Die Browserseite überprüft nicht die Zielplattform und kompiliert keine nativen Konstanten. Jeder, der das Ergebnis in eine andere Programmierschnittstelle übersetzt, sollte die maßgebliche Dokumentation dieser Schnittstelle separat konsultieren.
Benannte C-Konstanten liegen außerhalb dieser JavaScript-Implementierung
Octal passt zu diesem Rechner, da jede Berechtigungsklasse eine Drei-Bit-Größe ist und jede Ziffer zur Basis Acht genau drei Bits trägt. Die Korrespondenz ist sichtbar, reversibel und leicht zu testen. Spezielle Bits verwenden eine vierte Ziffer mit den gleichen Mustern 4, 2 und 1, während symbolische s, S, t und T ihre Ausführungspositionsdetails beibehalten.
Verwenden Sie die Notation als Überprüfungshilfe und nicht als Beschwörung. Teilen Sie den Wert in Eigentümer, Gruppe, Andere und ein beliebiges spezielles Präfix auf. Überprüfen Sie die Buchstaben und Kästchen. Entscheiden Sie dann über die Eignung anhand der tatsächlichen Eigentumsverhältnisse und der Arbeitsbelastungsnachweise. Die Arithmetik erklärt die Gruppierung vollständig ohne unbegründete Behauptungen über die Hardwaregeschichte, Standards oder universelle Richtlinien.