Jeder Prozess in einem UNIX-ähnlichem System, genau wie jede Datei, hat einen Besitzer (den Benutzer, entweder real oder ein System „Pseudo-Benutzer“, wie daemon
, bin
, man
usw.) und eine Gruppe Eigentümer. Der Gruppeneigentümer für die Dateien eines Benutzers ist in der Regel die primäre Gruppe dieses Benutzers. In ähnlicher Weise gehören alle Prozesse, die Sie starten, in der Regel Ihrer Benutzer-ID und Ihrer primären Gruppen-ID.
Manchmal ist es jedoch erforderlich, über erhöhte Berechtigungen zu verfügen, um bestimmte Befehle auszuführen. Es ist jedoch nicht wünschenswert, vollständige Administratorrechte zu erteilen. Beispielsweise passwd
benötigt der Befehl Zugriff auf die Shadow-Kennwortdatei des Systems, damit Ihr Kennwort aktualisiert werden kann. Natürlich möchten Sie nicht jedem Benutzer Root-Rechte gewähren, nur damit er sein Passwort zurücksetzen kann - das würde zweifellos zu Chaos führen! Stattdessen muss es eine andere Möglichkeit geben, Benutzern vorübergehend erweiterte Berechtigungen zum Ausführen bestimmter Aufgaben zu gewähren. Dafür sind die Bits SETUID und SETGID vorgesehen. Auf diese Weise kann der Kernel angewiesen werden, die Berechtigungen des Benutzers für die Dauer der Ausführung des markierten Befehls vorübergehend zu erhöhen. Eine SETUID - Binärdatei wird mit den Rechten des Eigentümers der ausführbaren Datei ausgeführt (normalerweiseroot
), und eine SETGID-Binärdatei wird mit den Gruppenrechten des Gruppeneigentümers der ausführbaren Datei ausgeführt. Im Fall des passwd
Befehls, der zu root
SETUID gehört und SETUID ist, können normale Benutzer den Inhalt der Kennwortdatei auf kontrollierte und vorhersehbare Weise direkt beeinflussen, indem sie ihn mit Root-Rechten ausführen. Es gibt zahlreiche andere SETUID
Befehle auf UNIX-artigen Systemen ( chsh
, screen
, ping
, su
usw.), von denen alle Zugriffsrechte unter erfordern korrekt zu bedienen. Es gibt auch einige SETGID
Programme, bei denen der Kernel vorübergehend die GID des Prozesses ändert, um den Zugriff auf Protokolldateien usw. zu ermöglichen. Ein sendmail
solches Dienstprogramm ist z.
Das sticky bit
dient einem etwas anderen Zweck. Am häufigsten wird dafür gesorgt, dass nur das Benutzerkonto, mit dem eine Datei erstellt wurde, diese löschen kann. Denken Sie an das /tmp
Verzeichnis. Es verfügt über sehr großzügige Berechtigungen, mit denen jeder dort Dateien erstellen kann. Das ist gut, und ermöglicht es Benutzern , die Prozesse temporäre Dateien zu erstellen ( screen
, ssh
usw., zu halten Zustandsinformationen in /tmp
). Um die temporären Dateien eines Benutzers zu schützen, /tmp
muss das Sticky-Bit so eingestellt sein, dass nur ich meine und nur Sie Ihre Dateien löschen können. Natürlich kann root alles, aber wir müssen hoffen, dass der Sysadmin nicht gestört wird!
Für normale Dateien (dh für nicht ausführbare Dateien) ist das Setzen der SETUID / SETGID-Bits wenig sinnvoll. SETGID für Verzeichnisse auf einigen Systemen steuert den Standardgruppeneigentümer für neue Dateien, die in diesem Verzeichnis erstellt wurden.
Ich denke, Sie meinen das "SGID" -Bit einer Datei, das nicht mit der GID identisch ist.
Hier ist eine typische Datei auf meinem Computer (Ausgabe von ls -l):
Wenn Sie sich die ersten 10 Symbole ansehen,
(a) -: Dies ist nur eine einfache alte Datei (im Gegensatz zu einem Verzeichnis, einem Symlink, einer Pipe usw. ...)
(b) rw-: Der Eigentümer kann diese Datei lesen und schreiben, aber nicht ausführen. Der Besitzer ist "Bristol", wie Sie später in der Zeile sehen können.
(c) r--: Mitglieder der Gruppe, zu der diese Datei gehört (im Beispiel "Benutzer"), die nicht der Eigentümer ist, können diese Datei lesen, aber nicht schreiben oder ausführen.
(d) ---: Jeder andere kann überhaupt nicht auf diese Datei zugreifen (außer root natürlich).
Das GID-Feld gibt an, zu welcher Gruppe diese Datei gehört - in diesem Fall "Benutzer".
Das Feld, das Sie aufgrund Ihrer Beschreibung wahrscheinlich gemeint haben, ist das SGID-Bit. Hier ist eine bessere Erklärung, als ich mir vorstellen könnte:
http://www.codecoffee.com/tipsforlinux/articles/028.html
Die Kurzversion lautet: Wenn für eine ausführbare Datei das SGID-Bit gesetzt ist, erhält jeder, der nicht zur Gruppe gehört, diese Datei jedoch vorübergehend ausführen kann, die Rechte dieser Gruppe, während das Programm ausgeführt wird.
Wenn Sie zum Beispiel eine Gruppe "Spool" haben, die Dateien im Druckspoolerverzeichnis lesen und schreiben kann, möchten Sie nicht, dass sich irgendjemand mit diesem Verzeichnis herumtreibt, sondern dass sie Dateien drucken können Einige Druckprogramme oder Skripte haben die Gruppe "spool" und setzen das SGID-Bit. Wenn jemand dieses Programm startet, kann das Programm jetzt in das Spooler-Verzeichnis schreiben, ohne dass die ausführende Person vollen Zugriff erhält.
quelle
drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp
. Was bedeutet derabbbcccddt
Buchstabe "t"? - Ich verstehe, dass "d = Verzeichnis", "rwx = Lesen, Schreiben, Ausführen"; aber ich habe das 't' am ende noch nie gesehen. Ist das eine spezielle Berechtigung für den tmp-Ordner?Die GID ist, wie Sie festgestellt haben, die ID-Nummer einer Gruppe. Es ist einfach eine bequeme Möglichkeit für das Betriebssystem, die (Benutzer-) Gruppe auszudrücken, die mit etwas (einem Prozess, einer Datei usw.) verknüpft ist. Anstelle einer möglicherweise langen Zeichenfolge kann sie als Zahl mit fester Größe angegeben werden.
In einem Dateiberechtigungswert von vier oktalen Ziffern (z. B. 0755) gibt die dritte Ziffer die Berechtigungen der Gruppe für die Datei an. Wenn Sie die erste Ziffer weglassen, gibt die zweite Ziffer die Berechtigungen der Gruppe an. Beachten Sie, dass Dateien und Verzeichnisse in dieser Hinsicht gleich behandelt werden, die genaue Bedeutung der einzelnen Berechtigungsbits bei Verzeichnissen jedoch nicht intuitiv ist.
Die beiden Konzepte sind verwandt, dienen aber sehr unterschiedlichen Zwecken.
Was Ihre Frage betrifft "ist es überhaupt wichtig, diese Berechtigungen festzulegen?"; Sie sind immer auf etwas gesetzt , aber da die Anfangsziffer in den meisten Fällen 0 ist ("nichts Besonderes"), wird sie der Kürze halber weggelassen. Ob Sie einen anderen Wert angeben müssen, hängt ganz vom Verwendungsmuster für die betreffende Datei oder das betreffende Verzeichnis ab.
quelle