Warum klebriges Stückchen verwenden?

18

"Das Sticky-Bit gilt nur für Verzeichnisse und wird normalerweise für öffentlich beschreibbare Verzeichnisse verwendet. In einem Verzeichnis, auf das das Sticky-Bit angewendet wird, können Benutzer keine Dateien löschen oder umbenennen, die ihnen nicht persönlich gehören."

Bedeutet das, wenn ich Folgendes ausführe:

// only allow other users to read files in /directory
sudo chmod o-w -R /directory
sudo chmod o-x -R /directory
sudo chmod o+r -R /directory

Benutzer können weiterhin alle Dateien löschen oder umbenennen, die nicht zu ihnen gehören?

JohnMerlino
quelle

Antworten:

22

Das Sticky-Bit ist nützlich für Verzeichnisse, die von der Welt beschreibbar sind, z /tmp. In diesen Verzeichnissen kann jeder eine Datei erstellen, daher muss das Verzeichnis von der Welt beschreibbar sein. Dies würde jedoch bedeuten, dass jeder auch eine Datei löschen könnte, selbst wenn diese nicht zu ihm gehört, da das Löschen einer Datei durch die Schreibberechtigung für das Verzeichnis gesteuert wird. Wenn ein Verzeichnis das Sticky-Bit hat, hat nur der Eigentümer einer Datei die Berechtigung, diese zu löschen.

In einem Verzeichnis mit Berechtigungen rwx------oder rwxr-xr-xkann nur der Eigentümer des Verzeichnisses eine Datei erstellen oder löschen. Wenn es Dateien gibt, die einem anderen Benutzer gehören (von root dorthin verschoben oder erstellt wurden, als das Verzeichnis über mehr offene Berechtigungen verfügte), ist es immer noch der Eigentümer des Verzeichnisses, der zum Löschen berechtigt ist, nicht der Eigentümer der Datei.

In einem Verzeichnis mit Berechtigungen rwxrwx---können alle Mitglieder der Gruppe Dateien erstellen und löschen. Jedes Mitglied der Gruppe kann jede Datei löschen, auch wenn sie einem anderen Benutzer gehört. Wenn die Berechtigungen rwxrwx--Tstattdessen lauten (Großbuchstaben Tsind gleich t, tbedeuten aber , dass das xBit gesetzt und Tdas xBit gelöscht ist), kann jedes Mitglied der Gruppe eine Datei erstellen, und Mitglieder der Gruppe können Dateien löschen, jedoch nur ihre eigenen Dateien .

Mit dem folgenden Befehl können Sie feststellen, welche Verzeichnisse das Sticky-Bit auf Ihrem System haben:

find / /run /run/lock /run/shm -xdev -path /usr -prune -o -perm -o+t -ls 2>/dev/null

Sie werden einige Verzeichnisse /tmpfinden, die für alle zugänglich sind, und einige Verzeichnisse, /var/spool/cron/crontabsdie für ein Systemprogramm reserviert sind, das als eigene Gruppe ( setgid ) ausgeführt wird, wobei das Sticky-Bit sicherstellt, dass das Programm nur Dateien im Auftrag von löschen kann Benutzer, dem sie gehören (was sicherstellt, dass das Programm Dateien nur im Namen des Benutzers erstellen kann, dem sie gehören, ist, dass das Programm als dieser Benutzer ausgeführt wird und nicht als root. Daher können keine Dateien erstellt werden, die anderen Benutzern gehören.)

Gilles 'SO - hör auf böse zu sein'
quelle