Wie funktioniert das klebrige Stück?

SUID

Das Sticky Bit , das auf ausführbare Programme angewendet wird, die das System kennzeichnen, um ein Image des Programms zu erhalten im Speicher, nachdem das Programm beendet wurde.

Aber ich weiß nicht, was es im Speicher gespeichert ist. Und wie kann ich sie in diesem Fall sehen?

Kommentare

Antwort

Dies ist wahrscheinlich eines meiner lästigsten Dinge, die die Leute ständig durcheinander bringen. Das SUID / GUID-Bit und das Sticky-Bit sind zwei völlig verschiedene Dinge.

Wenn Sie ein man chmod ausführen, können Sie über das SUID und die Sticky-Bits lesen. Die Manpage ist auch hier verfügbar.

Hintergrund

Auszug

Die Buchstaben rwxXst wählen Dateimodusbits für die Betroffene Benutzer: Lesen (r), Schreiben (w), Ausführen (oder Suchen nach Verzeichnissen) (x), Ausführen / Suchen nur, wenn die Datei ein Verzeichnis ist oder bereits Ausführungsberechtigung für einen Benutzer (X) hat, Benutzer- oder Gruppen-ID bei Ausführung (en) festlegen , eingeschränktes Löschflag oder Sticky Bit ( t) .

SUID / GUID

Was ist die obige Manpage? Der Versuch zu sagen ist, dass die Position, die das x-Bit im rwxrwxrwx für das Benutzeroktal (1. Gruppe von rwx) und das Gruppenoktal (2. Gruppe von rwx) einnimmt, einen zusätzlichen Zustand annehmen kann, in dem das x ein s wird. In diesem Fall wird diese Datei bei der Ausführung (wenn es sich um ein Programm und nicht nur um ein Shell-Skript handelt) mit den Berechtigungen des Eigentümers oder der Gruppe der Datei ausgeführt.

Wenn sich die Datei also im Besitz von root befindet Wenn das SUID-Bit aktiviert ist, wird das Programm als Root ausgeführt. Auch wenn Sie es als normaler Benutzer ausführen. Dasselbe gilt für das GUID-Bit.

Auszug

SETUID- UND SETGID-BITS

chmod löscht das Set-Group-ID-Bit einer regulären Datei, wenn die Gruppen-ID der Datei dies tut nicht mit der effektiven Gruppen-ID des Benutzers oder einer der zusätzlichen Gruppen-IDs des Benutzers übereinstimmen, es sei denn, der Benutzer verfügt über entsprechende Berechtigungen. Zusätzliche Einschränkungen können dazu führen, dass die Bits set-user-ID und set-group-ID von MODE oder RFILE ignoriert werden. Dieses Verhalten hängt von der Richtlinie und Funktionalität des zugrunde liegenden chmod-Systemaufrufs ab. Überprüfen Sie im Zweifelsfall das zugrunde liegende Systemverhalten.

chmod behält die Bits set-user-ID und set-group-ID eines Verzeichnisses bei, sofern Sie nicht ausdrücklich etwas anderes angeben. Sie können die Bits symbolisch setzen oder löschen Modi wie u + s und gs, und Sie können die Bits mit einem numerischen Modus setzen (aber nicht löschen).

SUID / GUID-Beispiele

no suid / guid – nur die Bits rwxr-xr-x werden gesetzt

$ ls -lt b.pl -rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

suid & ausführbares Bit des Benutzers aktiviert (Kleinbuchstaben) – Die Bits rwsr-xrx werden gesetzt.

$ chmod u+s b.pl $ ls -lt b.pl -rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

suid enabled & ausführbares Bit deaktiviert (Großbuchstabe S) – die Bits rwSr-xr-x sind festgelegt.

$ chmod u-x b.pl $ ls -lt b.pl -rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

guid & Gruppe aktiviert (Kleinbuchstaben) – Die Bits rwxr-sr-x werden gesetzt.

$ chmod g+s b.pl $ ls -lt b.pl -rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl 

guid enabled & ausführbares Bit deaktiviert (Großbuchstabe S) – Die Bits rwxr-Sr-x werden gesetzt.

$ chmod g-x b.pl $ ls -lt b.pl -rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl 

Sticky-Bit

Das Sticky-Bit auf dem Andererseits wird es als t bezeichnet, z. B. im Verzeichnis /tmp:

$ ls -l /|grep tmp drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp 

Dieses Bit sollte immer als „eingeschränktes Löschbit“ bezeichnet werden, da dies das ist, was es wirklich bedeutet. Wenn dieses Modusbit aktiviert ist, wird ein Verzeichnis so erstellt, dass Benutzer nur Dateien & -Verzeichnisse löschen können, deren Eigentümer sie sind.

Auszug

BESCHRÄNKTE LÖSCHFLAGGE ODER STICKY BIT

Das Flag für eingeschränktes Löschen oder Sticky Bit ist ein einzelnes Bit, dessen Die Interpretation hängt vom Dateityp ab. Bei Verzeichnissen wird verhindert, dass nicht privilegierte Benutzer eine Datei im Verzeichnis entfernen oder umbenennen, es sei denn, sie besitzen die Datei oder das Verzeichnis. Dies wird als eingeschränktes Löschflag für das Verzeichnis bezeichnet und ist häufig in weltweit beschreibbaren Verzeichnissen wie / tmp zu finden.Bei regulären Dateien auf einigen älteren Systemen speichert das Bit das Textbild des Programms auf dem Auslagerungsgerät, damit es beim Ausführen schneller geladen wird. Dies wird als Sticky-Bit bezeichnet.

