Deutsch

Entwicklertools · Chmod-Rechner

Die vierte chmod-Ziffer: wie setuid, setgid und das Sticky-Bit funktionieren

· Wie es funktioniert

chmod Unix Entwickler-Workflow

Sonderbits werden als eindeutiges Unix-Berechtigungsbitdiagramm angezeigt
Original-ToolAcre-Vektorillustration

Modi wie 4755 und 2775 tragen eine führende Ziffer, die angibt, unter wem ein Programm ausgeführt wird oder wer neue Dateien besitzt. In diesem Beitrag werden die drei Sonderbits und ihre Darstellung in ls -l erläutert.

Das s in drwxrwsr-x – ein freigegebenes Projektverzeichnis verhält sich anders und die ls-Ausgabe hat einen Buchstaben, der nicht im Basis-Spickzettel enthalten ist

Das s in rwxrwsr-x zeichnet zwei Fakten an einer Position auf: setgid ist aktiviert und Group Execute ist ebenfalls aktiviert. Die Implementierung speichert setgid als oktales 2000 und ersetzt dann das Group-Execute-Zeichen durch s. Wenn eine Verzeichnistypmarkierung ausgewählt ist, wird der Modus 2775 als drwxrwsr-x angezeigt, während die vierstellige Zusammenfassung die führende Sonderbitziffer beibehält.

Bei dieser Ausgabe handelt es sich um eine Konvertierung, nicht um eine Dateisystembeobachtung. Der Zielselektor ändert die Art und Weise, wie die Seite die Bits erklärt, aber er öffnet niemals ein Verzeichnis oder prüft den Besitz. Für ein Verzeichnis heißt es in der implementierten Erklärung, dass neu erstellte Dateien die Gruppe des Verzeichnisses erben. Ob ein bestimmtes Speichersystem dieses Verhalten anwendet oder ob eine andere Richtlinie den Zugriff beeinflusst, erfordert Beweise, die über diesen Rechner hinausgehen.

Die vierte Ziffer und ihre Buchstaben – 4, 2 und 1 als Präfix im bekannten Modus, angezeigt als s und t an der Ausführungsposition, in Großbuchstaben, wenn das Ausführungsbit darunter ausgeschaltet ist

Die führende Oktalziffer kombiniert drei unabhängige Masken: setuid ist 4000, setgid ist 2000 und sticky ist 1000. Ihre Buchstaben belegen vorhandene Ausführungspositionen, anstatt Zeichen zur Neun-Positionen-Anzeige hinzuzufügen. Setuid verwendet die Eigentümerposition, setgid die Gruppenposition und Sticky die andere Position. Die Matrix macht alle drei getrennt vom normalen Lesen, Schreiben und Ausführen verfügbar.

Case enthüllt das zugrunde liegende Ausführungsbit. Modus 4755 rendert rwsr-xr-x, da die Ausführung des Besitzers mit setuid einhergeht; 4644 rendert rwSr--r--, weil dies nicht der Fall ist. Der Parser liest beide Formen zurück in die entsprechenden Spezial- und Ausführungsbits. Die gleiche Lower-versus-Upper-Regel erzeugt s oder S für setgid und t oder T für sticky, wobei alle Kombinationen während Roundtrips erhalten bleiben.

setuid für ausführbare Dateien – wie /usr/bin/passwd mit den Berechtigungen des Dateieigentümers ausgeführt wird und warum Linux setuid für interpretierte Skripte ignoriert

Bei einer regulären Datei hängt die implementierte Setuid-Erklärung von der Ausführung durch den Eigentümer ab. Wenn beide Bits vorhanden sind, heißt es auf der Seite, dass beim Ausführen der Datei die Identität des Dateieigentümers und nicht die des Aufrufers verwendet wird. Wenn setuid vorhanden ist, ohne dass der Eigentümer ausgeführt wird, wird in der Anzeige ein großes S verwendet und erklärt, dass nichts ausgeführt werden muss. Dies ist der korrigierte, quellengestützte Umfang des Abschnitts.

Der Rechner identifiziert keine bestimmte ausführbare Datei, startet sie nicht und überprüft nicht, wie eine Plattform Skripte behandelt. Sein Beweis ist der bereitgestellte Modus und die Zielwahl. Der Modus 4755 kann in setuid plus rwxr-xr-x zerlegt werden, und die Zuweisungsvorschau hängt u+s nach den gewöhnlichen Klauseln an. Das verifiziert nur die Wiedergabe und Erklärung; Programmeignung und tatsächliche Ausführung bleiben externe Fragen.

Setuid-Rendering und Erklärung für reguläre Dateien

Setgid für ein Verzeichnis wird unabhängig von den normalen Gruppenberechtigungen dargestellt. Der Modus 2775 kombiniert die Maske 2000 mit Besitzer und Gruppe 7 und anderen 5. Die Anzeige rwxrwsr-x sorgt dafür, dass die Gruppe liest, schreibt und ausführt, während das sichtbare x durch s ersetzt wird. Die Verzeichniserklärung verknüpft das spezielle Bit mit der Vererbung der Verzeichnisgruppe für neu erstellte Dateien.

Durch das Entfernen der Gruppenausführung unter Beibehaltung von setgid wird der Gruppenpositionsbuchstabe in ein großes S geändert. Diese sichtbare Warnung folgt direkt vom Renderer, unabhängig vom Zielwortlaut. Die Seite kann diese abgeschlossenen Werte vergleichen und anzeigen, welches Kontrollkästchen geändert wurde, sie kann jedoch kein freigegebenes Verzeichnis, seine aktuelle Gruppe oder die Identitäten, die Einträge erstellen, überprüfen. Die Übereinstimmung zwischen den Ansichten ist ein rechnerischer Beweis, keine betriebliche Zustimmung.

