Ich bin auf eine interessante Sache gestoßen: Auf BSD-Systemen wird die Gruppe einer neuen Datei auf die Gruppe des Verzeichnisses gesetzt. Auf System V-Systemen wird die primäre Gruppe des Benutzers verwendet, der die Datei erstellt hat. Was ist der Zweck eines solchen Verhaltens bei BSD-Systemen und bedeutet es, dassSGIDist das bisschen da nutzlos?
Antwort1
Dies kann eine betriebssystemabhängige Funktion sein oder auch nicht. Sie haben nicht genügend Details angegeben, um dies zu bestätigen.
Das SGID-Bit einer ausführbaren Datei bewirkt, dass sie in der Gruppe der Datei ausgeführt wird, auch wenn der Benutzer, der sie ausführt, nicht zu dieser Gruppe gehört. (Gruppen-ID festlegen) Wenn die Datei nicht ausführbar ist, ist das SGID-Bit größtenteils irrelevant.
In einem Verzeichnis wurde das SGID-Bit umfunktioniert, um die Gruppenvererbung innerhalb des Verzeichnisses zu steuern. Wenn das SGID-Bit in einem Verzeichnis gesetzt ist, erben die im Verzeichnis erstellten Dateien die Gruppenrechte (aber nicht die Gruppenberechtigungen). Der Sinn dahinter ist, dass, wenn Sie ein freigegebenes Verzeichnis haben, das von Benutzern in einer Gruppe verwendet wird, diese alle ihre Umask auf 002 statt 022 setzen und alle die Dateien im Verzeichnis bearbeiten können, ohne ständig die Gruppenberechtigungen korrigieren zu müssen. (Ohne die Umask-Änderung ist dies weniger nützlich.)
Möglicherweise war also auf einem der beiden Systeme, die Sie sich angesehen haben, das SGID-Bit für das Verzeichnis gesetzt, in dem Sie getestet haben, und auf dem anderen nicht. Diese Funktion gibt es noch nicht seit Ewigkeiten. Wenn also eines der Systeme alt genug ist, unterstützt es möglicherweise keine SGID-Verzeichnisvererbung. (Aber es gibt sie schon seit Ewigkeiten.)fastfür immer, also ist das unwahrscheinlich.)
Dies macht sgid in keiner Weise nutzlos. Ich bin mir nicht sicher, warum Sie das denken, Sie haben nicht erklärt, was Ihrer Meinung nach nutzlos ist. Beachten Sie, dass Sie, wenn eine Datei einen Gruppenbesitzer für eine Gruppe hat, der Sie nicht angehören, die Datei nicht zu sgid machen können, ohne zuerst den Gruppenbesitzer zu ändern, und wenn ein Nicht-Root-Benutzer die Datei kopiert, wird sgid gelöscht.