Entwicklertools · Chmod-Rechner
chmod symbolischer Modus erklärt: u+x, g-w, o=r und a+rX
· Wie es funktioniert
chmod Unix Entwickler-Workflow
Die symbolische Form von chmod ist eine kleine Grammatik: Benutzerklasse, Operator und Berechtigungsbits. Dieser Beitrag zerlegt sie, damit u+x und go-rwx verständlich werden, und zeigt, wann die symbolische Schreibweise besser als die oktale ist.
Ein Bereitstellungsskript voller Buchstaben – chmod u+x,go-wploy.sh funktioniert, aber niemand im Team kann sagen, was es ändert
Ein Befehl wie u+x sieht aus wie die symbolische Anzeige des Taschenrechners, aber die beiden Formen haben unterschiedliche Aufgaben. Das bearbeitbare symbolische Feld akzeptiert neun Berechtigungspositionen, optional vorangestellt durch ein erkanntes Dateitypzeichen. Im Gegensatz dazu buchstabiert das generierte chmod-Argument vollständige Zuweisungen mit den Klauseln u=, g= und o=, sodass es einen festen Modus darstellt und keine relative Änderung analysiert.
Durch die Eingabe von 750 wird die Unterscheidung konkretisiert. Die Anzeige ist rwxr-x---, während die generierte Zuweisung u=rwx,g=rx,o= ist. Beide beschreiben denselben Besitzer, dieselbe Gruppe und andere Bits, doch nur das zweite ist als chmod-Argument formatiert. Die Seite führt diesen Befehl nie aus. Dadurch wird die Darstellung verfügbar gemacht, sodass der vorgeschlagene Wert vor einer separaten Shell-Aktion überprüft werden kann.
Der Rechner trennt eine Anzeige im ls-Stil von der von ihm generierten Zuweisungsliste
Die Buchstaben u, g und o erscheinen in der generierten Aufgabe, weil sie Eigentümer, Gruppe und andere kennzeichnen. Jede Ausgabe benennt alle drei Klassen explizit, einschließlich einer leeren Klausel, wenn eine Klasse keine Berechtigungen hat. Der Rechner analysiert keine ausgelassene Grammatik oder Kurzschrift. Seine Eingabe beginnt in einem abgeschlossenen Modus, nicht in Anweisungen, deren Ergebnis von einem vorhandenen Ziel abhängt.
Diese Korrektur verhindert eine subtile Überforderung. Die Matrix kann genau anzeigen, welche Klasse Lese-, Schreib- oder Ausführungsvorgänge erhält, sie kann jedoch nicht entscheiden, was ein weggelassener Klassenselektor in einer anderen chmod-Implementierung bedeuten würde. Vergleichen Sie stattdessen die drei Matrixspalten mit den drei Zuweisungsklauseln. Ihre Vereinbarung überprüft den festen Wert, ohne sich auf relative Befehlsregeln zu verlassen, die diese Schnittstelle nicht implementiert.
Wer Briefe in generierten Aufgaben erscheinen; relativ weggelassen – die Grammatik wird nicht analysiert
Der Zuweisungsgenerator verwendet = für jede gewöhnliche Klasse. Diese Auswahl erstellt den angeforderten Besitzer, die Gruppe und andere Tripel exakt neu, einschließlich des Löschens einer Klasse durch die Ausgabe einer leeren rechten Seite. Obwohl + und - zu symbolischen chmod-Befehlen gehören, werden sie nicht als Taschenrechnereingabe akzeptiert. Die Seite modelliert daher keine inkrementellen Hinzufügungen oder Entfernungen aus einem unbekannten Startmodus.
Ein Ein-Bit-Vergleich zeigt, was der unterstützte Workflow beweisen kann. Modus 750 rendert rwxr-x---; Das Ändern der Gruppenziffer in 7 erzeugt rwxrwx--- und ändert g=rx in g=rwx. Der Rechner ermittelt die abgeschlossenen Vorher-Nachher-Modi. g+w wird nicht anhand einer Live-Datei ausgewertet, da kein aktueller Modus, Pfad, Dateisystem oder Befehlsausführung an der Konvertierung beteiligt ist.
Der generierte Operator ist =, während die Eingabegrammatik + und – außerhalb des Tools bleibt
Der Parser erkennt r und w an ihren festen Positionen, plus x oder – an gewöhnlichen Ausführungspositionen. Es akzeptiert auch s, S, t und T, wenn spezielle Bits diese Positionen teilen. Das große X ist anders: Es gehört zur relativen chmod-Grammatik und wird hier nicht unterstützt. Die Bereitstellung von X wird abgelehnt und nicht stillschweigend als gewöhnliches Ausführungsbit interpretiert.
Klein- und Großbuchstaben werden bewusst eingesetzt. Setuid und setgid verwenden s, wenn ihr entsprechendes Ausführungsbit vorhanden ist, und S, wenn es nicht vorhanden ist; sticky verwendet t oder T nach derselben Regel in der Other-Execute-Position. Die spezielle Zeile und die vierstellige Zusammenfassung bewahren diese Bits. Nichts davon bietet Unterstützung für die bedingte Groß-X-Auswahl über Dateien und Verzeichnisse hinweg.
Der Parser akzeptiert r, w, x, s, S, t und T; Großbuchstaben X werden nicht unterstützt
Klassenkopieausdrücke wie g=u sind nicht implementiert. Der Rechner liest niemals eine Quellklasse aus einem vorhandenen Objekt oder wendet die Bits einer Klasse auf eine andere an. Es empfängt einen vollständigen Oktal- oder LS-Modus, wandelt diesen Wert in benannte boolesche Werte um und gibt explizite Flags für jede Klasse aus. Jedes kopierte Ergebnis muss an anderer Stelle berechnet werden, bevor diese Seite es überprüfen kann.
Angenommen, ein externer Schritt legt fest, dass Eigentümer und Gruppe beide rwx haben sollten, während andere keinen haben. Die Eingabe von 770 ergibt rwxrwx--- und u=rwx,g=rwx,o=. Das bestätigt das fertige Ergebnis, beweist aber nicht, wie es abgeleitet wurde. Auch der Eigentümer bleibt unbekannt: Der Konverter beschriftet Klassen, ohne den tatsächlichen Eigentümer, die Gruppe oder den Prozess zu identifizieren, der auf das Ziel stoßen würde.
Das Kopieren von Berechtigungen zwischen Klassen ist nicht implementiert
Modus 0750 wird mit seiner führenden Null akzeptiert und als derselbe Wert wie 750 geparst. Besitzerziffer 7 aktiviert Lesen, Schreiben und Ausführen; Gruppenziffer 5 aktiviert Lesen und Ausführen; Die andere Ziffer 0 aktiviert nichts. Die synchronisierte Anzeige wird zu rwxr-x--- und die immer vierstellige Zusammenfassung hält 0750 als eindeutigen Bewertungswert sichtbar.
Die generierte symbolische Zuweisung für diesen festen Modus ist u=rwx,g=rx,o=. Seine drei Klauseln entsprechen direkt den Matrixspalten, während die oktale Befehlsvorschau 750 verwendet, es sei denn, ein spezielles Bit erfordert eine vierte Ziffer. Ein angegebener Pfad kann in der Vorschau angegeben werden, wird jedoch nie geöffnet. Das Beispiel überprüft die Vertretung, nicht den Besitz, die Autorisierung oder eine erfolgreiche Berechtigungsänderung.
Arbeitsbeispiel: 0750 als fester Modus und generierte Zuweisungsliste
Referenzbasierte Änderungen, Symlink-Verarbeitung und ACL-Vorgänge bleiben außerhalb dieses Konverters. Auf der Seite gibt es keine Referenzdateieingabe, Pfaddurchquerung, ACL-Eintragsmodell oder Dateisystemabfrage. Durch Auswahl der Rekursion wird nur ein angezeigtes -R-Flag hinzugefügt. Folglich kann der generierte Befehl nicht melden, welche Objekte erreicht würden oder ob eine andere Zugriffskontrollschicht das effektive Ergebnis ändert.
Eine ungültige Eingabe bietet eine nützliche Grenzprüfung. Ein falsch platzierter Berechtigungsbuchstabe, ein nicht unterstütztes X, ein nachgestellter Marker oder eine fehlerhafte Oktalziffer werden abgelehnt statt repariert. Durch die Korrektur des Textes auf eine unterstützte Neun-Zeichen-Anzeige werden ein Modus und synchronisierte Ansichten erstellt. Diese Annahme beweist nur, dass die Zeichenfolge den implementierten zwölf Bits zugeordnet ist; Es validiert keine externe CHMOD-Funktion oder Zielumgebung.
Referenz-, Symlink- und ACL-Vorgänge bleiben außerhalb dieses Konverters
Die praktische Unterscheidung besteht zwischen einer Anzeige im ls-Stil und einer generierten festen Zuweisung, nicht zwischen symbolischer Eingabe als relativ und oktaler Eingabe als absolut. Beide bearbeitbaren Formulare stellen einen abgeschlossenen Modus dar. Der Rechner konvertiert beide in die gleiche Ganzzahl, Matrix, Zusammenfassung, Erklärung und Vorschau und gibt dann explizite u=-, g=- und o=-Klauseln für die symbolische Befehlsform aus.
Verwenden Sie diese synchronisierten Ansichten, um Rechenfehler zu erkennen. Wenn 750, rwxr-x--- und u=rwx,g=rx,o= zusammen erscheinen, ist der feste Modus intern konsistent. Hören Sie hier auf, es sei denn, das tatsächliche System liefert weitere Beweise. Die Seite analysiert keine relativen Operatoren, ausgelassene Selektoren, Klassenkopien oder Großbuchstaben X und kann nicht ermitteln, ob der Modus den tatsächlich fehlgeschlagenen Vorgang anspricht.