Benutzer und Gruppen auf der Befehlszeile verwalten
Zentrales Register
In der IT-Steinzeit, als ein Computer noch etliche Quadratmeter in Anspruch nahm, kam es so gut wie nie vor, dass mehrere Personen denselben Rechner gleichzeitig nutzten. Mit zunehmender Leistung der Rechner gewann das Konzept des "Time Sharing" an Bedeutung: Die Anwender gaben die Programme ("Jobs") ein und starten diese. Der Programmierer erhielt die Ergebnisse des Jobs und startete danach den nächsten Auftrag – eine mühselige Angelegenheit.
In den 70er Jahren löste Multitasking das Time-Sharing-Konzept ab: Nun konnten mehrere Programme zur gleichen Zeit aktiv sein. Dies führte zum Konzept des Benutzerkontos: Das System bot die Möglichkeit, dass sich eine großen Anzahl von Anwendern gleichzeitig anmelden durfte, wobei alle Zugriff auf eine individuelle Arbeitsumgebung erhielten.
Linux und andere Unix-basierte Systeme nutzen das Konzept des Benutzerkontos, um Identitäten zu verwalten. Außerdem beschränken sie auf diese Weise den Zugriff auf Ressourcen, die mit dem betreffenden Account oder mit den Gruppen, zu denen er gehört, verknüpft sind.
Zur Charakteristika des Benutzerkontos zählt die Eingabeaufforderung beim Anmelden. Der Systemadministrator hat unter Linux zudem die Möglichkeit, den Zugang zu den Ressourcen per Gruppen-Mitgliedschaft verwalten. Eine Gruppe fasst mehrere Benutzer zusammen, üblicherweise mit einem gemeinsamen Ziel und daher auch mit einem gemeinsamen Bedürfnis nach Zugang zu einer gemeinschaftlich genutzten Ressource.
Eine Gruppe namens Buchhaltung enthält beispielsweise alle Nutzer, die Teil der gleichnamigen Abteilung angehören und daher dieselben Zugriffsrechte auf Tabellen und andere Daten mit Finanzinformationen benötigen. Statt jedem einzelnen Nutzer Zugriffsrechte für jede einzelne Datei zuzuweisen, räumt der Administrator diese Möglichkeit der Gruppe Buchhaltung ein und ordnet dann die jeweiligen Nutzer dieser Gruppe zu.
Diese Vorgehensweise bietet sich auch für Peripheriegeräte (Drucker, Scanner) oder Dienste eines Rechners an. Damit Benutzer beispielsweise auf das optische Laufwerk (CD/DVD) am PC zugreifen können, müssen sie Mitglied der Gruppe cdrom sein (zumindest bei Debian und dessen Abkömmlingen), und der Zugriff auf Userspace-Dateisysteme (Fuse) setzt die Mitgliedschaft in der Gruppe fuse voraus. Viele Distributionen gestatten nur solchen Benutzern den Zugriff auf den Befehl sudo
, die zu den Gruppen admin oder wheel gehören.
UID und GID
Für jedes Benutzerkonto legt das System je eine Zeile in den beiden Dateien /etc/passwd
und /etc/shadow
an. Auf diese Weise weist es jedem Benutzer eine eindeutige Kennung zu, die Benutzer-ID (UID). In ähnlicher Weise legt es für jede Gruppe eine Zeile in der Datei /etc/group
an und weist ihr eine Gruppenkennung zu (GID).
Als UIDs und GIDs sind Ganzzahlen von 0 bis 232-1 zulässig. Als allgemeiner Usus gilt allerdings der Höchstwert 65535
, was 216-1 entspricht. UIDs zwischen 0
und 999
reservieren die Distributoren im Allgemeinen für Systemdienste. Dem Superuser-Konto, root genannt, sollten Sie immer die UID 0
zuweisen. Weiter sollte Mitglied einer Gruppe namens root sein, der Sie den GID-Wert 0
zuordnen. Das erfüllt bestimmte Annahmen seitens des Systems, zum Beispiel in Skripten. Die IDs der normalen Benutzer fangen bei den meisten Linux-Distributionen mit der UID 1000 an.
Passwörter und Kommentare
Jeder Benutzer darf die Datei /etc/passwd
öffnen und lesen. Dass Benutzer Einsicht in eine Datei mit Passwörtern haben – selbst, wenn diese verschlüsselt sind – stellt allerdings ein Sicherheitsrisiko dar. Daher befinden sich die Passwörter auf modernen Systemen in der Datei /etc/shadow
, die nur der Superuser einsehen darf.
Doppelpunkte gliedern jede Zeile in /etc/passwd
in Abschnitte (Abbildung 1), wobei das erste Feld den Benutzernamen enthält, der den Konto-Inhaber gegenüber dem System identifiziert. Das zweite Feld zeigt an, ob ein Benutzer sich am System anmelden darf. Der Eintrag x
erlaubt dies, ein Asterisk (*
) verwehrt die Anmeldung.
Das dritte und vierte Feld enthalten jeweils die UID des Users beziehungsweise die GID der Gruppe, zu der er gehört. Das fünfte Feld heißt GECOS-Feld – die Abkürzung steht für "General Electric Comprehensive Operating System". Früher standen in diesem Feld Sicherheitskennungen, heute speichern die Distributionen an dieser Stelle zusätzliche Informationen über den Benutzer, getrennt durch Kommata. Obwohl das Feld meist nur den Namen des Benutzers enthält, lautet das vollständige Format:
<I>Voller Name, Gebäude/<I>Raumnummer<I>, Telefon dienstlich, weitere Telefonnummer<I>
Das sechste Feld der Datei legt das Home-Verzeichnis des Benutzers fest. Existiert das genannte Verzeichnis nicht, verwendet das System beim Einloggen des Benutzers das Wurzelverzeichnis /
als aktuelles Verzeichnis.
Das letzte Feld der Datei /etc/passwd
bezeichnet die Shell des Benutzers. Meldet sich dieser in einem Terminal an, braucht er einen Kommandozeileninterpreter, der mit ihm interagiert und Befehle entgegen nimmt. Das Feld legt diesen Interpreter fest, unter Linux in der Regel die Bash.
Überprüfen Sie die Datei /etc/passwd
auf Ihrem eigenen Rechner, dann stellen Sie eventuell fest, dass bei mehreren Konten als Shell /sbin/nologin
steht. Das verhindert, dass diese Konten Zugang zu einer Shell erhalten – für den Fall, dass Dritter die Systemprozesse, die sie verwalten, manipuliert haben. Diese Methode eignet sich auch für Konten, die zum Beispiel nur für das Verteilen von Mails gedacht sind.
Wie in der Datei /etc/passwd
trennen auch in /etc/shadow
Doppelpunkte die einzelnen Felder, für jedes Konto existiert eine eigene Zeile (Abbildung 1, unten). Das erste Feld enthält den Benutzernamen des Kontos, das zweite Feld das verschlüsselte Passwort. Die Verschlüsselungsmethode hängt von der Distribution ab. Ursprünglich kam ein Verfahren namens Crypt zum Einsatz, später löste das MD5-Hashing das Crypt-Verfahren ab.
Die Felder drei bis sechs steuern den Zeitraum der Gültigkeit des Passworts. Aus Sicherheitsgründen empfiehlt es sich, das Passwort regelmäßig zu ändern. Dazu legen Sie für jedes Passwort fest, wie viele Tage maximal vergehen dürfen, bis das System ein neues anfordert.
Um zu verhindern, dass Benutzer einfach im Schnellverfahren mehrere Passwörter durchlaufen, bis sie wieder beim ursprünglichen angelangt sind, schreiben viele Sicherheitsrichtlinien zusätzlich eine Mindestdauer für die Gültigkeit eines Passworts vor. Die Felder in /etc/shadow
ermöglichen es, Regeln für das Altern von Passwörtern aufzustellen. Die Bedingungen zum Ändern von Passwörtern gelten nur für Benutzer; der Superuser darf Passwörter ohne Einschränkungen ändern.
Das dritte Feld der Datei /etc/shadow
enthält das Passwort-Alter. Es zeigt die Anzahl der Tage, die seit dem Beginn der Unix-Zeit am 1. Januar 1970 vergangen sind. Verwenden Sie das Date-Kommando, um diese Zahl in ein Datum umzuwandeln (Listing 1).
Listing 1
$ grep msimmons /etc/shadow msimmons:$1$UVHO7Lj9$SguVZlNtWWoCoi7m2uSe/1:14556:0:99999:7::: $ date -d "Jan 1 1970 + 14556 days" Sun Nov 8 00:00:00 EST 2009
Daraus ergibt sich, dass das Passwort für den Benutzer msimmons am 8. November 2009 festgelegt wurde. Der Rest der datumsspezifischen Felder in dieser Datei beziehen sich auf diese Zahl.
Das vierte Feld besagt, wie viele Tage mindestens vergehen müssen, bevor der Benutzer das Passwort ändert darf. Im Beispiel steht dieser Wert auf 0
, das heißt, es gibt keinen Mindestwert: Der Benutzer darf das Passwort jederzeit ändern.
Das fünfte Feld bezeichnet die maximale Anzahl der Tage, die zwischen zwei Änderungen des Passworts vergehen dürfen. Da es keine Möglichkeit gibt, einen unbegrenzten Zeitraum festzulegen, stellen viele Distributionen an dieser Stelle mit 99999
eine Zeitspanne von 274 Jahren ein.
Das sechste Feld legt fest, wie viele Tage vor Ablauf des Passworts das System einen Warnhinweis an den Benutzer einblendet. In Beispiel erhielte der Benutzer sieben Tage, bevor das Passwort abläuft, beim Anmelden einen entsprechenden Hinweis und die Gelegenheit, es zu ändern.
Das siebte Feld legt fest, wie viele Tage nach Ablauf des Passwortes das System das Konto abschaltet. Für ein deaktiviertes Konto zeigt das achte Feld an, seit wann der Account bereits abgeschaltet ist (Anzahl der Tage seit Beginn der Unix-Zeit). Das letzte Feld bleibt für künftige Anwendungen reserviert.