Kommentare

  • Tatsächlich konnte das Sticky-Bit zuvor auf ausführbare Dateien angewendet werden, was dazu führte, dass diese nach dem ersten Laden im Swap blieben. Dies konnte speichern Viele unnötige Festplatten- / Netzwerk- (NFS) und CPU-Auslastung für Programme, die häufig verwendet wurden. Weder Linux noch die meisten (alle?) Unix-Systeme unterstützen dies jedoch mehr (es wurde aus dem Kernel entfernt). Es ' s " klebrig ", da die ausführbare Datei im Swap steckt. Außerdem wurde sie für Verzeichnisse als verwendet Sie beschreiben.
  • Eigentlich " viel verwendet oder sehr groß " wäre eine bessere Beschreibung. Denken Sie daran, mein College hatte Der Netscape-Webbrowser als " klebrig " auf ihrem HP-UX-Computer im Jahr 1995. So kleine Programme, die sehr oft verwendet wurden (z. Systembefehle, die häufig von cron ausgeführt werden) und große Programme (z. B. Netscape) waren Hauptkandidaten, um " klebrig " zu werden. In beiden Fällen wäre es verschwenderisch, sie ständig von Festplatte / NFS neu zu laden.
  • Sticky-Bit-Programme sollten im RAM und nicht im Swap verbleiben (das Laden eines Bildes aus einer Swap-Datei ist nicht ' nicht so viel schneller als das Laden von einer Dateisystemdiskette). Es war für wichtige Befehle auf Betriebssystemebene wie ls vorgesehen. Offensichtlich konnte nur der Superuser das Sticky-Bit für eine Datei setzen. Es wurde weniger wichtig, nachdem virtueller Speicher und gemeinsam genutzte Bibliotheken eingeführt wurden, und insbesondere, als Pager intelligenter wurden und dynamisch entscheiden können, welche Seiten resident bleiben sollen.
  • Und da die Sticky-Eigenschaft für ein Verzeichnis keinen Sinn ergab, war dies auch so Das Bit der Berechtigungsmaske wurde später interpretiert, um die traditionelle Dateierstellungssemantik für Verzeichnisse zu ändern.
  • @alexis: Ursprünglich wurden Sticky-Bit-Programme im Swap-Bereich aufbewahrt. Dies war viel schneller als das Lesen aus dem Dateisystem, da das Lesen von Swap-Dateibildern zusammenhängende Sektoren waren und daher größtenteils asynchron gelesen werden konnten. Bei den frühen Dateisystemen gab es keine " Lauflängen " und die meisten frühen Dateisystemtreiber lesen jeweils einen Sektor, selbst wenn die Sektoren zufällig aufeinanderfolgend. Das Ergebnis auf einem PDP-40 war, dass klebrige Programme sofort geladen zu werden schienen, während nicht klebrige Programme die üblichen ein oder zwei Sekunden brauchten. Ich denke, wir hatten nur ed klebrig.

Antwort

„Das Sticky-Bit, das auf ausführbare Programme angewendet wird, die das System kennzeichnen, um ein Image des Programms nach Beendigung des Programms im Speicher zu behalten.“

Ich denke, das sind ziemlich veraltete Informationen, heutzutage ignorieren die meisten modernen Unixe dies. Unter Linux ist das Sticky-Bit nur für Verzeichnisse relevant. Siehe hier und der recht informative Wikipedia-Artikel .

Wie auch immer, in diesem alten Verhalten das Bild (nur der „Code“, nicht Die Daten wurden nur im virtuellen Speicher gespeichert – normalerweise ausgetauscht, nicht im realen Speicher, um sie beim nächsten Mal schneller auszuführen.

Antwort

Was sind Sticky-Bits?

Ein Sticky-Bit ist ein Berechtigungsbit, das gesetzt wird in einem Verzeichnis, das nur den Eigentümer der Datei innerhalb von t zulässt Hat das Verzeichnis oder der Root-Benutzer, um die Datei zu löschen oder umzubenennen. Kein anderer Benutzer verfügt über die erforderlichen Berechtigungen zum Löschen der von einem anderen Benutzer erstellten Datei.

Dies ist eine Sicherheitsmaßnahme, um das Löschen kritischer Ordner und ihres Inhalts (Unterverzeichnisse und Dateien) zu vermeiden, obwohl andere Benutzer dies tun vollständige Berechtigungen.

Kommentare

  • Das ' ist nicht richtig: en.wikipedia.org/wiki/Sticky_bit
  • @AB Es scheint mir ziemlich genau zu sein, fast bis zu dem Punkt, an dem der Anfang des von Ihnen zitierten Wikpedia-Artikels umschrieben wird. Was ' ist daran falsch?
  • Ich würde sagen, dass die Antwort unvollständig ist. " Sticky " bedeutet auch, dass die ausführbare Datei im Swap-Bereich aufbewahrt wird, damit sie schneller ausgeführt wird. Dies ist eine alte Geschichte, aber in älteren Dateisystemen haben Treiber jeweils einen Sektor gelesen, selbst wenn die Sektoren zufällig aufeinanderfolgend waren. Dies machte nicht klebrige ausführbare Dateien langsam, Klebrigkeit machte zu dieser Zeit sehr viel Sinn.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.