Das Sticky-Bit bei Verzeichnissen – eingeschränktes Löschen in /tmp und warum 1777 nicht dasselbe ist wie 777

Sticky besetzt die andere Ausführungsposition und trägt oktal 1000 bei. Für den Verzeichnismodus 1777 bleiben alle normalen Berechtigungen aktiviert und das letzte symbolische Zeichen wird t. Die implementierte Verzeichniserklärung fügt eine Lösch- und Umbenennungsbeschränkung hinzu, während die 777-Erklärung vor einem beschreibbaren Verzeichnis ohne Sticky warnt. Somit macht der Konverter den Ein-Bit-Unterschied sichtbar, ohne die zugrunde liegenden rwx-Tripel zu verändern.

Wenn Sticky ohne andere Ausführung vorhanden ist, ist das letzte Zeichen stattdessen der Großbuchstabe T. Der Parser und der Renderer bewahren diese Unterscheidung in beide Richtungen. Die Seite überprüft kein tatsächlich freigegebenes Verzeichnis, keine Eintragseigentümer oder einen Löschversuch. Seine zuverlässige Schlussfolgerung ist enger gefasst: Die bereitgestellte Ganzzahl enthält Sticky, ihr Ausführungsbegleiter ist durch die Groß-/Kleinschreibung sichtbar und es wird verzeichnisorientierter erklärender Text ausgewählt.

Arbeitsbeispiel: Erstellen von 2775 für ein freigegebenes Verzeichnis – Ableiten der Ziffern und des entsprechenden symbolischen chmod g+s,a+rwx,o-w

Erstellen Sie 2775 als vier sichtbare Komponenten: Sonderziffer 2 für Setgid, Besitzerziffer 7 für rwx, Gruppenziffer 7 für rwx und andere Ziffer 5 für r-x. Die Eingabe des vollständigen Werts ergibt rwxrwsr-x. Die Matrix wählt setgid separat aus, während die Zusammenfassung neben diesem speziellen Bit Eigentümer, Gruppe und andere Berechtigungen nennt.

Die generierte Zuordnungsliste ist u=rwx,g=rwx,o=rx,g+s. Dies unterscheidet sich von der Neun-Zeichen-Anzeige, stellt jedoch denselben Zwölf-Bit-Wert dar. Wenn Sie „Verzeichnis“ auswählen, ändert sich die Erklärung zum implementierten Wortlaut der Gruppenvererbung. Wenn Sie „Datei“ auswählen, wird der Wortlaut geändert, ohne dass 2775 geändert wird. Der Rechner überprüft nie die Gruppe des Ziels oder erstellt keine Datei, daher handelt es sich bei dem Beispiel eher um ein Modell als um eine Bereitstellungsvorschrift.

Arbeitsbeispiel: Erstellen und Lesen von 2775 für ein Modell mit gemeinsam genutzten Verzeichnissen

Mountverhalten, Funktionen und zusätzliche Plattformsemantik werden nicht modelliert. Die Seite verfügt über keine Mount-Eingabe, keinen Funktionssatz, keine Kernel-Abfrage oder Dateisystem-Prüfung. Es kann setuid, setgid und sticky darstellen und seine Erklärung zwischen regulären Dateien und Verzeichnissen variieren. Es kann nicht festgestellt werden, ob eine externe Regel diese Bits auf einem tatsächlichen Ziel neutralisiert, erweitert oder anders interpretiert.

Selbst der Ecktext der Quelle sollte nicht über die Schnittstelle hinaus verallgemeinert werden. Ein gültiger Spezialbitmodus beweist, dass Parser, Renderer, Matrix, Zusammenfassung und generierte Zuweisungen übereinstimmen. Es beweist nicht, dass ein Ausführungs-, Vererbungs- oder Löschverhalten stattgefunden hat. Halten Sie nicht unterstützte Richtlinienansprüche aus der Diagnose fern und behandeln Sie den kopierten Befehl als inaktiven Text, bis eine separat überprüfte Umgebung den fehlenden Kontext bereitstellt.

Mount-Richtlinien, Funktionen und nicht implementierte Corner-Semantik bleiben extern

Der implementierte Takeaway ist ein Roundtrip mit Positionsbedeutung. Setuid wird der Ausführungsposition des Besitzers zugeordnet, setgid der Gruppenausführung und Sticky der anderen Ausführung. Kleinbuchstaben bedeuten, dass das zugehörige Ausführungsbit aktiviert ist. Großbuchstaben bedeuten, dass es ausgeschaltet ist. Die führende Oktalziffer und die entsprechenden Kontrollkästchen bewahren die gleichen Informationen, sodass aus der Prosa allein kein spezielles Bit abgeleitet werden muss.

Testen Sie einen speziellen Modus, indem Sie alle Darstellungen vergleichen. Erwarten Sie für 2775 das führende 2, Gruppenpositions-s, ein aktiviertes Setgid-Kontrollkästchen und einen generierten g+s-Zusatz. Eine Nichtübereinstimmung würde ein Konvertierungsproblem aufdecken. Die Vereinbarung legt nur einen konsistenten Modus fest. Eigentum, Mount-Richtlinie, Funktionen, Anwendungsregeln und die Konsequenzen der Ausführung von chmod bleiben außerhalb der Beweise des Browser-Rechners.