GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Sticky-Bit-Konzept mit Beispielen erklärt

Stellen Sie sich ein Szenario vor, in dem Sie ein Linux-Verzeichnis erstellen, das von allen Benutzern des Linux-Systems zum Erstellen von Dateien verwendet werden kann. Benutzer können in diesem Verzeichnis Dateien nach Belieben erstellen, löschen oder umbenennen. Für alle, die denken, warum sollte ein solches Verzeichnis erstellt werden? Es gibt zum Beispiel ein /tmp-Verzeichnis im Linux-System, das von verschiedenen Linux-Benutzern verwendet werden kann, um temporäre Dateien zu erstellen.

Was nun, wenn ein Benutzer versehentlich oder absichtlich eine Datei löscht (oder umbenennt). von einem anderen Benutzer in diesem Verzeichnis erstellt?

Nun, um diese Art von Problemen zu vermeiden, wird das Konzept des Sticky Bit verwendet.

Ein Sticky-Bit ist ein Berechtigungsbit, das für eine Datei oder ein Verzeichnis gesetzt ist und nur dem Besitzer der Datei/des Verzeichnisses oder dem Root-Benutzer erlaubt, die Datei zu löschen oder umzubenennen. Kein anderer Nutzer erhält die Berechtigung, die von einem anderen Nutzer erstellte Datei zu löschen.

Geschichte von Sticky Bit

Bevor wir das Sticky Bit weiter erklären, lassen Sie uns die Geschichte des Sticky Bit besprechen, da diese Informationen eine Diskussion wert sind.

Das klebrige Bit ist kein neues Konzept. Tatsächlich wurde es erstmals 1974 im Unix-Betriebssystem eingeführt. Der Zweck von Sticky Bit war damals ein anderer. Es wurde eingeführt, um die Zeitverzögerung zu minimieren, die jedes Mal entsteht, wenn ein Programm ausgeführt wird.

Wenn ein Programm ausgeführt wird, dauert es einige Zeit, das Programm in den Speicher zu laden, bevor der Benutzer tatsächlich damit beginnen kann, es zu verwenden. Wenn ein Programm, zB ein Editor, häufig von Benutzern verwendet wird, war die Startzeitverzögerung damals ein Overhead.

Um diese Zeitverzögerung zu verbessern, wurde das Sticky-Bit eingeführt. Das Betriebssystem hat überprüft, ob das Textsegment der ausführbaren Datei im Auslagerungsbereich gehalten wurde, wenn das Sticky-Bit auf einer ausführbaren Datei aktiviert ist. Dies machte es einfach, die ausführbare Datei in den RAM zurückzuladen, wenn das Programm erneut ausgeführt wurde, wodurch die Zeitverzögerung minimiert wurde.

Obwohl sich dieses Verfahren bei der Minimierung der Anlaufzeitverzögerung als erfolgreich erwiesen hat, trat aufgrund dieses Vorgangs ein großes Problem auf. Das Problem bestand darin, dass, wenn eine Art Patch als Fehlerbehebung oder als neues Feature auf die ausführbare Datei angewendet wurde, die folgenden Schritte ausgeführt werden mussten:

  • Entfernen Sie zuerst das Sticky-Bit aus der ausführbaren Datei
  • Führen Sie nun die ausführbare Datei aus und beenden Sie sie, damit das vorhandene Textsegment aus dem Austausch geleert wird
  • Setzen Sie nun erneut das Sticky-Bit auf der ausführbaren Datei und führen Sie die ausführbare Datei erneut aus, sodass ein neues Textsegment im Auslagerungsspeicher gespeichert wird

Die obigen Schritte waren erforderlich, damit das Programm die neuen Funktionen oder Fehlerbehebungen widerspiegelt, die der ausführbaren Datei hinzugefügt wurden.

Das war also eines der Hauptprobleme. Mit der Entwicklung der Technologie entwickelten sich auch schnelle Speicherzugriffstechniken, die die Anforderung von Sticky Bit für diesen Zweck überflüssig machten.

Sticky-Bit-Beispiele

In diesem Abschnitt werden wir anhand einiger Beispiele besprechen, wie Sticky-Bits gesetzt und gelöscht werden.

