1. Home
  2. Linux
  3. Systemadministration
  4. Sticky Bit - Das etwas andere Recht

Sticky Bit - Das etwas andere Recht

Contents

Das t-Recht, auch Sticky Bit oder Save Text Bit genannt, wirkt sich auf Verzeichnisse und Dateien unterschiedlich aus. Verwendung findet das Sticky Bit uA bei Verzeichnissen, um User daran zu hindern, darin fremde Dateien oder Verzeichnisse zu löschen oder umzubenennen, obwohl sie diese ggf lesen, ausführen oder editieren dürfen.

Um Lesen, Schreiben und Ausführen zu dürfen, benötigt man die UNIX Berechtigung rwx, was letztlich auch zur Folge hat, dass ein Benutzer, welcher diese Rechte besitzt, die Datei auch löschen darf. Nicht so, wenn auf dem Parent Directory (dem Verzeichnis in dem sich die Dateien oder Verzeichnisse, welche es zu schützen gilt, befinden) das Sticky Bit gesetzt ist. Man erkennt das daran, dass an der letzten Stelle der UNIX Berechtigungen der Buchstabe t steht; BSP: drwxrwxrwt. Löschen darf in solch einen Verzeichnis ausschließlich nur der Eigentümer der Datei oder des Verzeichnisses und der Super-User root.

Ein Beispiel dafür ist uA das /tmp Verzeichnis:

$ ls -la /tmp
total 32
drwxrwxrwt  16 root    wheel  544 14 Okt 19:16 .
drwxr-xr-x@  6 root    wheel  204 14 Aug  2009 ..

Man erkennt, dass das Verzeichnis dem User root gehört und dass das Sticky Bit mit ansonsten vollem Zugriff für Jeden als Berechtigung vorliegt. Wenn jetzt root eine ausführbare Datei in /tmp anlegt, schaut das folgendermaßen im /tmp Verzeichnis aus:

$ ls -la /tmp
total 32
drwxrwxrwt  16 root    wheel  544 14 Okt 19:16 .
drwxr-xr-x@  6 root    wheel  204 14 Aug  2009 ..
-rwxrwxrwx   1 root    staff   59 14 Okt 19:16 echo.sh

Anhand der Datei Berechtigungen würde man daraus schließen, dass Jeder wirklich alles mit der Datei anstellen kann; auch löschen. Aber dem ist nicht so, wie folgende Befehle verdeutlichen sollen:

Ich selber bin natürlich nicht root, gehöre aber auch zur Gruppe staff, was mir aber nix nutzen wird:

$ whoami
pronto
$ groups pronto
staff admin everyone

Ich darf also die Datei echo.sh lesen:

$ cat echo.sh 
#!/bin/bash

echo Hello, world!

Ich darf sie ausführen:

$ ./echo.sh 
Hello, world!

Ich darf sie sogar beschreiben:

$ echo "echo written by pronto" >> echo.sh
$ cat echo.sh 
#!/bin/bash
echo Hello, world!
echo written by pronto

Somit darf ich Lesen, Schreiben und Ausführen und wäre damit normalerweise auch in der Lage die Datei zu löschen, was in diesem Fall aber scheitert, weil auf das Parent Verzeichnis das Sticky Bit gesetzt ist. Daran ändert auch die Tatsache nichts, dass ich auch noch zu der Gruppe gehöre welcher die Datei gehört:

$ rm echo.sh 
rm: echo.sh: Permission denied

Gesetzt werden kann das Sticky Bit sowohl über die octale Schreibweise durch das Voranstellen einer 1 bei der Angabe der Berechtigungen (zB 1777) wie auch durch die symbolische Schreibweise (zB +t):

$ chmod 1777 sticky_folder1/
$ chmod +t sticky_folder2

Use case

Das Verzeichnis /tmp ist einer der häufigsten Anwendungsfälle für das Sticky-Bit. Während des normalen Betriebs werden häufig Dateien für verschiedene Benutzerkonten in /tmp erstellt. Wenn Benutzer in der Lage wären, die /tmp-Dateien der anderen Benutzer zu löschen, könnte dies die Funktionsweise verschiedener Anwendungen beeinträchtigen.

Updated on 22. Februar 2023

Was this article helpful?

Related Articles