Script-Programmierung

User und Gruppen IDs

  1. Die User-ID UID
  2. Die Gruppen-ID GID

Eigentlich gibt es auf einem Unix-System nur zwei User, root und den Rest. Die User werden durch ID-Nummern unterschieden, denen Namen zugeordnet werden. Letztendlich erfolgt die ganze User- und Gruppenverwaltung über diese ID-Nummern.

  1. Die User-ID UID

    Wird ein User z.B. mit dem kommando useradd angelegt, dann wird ihm eine eindeutige User-Kennnummer, die User-ID zugeordnet. Diese Zuordnung wird in der zentralen Datei /etc/passwd abgelegt. Der Name der Datei ist historisch bedingt, denn das Passwort ist dort nicht mehr abgelegt sondern wird als verschlüsselte Prüfsumme in /etc/shadow abgelegt. Früher befand sich neben dem Usernamen der User-ID und einigen anderen andrenen Informationen auch die mit Salt (Hostschlüssel) verknüpfte md5-Summe des Passwortes in dieser Datei. Da alle User diese Datei lesen können müssen, wurde die Passwort-Prüfsumme in die nur für root lesbare Datei /etc/shadow (Shadow-Passwort-System) ausgelagert, als der md5-Algorithmus nicht mehr sicher war und geknackt werden konnte.
    In der Datei sind alle Systemuser aufgelistet. Pro User ist eine Zeile reserviert. Der System-Superuser besitzt immer die User-ID 0. Diese darf auch nicht verändert werden, denn die ID 0 ist im Kernel fest codiert. Alle anderen User erhalten ganzzahlige ID-Nummern größer Null. Eine Typische Zeile in der /etc/passwd sieht so aus
    frank:x:1000:1000:Ich:/home/frank:/bin/bash
    Die Zeile besteht aus 7 Feldern, die durch einen Doppelpunkt voneinander getrennt sind. Diese sieben Felder haben folgende Bdeutung:

    1. Name
      Hier befindet sich der Loginname des Users. Er ist nicht geheim und sollte aus einem leicht zu merkenden Kürzel bestehen. Viele Systeme akzeptieren nur Kleinbuchstaben und begrenzen den Namen auf acht Zeichen.
    2. Passwort
      Früher befand sich an dieser Stelle die verschlüselte Prüfsumme des Passwortes. Heute nutzen alle System ein Shadow-Passwortsystem bei dem die Passwortverwaltung ausgelagert wurde. In diesem Fall ist an dieser Stelle ein x eingetragen.
    3. User-ID
      Hier befindet sich die eindeutige User-ID
    4. Gruppen-ID
      Jeder User ist Mitglied mindestens einer Gruppe. Beim anlegen des Users wird hier eine sogenannte Initialgruppe eingetragen. Auf vielen Systemen werden alle neu angelegten User in die Gruppe users einggetragen. Es gibt aber auch eine Reihe von Systemen, die für jeden User eine eigene Gruppe anlegen, die den selben Namen hat wie der Loginname.
    5. Kommantar
      Hier kann ein Kommentar abgelegt werden, der nur rein Informativen Charakter hat.
    6. Home-Verzeichnis
      Hier wird das Home-Verzeichnis des Users eingetragen. Das ist der Arbeitsbereich des Users in dem er landet, wenn er sich auf dem System eingeloggt hat. Auf den meisten Systemen befinden sich die Home-verzeichnisse der User (außer root) im Verzeichnis /home und tragen die Bezeichnung /home/[Loginname].
    7. Shell
      Hier wird der Kommandointerpreter eingetragen. der nach dem Login des Users gestartet werden soll und dessen Kommandos verarbeitet.
    Ein neuer User auf dem System wird erzeugt, indem eine solche Zeile in der passwd angelegt wird, ein password vergeben wird und ggf. das Home-verzeichnis durch root erzeugt wird. Kommandos wie useradd, adduser und passwd unterstützen root dabei und führen eine Reihe von Aktionen automatisch durch.

  2. Die Gruppen-ID GID

    Jeder User gehört mindestens einer Gruppe an. Diese wird als Initialgruppe in der Datei /etc/passwd hinterlegt. Jeder User kann aber Mitglied in weiteren Gruppen werden. Die Gruppen werden durch Einträge in die Datei /etc/group erzeugt. Ähnlich wie in der Datei /etc/passwd findet man in der Datei Zeilen mit durch Doppelpunkten getrennten Einträgen. Ein Ausschnitt der datei sieht z.B. so aus:

    netdev:x:86:
    pop:x:90:pop
    scanner:x:93:frank
    nobody:x:98:nobody
    nogroup:x:99:
    users:x:100:frank,apache,andre
    console:x:101:
    
    Jede Zeile definiert eine Gruppe und besteht aus 4 Feldern, die durch Doppelpunkte : voneinander getrennt sind. Die einzelnen Felder haben folgende Bedeutung:
    1. Name
      Hier ist Name der Gruppe eingetragen. Auch hier ist eine Beschränkung auf maximal 8 Kleinbuchstaben üblich.
    2. Passwort
      Früher befand sich an dieser Stelle die verschlüselte Prüfsumme des Passwortes. Heute nutzen alle System ein Shadow-Passwortsystem bei dem die Passwortverwaltung ausgelagert wurde. In diesem Fall ist an dieser Stelle ein x eingetragen. Die eigentliche Passwortinformation ist in /etc/gshadow hinterlegt. Mit Kenntnis des Gruppenpasswortes kann sich ein User an einer Gruppe anmelden, auch wenn er nicht ihr Mitglied ist.
    3. Gruppen-ID
      Hier befindet sich die eindeutige Gruppen-ID GID. Die Gruppe root besitzt immer die GID 0, alle anderen Gruppen eine ganze Zahl größer Null.
    4. Mitgliederliste
      Hier werden die Mitglieder der Liste eingetragen, die dieser Liste nicht schon durch die Zuordnung der Initialgruppe angehören. Es werden einfach die Loginnamen der User durch Komma getrennt eingetragen.

    Informationen zu ID-Nummern und Gruppenzugehörigkeiten liefert das Kommando id Werden veränderungen an den Gruppeneinstellungen vorgenommen, dann sind diese für den betreffenden User oft erst mit dem nächsten Login gültig.