Wenn das suid-Bit keine Auswirkung auf Verzeichnisse hat und das sticky-Bit keine Auswirkung auf Dateien hat, warum werden sie nicht zu einem Bit zusammengefasst?

18

Würde dies ein Bit pro Datei speichern, oder ist eine Auffüllung erforderlich, die auf jeden Fall verwendet werden muss? Und selbst wenn es eine Polsterung gibt, warum kombinieren Sie sie dann nicht und nutzen Sie das zusätzliche Bit für eine neue Funktion?

Harry
quelle
3
Das Sticky-Bit bewirkt etwas bei normalen Dateien. Siehe en.wikipedia.org/wiki/Sticky_bit für die Anzahl der Möglichkeiten , es verwendet wird .
Joshua
@Joshua Das ist interessant, und es ist ein guter Punkt, dass das Verhalten unter Nicht-Linux * -Nixen unterschiedlich ist. Aber ich hatte Linux für diese Frage im Sinn. Ich frage mich allerdings, ob jemand auf einem Linux-Kernel mit BSD amd und ls noch von dem Sticky-File-Bit abhängen könnte. Und ich vermute, dass verschiedene Userland-Programme darauf prüfen / reagieren könnten , obwohl ich keine gemeinsamen Programme kenne, die dies tun.
Harry

Antworten:

26

Aus historischen Gründen. Das Sticky-Bit wurde ursprünglich für einen völlig anderen Zweck verwendet: Wenn es für eine ausführbare Datei festgelegt wurde, wies es das Betriebssystem an, das Textsegment im Swap beizubehalten. Daher der Name "Sticky Bit".

Johan Myréen
quelle
Vielen Dank, aber hindert das sie daran, intern immer noch "ein bisschen" zu sein? Oder ist eine Einsparung von einem Bit auf Dateiebene einfach nicht signifikant genug?
Harry
6
Eine ausführbare Datei kann alle vier Kombinationen von suid und sticky enthalten.
Johan Myréen
Ja, daher die ursprüngliche Frage. Vielleicht besser formuliert, warum hat der Name (oder die frühere Verwendung) des klebrigen Bits etwas damit zu tun, es heute mit dem suid-Bit zu kombinieren? Konnten die Funktionen beider Bits nicht zu einem "sticky / suid" -Bit kombiniert werden, das beim Setzen von Dateien als suid, beim Setzen von Verzeichnissen als sticky fungiert?
Harry
17
Sie würden die Abwärtskompatibilität aufheben, wenn Sie Bits verschieben. chmod 4755 filesetzt das suid-Bit und chmod 1755 dirsetzt das sticky-Bit. Wir wollen keine alten Skripte brechen, nur um ein Bit pro Datei zu speichern, oder? Natürlich kann ein internes Dateisystem Ihre Optimierung frei implementieren, solange die externe Schnittstelle dieselbe bleibt.
Johan Myréen
6
@Johan Myréen: Und natürlich würdest du dieses Bit nicht wirklich speichern, es würde nur ein unbenutztes Bit im Byte / Wort-Berechtigungsfeld werden.
Jamesqf