Ein einfaches Beispiel

Erstellen Sie ein Verzeichnis und gewähren Sie allen Benutzern Lese-, Schreib- und Ausführungszugriff darauf:

# mkdir allAccess

# chmod 777 allAccess/

# ls -ld allAccess/
drwxrwxrwx 2 himanshu himanshu 4096 Oct 24 15:43 allAccess/

Wir sehen also, dass ein Verzeichnis mit dem Namen „allAccess“ erstellt wird und allen Benutzern über den Befehl „chmod“ Lese-, Schreib- und Ausführungszugriff auf dieses Verzeichnis gewährt wird.

Erstellen Sie nun mehrere Dateien in diesem Verzeichnis (mit unterschiedlichen Benutzern), sodass alle Benutzer Lese-, Schreib- und Ausführungszugriff darauf haben.

Zum Beispiel:

# ls -l allAccess/
total 0
-rwxrwxrwx 1 himanshu himanshu 0 Oct 24 15:48 user1
-rwxrwxrwx 1 guest    guest    0 Oct 24 16:11 user_file_0
-rwxrwxrwx 1 guest-2  guest-2  0 Oct 24 16:15 user_file_1

Die Dateien user_file_0 und user_file_1 werden von unterschiedlichen Benutzern erstellt, haben aber Lese-, Schreib- und Ausführungszugriff für alle Benutzer. Das bedeutet, dass der Benutzer „Gast“ die von Benutzer „Gast-2“ erstellte Datei löschen oder umbenennen kann.

Um dies zu vermeiden, kann Sticky Bit auf das Verzeichnis allAccess.

gesetzt werden

Schalten Sie nun das Sticky-Bit im Verzeichnis ein, indem Sie das +t-Flag des chmod-Befehls verwenden.

# chmod +t allAccess/

# ls -ld allAccess/
drwxrwxrwt 2 himanshu himanshu 4096 Oct 24 16:19 allAccess/

Wie zu sehen ist, wird ein Berechtigungsbit „t“ in die Berechtigungsbits des Verzeichnisses eingefügt.

Wenn nun der Benutzer „guest“ versucht, die Datei „user_file_1“ umzubenennen, passiert Folgendes:

$ mv /home/himanshu/allAccess/user_file_1 /home/himanshu/allAccess/user_file_0
mv: cannot move `/home/himanshu/allAccess/user_file_1' to `/home/himanshu/allAccess/user_file_0': Operation not permitted

Wir sehen also, dass die Operation nicht erlaubt war.

Sticky Bit mit Option -t entfernen

Das Sticky Bit kann mit der Option -t des Befehls chmod aus Verzeichnisberechtigungen entfernt werden.

Hier ist ein Beispiel:

# chmod -t allAccess/

# ls -ld allAccess/
drwxrwxrwx 2 himanshu himanshu 4096 Oct 24 16:19 allAccess/

Wir sehen also, dass das Berechtigungsbit „t“ aus dem Verzeichnis entfernt wurde.

Unterschiedliche Betriebssysteme verhalten sich bei Sticky Bits unterschiedlich, wie in diesem Wikipedia-Artikel erläutert. Beispielsweise sucht Linux nur nach Sticky Bit, wenn ein Benutzer versucht, eine Datei umzubenennen. Das Sticky-Bit wird nicht überprüft, wenn eine Datei gelöscht wird.


Linux
  1. Befehl zum Herunterfahren von Linux mit Beispielen erklärt

  2. nslookup Linux-Befehl mit Beispielen erklärt

  3. Linux Traceroute-Befehl, erklärt mit Beispielen

  4. whoami-Befehl in Linux mit Beispielen erklärt

  5. Linux-Ping-Befehl mit Beispielen erklärt

Bash Echo-Befehl mit Beispielen in Linux erklärt

Tr-Befehl in Linux mit Beispielen erklärt

w Befehl mit Beispielen in Linux erklärt

Wait-Befehl in Linux mit praktischen Beispielen erklärt

Linux tee-Befehl erklärt (mit Beispielen)

Linux csplit Befehl erklärt (mit Beispielen)