Was bedeutet GID?

14

Was bedeutet eigentlich GID?

Ich habe es gegoogelt und dies ist, was linux.about.com sagte:

Gruppenidentifikationsnummer für den Prozess. Gültige Gruppennummern werden in /etc/groupund im Feld GID der /etc/passwdDatei angegeben. Wenn ein Prozess gestartet wird, wird seine GID auf die GID seines übergeordneten Prozesses gesetzt.

  • Aber was heißt das?

Die Berechtigungen, die ich für meinen Ordner habe, liegen derzeit bei 0755

Ich verstehe, wenn ich die UID für den Inhaber einstelle, ist es 4755

Und wenn ich die GID der Gruppe einstelle, wird es sein 2755

Wenn ich das Sticky Bit für andere einstelle, wird es sein 1755

  • Ist es überhaupt wichtig, diese Berechtigungen festzulegen?
Kevdog777
quelle

Antworten:

27

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, manusw.) 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 passwdbenö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 passwdBefehls, der zu rootSETUID 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 SETUIDBefehle auf UNIX-artigen Systemen ( chsh, screen, ping, suusw.), von denen alle Zugriffsrechte unter erfordern korrekt zu bedienen. Es gibt auch einige SETGIDProgramme, bei denen der Kernel vorübergehend die GID des Prozesses ändert, um den Zugriff auf Protokolldateien usw. zu ermöglichen. Ein sendmailsolches Dienstprogramm ist z.

Das sticky bitdient 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 /tmpVerzeichnis. 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, sshusw., zu halten Zustandsinformationen in /tmp). Um die temporären Dateien eines Benutzers zu schützen, /tmpmuss 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.

D_Bye
quelle
2
Ah, super, danke dafür. Das Sticky Bit ist also wie eine persönliche (Benutzer-) Erlaubnis? Diese Antwort war gut formuliert und verständlich.
Kevdog777
1
Vielen Dank! Das Sticky-Bit bietet einen kleinen Schutz für Dateien in einem Verzeichnis mit liberalen Berechtigungen. Dies ist für einen bestimmten Benutzer nicht wirklich spezifisch, da für alle Dateien derselbe Schutz gewährt wird, unabhängig davon, wer der Eigentümer ist. Auf diese Weise kann jeder Benutzer Dateien erstellen und sicherstellen, dass nur der Eigentümer sie zerstören kann.
D_Bye
+1, D_bye, könnten Sie bitte ein Beispiel für das im Verzeichnis gesetzte setgid-Bit teilen? Vielen Dank
Ankit
1
@Ankit Unter Solaris (und mit ziemlicher Sicherheit auch unter anderen Betriebssystemen - ich verwende jedoch nur * BSD und Solaris) haben alle neuen Dateien, die unter diesem Verzeichnis erstellt wurden, denselben Gruppeneigentümer wie das Verzeichnis selbst erbt nicht die primäre Gruppe (des Benutzers, der den Erstellungsprozess ausführt).
D_Bye
3

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):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

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.

Bristol
quelle
Das ist gut, danke dafür. Ich verstehe den Berechtigungsteil, (der Teil abbbcccddd) - aber thatnk Sie :)
Kevdog777
Ich habe gerade gesehen, wie meine Berechtigungen für den Ordner tmp sind drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. Was bedeutet der abbbcccddtBuchstabe "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?
Kevdog777
Kleines t ist "ausführbar (x) und Sticky-Bit gesetzt". Siehe oben für eine Erklärung, warum dies bei / tmp üblich ist.
Bristol
3

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.

ein CVn
quelle