Lernen Sie Dateien und Befehle kennen, mit deren Hilfe Sie Benutzer- und Gruppen-Konten hinzufügen, verändern und entfernen.
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.

/etc/passwd, unten eines für einen Eintrag in der Datei /etc/shadow.” width=”300″ height=”229″ />
/etc/passwd, unten eines für einen Eintrag in der Datei /etc/shadow.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.
Gruppenarbeit
Der Aufbau der Datei /etc/group ähnelt jenem der Dateien /etc/passwd und /etc/shadow, doch enthält sie weniger Felder. Das erste davon gibt den Namen der Gruppe an, gefolgt von einem Token, ähnlich wie in der Passwd-Datei. Das dritte Feld zeigt die GID, und das letzte Feld enthält eine durch Kommas getrennte Liste von Konten in dieser Gruppe. Enthält die Datei /etc/passwd für einen Benutzer eine GID, heißt dies nicht zwingend, dass eine Mitgliedschaft in der entsprechenden Gruppe in /etc/group vorliegt.
Es gibt eine Reihe von Tools, um die Benutzerkonten im System näher zu untersuchen. Das einfachste Werkzeug diese Art ist das Tool finger, das Sie einfach mit einem Benutzernamen als Argument aufrufen. Es liefert dann eine ganze Reihe von Informationen in einem Überblick zurück (Listing 2).
Listing 2
# finger msimmons Login: msimmons Name: Matt Simmons Directory: /home/msimmons Shell: /bin/bash Last login Sun Nov 8 14:51 (EST) on pts/2 from centos No mail. No Plan.
Die Informationen über den Benutzer stellt das System mithilfe der bereits besprochenen Dateien zusammenstellt. Darüber hinaus zieht es noch einige Logs sowie Dateien im Benutzerverzeichnis der Person heran. In der Vergangenheit war es üblich über finger nicht nur Informationen über einen lokalen Benutzer abzurufen, sondern auch eine Verbindung zu einem Finger-Server auf TCP-Port 79 auf einem entfernten Rechner herzustellen. Durch gestrafftere Sicherheitsrichtlinien ist letzteres mit der Zeit aus der Mode gekommen, weswegen heute wahrscheinlich keine Standardinstallation mehr einen Finger-Server enthält.
Um festzustellen, welche Benutzer aktuell am System angemeldet sind, verwenden Sie entweder den Befehl who oder nutzen stattdessen w, wenn Sie Wert auf einen ausführlichen Bericht legen (Listing 3). Beide zeigen den Benutzernamen sowie das Gerät, auf dem sich der Benutzer angemeldet hat, aber bei w sehen zusätzlich noch die benutzten Programme sowie einige Statistiken.
Listing 3
$ who msimmons tty1 2009-11-08 14:58 root :0 2009-11-08 12:46 root pts/0 2009-11-08 12:48 (:0.0) msimmons pts/2 2009-11-08 14:58 (centos) $ w 15:00:51 up 8:58, 4 users, load average: 0.07, 0.10, 0.10 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT msimmons tty1 - 14:58 2:19 0.22s 0.22s -bash root :0 - 12:46 ?xdm? 4:11 0.92s /usr/bin/gnome-session root pts/0 :0.0 12:48 0.00s 0.76s 0.29s ssh msimmons@localhost msimmons pts/2 centos 14:58 0.00s 0.20s 0.02s w
Konten anlegen
Auf der Kommandozeile erstellen Sie neue Nutzer und Gruppen meist mit useradd und groupadd. Diese Werkzeuge, als die Sie nur als Superuser Zugriff erhalten, finden Sie standardmäßig im Verzeichnis /usr/sbin. Auf Debian-Systemen gibt es auch das Perl-Skript adduser, das als benutzerfreundliches Frontend für Useradd, Groupadd und Usermod gedacht ist. Da Useradd bei allen Linux-Distributionen funktioniert, beziehen sich die folgenden Beispiele auf dieses Tool.
Trotz zahlreicher möglicher Optionen erweist sich der Umgang mit Useradd als nicht sonderlich kompliziert. Beim ersten Aufruf ist der nützlichste Parameter wahrscheinlich -D (Listing 4): Er zeigt die momentan geltenden Standardwerte für verschiedene Einstellungen an, festgelegt in der Datei /etc/default/useradd. Diese Werte können sich von Distribution zu Distribution unterscheiden.
Listing 4
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
Um ein neues Benutzerkonto per Kommandozeile zu erstellen, geben Sie useradd Benutzername ein, woraufhin das Programm die entsprechenden Zeilen in die Dateien /etc/passwd und /etc/shadow einträgt. Das Benutzerkonto ist in diesem Stadium allerdings noch nicht ganz einsatzfähig, da Sie bislang weder ein Passwort zugewiesen noch ein Benutzerverzeichnis erstellt haben. Um das Benutzerkonto startklar zu machen, gibt es mehrere Argumente, mit deren Hilfe Sie es entsprechend gestalten:
# /usr/sbin/useradd msimmons -c "Matt Simmons" -d /home/msimmons -m -s /bin/bash
Zusätzlichen zu den Einträgen in /etc/passwd und /etc/shadow trägt diese Befehlszeile den Wert Matt Simmons in das GECOS-Feld ein (-c), legt das Benutzerverzeichnis fest (-d) und erstellt es auch gleich (-m) und weist als Anmelde-Shell (-s) die Bash zu. Damit steht ein funktionierendes Benutzerkonto bereit.
Ein weiterer Parameter für Useradd, der im Beispiel nicht zum Einsatz kam, lautet --password. Als Argument dient hier ein verschlüsselter Password-Hash. Diese Option sollte man tunlichst meiden, da dadurch kurzzeitig das verschlüsselte Passwort für alle Benutzer im System zu sehen ist.
Erledigen Sie das Erstellen von Benutzerkonten per Skript und erhalten alle neuen Benutzer standardmäßig das gleiche Passwort, spart dies eventuell Zeit. Alternativ bietet es sich an, einen Blick auf den Befehl /usr/sbin/newusers zu werfen, der das Importieren von Benutzerkonten im Batch-Verfahren erlaubt. Der Nachteil von Newusers liegt darin, dass es die Passwörter, die Sie eingeben, im Klartext speichert – eine gravierende Sicherheitslücke, sollten Angreifer den Weg in das System finden.
Es kommt immer wieder vor, dass Sie Benutzerkonten erstellen wollen, die kein Benutzerverzeichnis und keine Login-Daten benötigen – zum Beispiel, wenn ein Account nur die Funktion hat, Mails zu empfangen oder zu verschicken. Dann können Sie folgenden Befehl nutzen:
# /user/sbin/useradd mailuser -c "Mail User" -M -s /bin/false
Die Option -M weist useradd an, in diesem Fall kein Benutzerverzeichnis zu erstellen mit auf ein Login zu verzichten (-s /bin/false, alternativ: -s /bin/nologin).
Standardmäßig erstellt Useradd eine Gruppe mit demselben Namen wie der Benutzernamen (daher existiert in obigem Beispiel parallel zum Benutzer msimmons eine Gruppe namens msimmons). Bei umfangreichen Mehrplatzsystemen ist das unter Umständen nicht erwünscht. In diesem Fall weisen Sie das Programm über die Option -n (Abkürzung für --no-user-group) an, keine neue Benutzergruppe zu erstellen. Stattdessen geben Sie entweder über die Option -g die Gruppe an oder tun gar nichts – worauf Useradd versucht, einen Gruppeneintrag in /etc/default/useradd zu finden. Existiert dieser nicht, kommt die Gruppe users mit der GID 100 zum Zuge.
Zu guter Letzt kommt es manchmal vor, dass Sie die Benutzer-ID (UID) selbst festlegen wollen, anstatt das System standardmäßig die nächste verfügbare UID zuweisen zu lassen. Dies ist hauptsächlich dann sinnvoll, wenn Sie sichergehen möchten, dass ein Benutzer auf verschiedenen Systemen über dieselbe UID verfügt. Die Option lautet -u NNNN, wobei NNNN die UID bezeichnet, die Sie dem Benutzer zuweisen wollen:
# /user/sbin/useradd newuser -c "New User" -d /home/newuser -m -s /bin/bash -g testuser -u 2001
Es fällt auf Dauer lästig, bei jedem Nutzer alle diese Optionen anzugeben. Um den Aufwand zu reduzieren, bietet es sich an, die Vorgaben zu ändern. Dazu modifizieren Sie entweder /etc/default/useradd oder nutzen die Standard-Option -D nutzen. Wie beschrieben gibt useradd -D ohne weitere Parameter die Standardeinstellungen aus. Benutzen Sie aber den Befehl mit weiteren Optionen, ändern Sie die Standardwerte. Der folgende Befehl setzt Ablaufdatum, Standard-Shell und Gruppe neu:
# /user/sbin/useradd newuser -D -e 2012-12-31 -s /bin/false -g testuser
Die Option -e legt das Ablaufdatum für Benutzerkonten im Format Jahr-Monat-Tag fest. Die Option -s stellt die Standard-Shell ein, -g setzt die Standard-Gruppe.
Werfen Sie einen kurzen Blick auf die Dokumentation für den Befehl useradd auf Ihrem Rechner. In den meisten Fällen passen die Standardwerte. Bringen die Vorgaben nicht den gewünschten Erfolg, greifen Sie wie beschrieben auf useradd zurück, um diese ihren Bedürfnissen entsprechend anzupassen.
Wenn Sie den Parameter --password nicht verwenden, schaltet das System das Benutzerkonto ab. In diesem Fall bearbeiten Sie das Passwort des Kontos mithilfe des Befehls passwd. Mit der Eingabe /usr/bin/passwd Username erstellen Sie ein Passwort für einen neuen Benutzer. Listing 5 zeigt, wie das Ergebnis dieses Befehls normalerweise aussieht.
Listing 5
# passwd msimmons Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Beachten Sie, dass viele Distributionen bestimmte Anforderungen bezüglich der Sicherheit von Passwörtern stellen, um die Sie nicht herum kommen – außer als Root, wo Sie dann allerdings immer noch einen Warnhinweis erhalten.
Der Befehl Passwd erlaubt es daneben, den Status für ein oder mehrere Benutzerkonten abzufragen. Möchten Sie beispielsweise nachsehen, ob das Konto msimmons gerade im Einsatz ist, erledigen Sie das mit dem folgenden Befehl:
# passwd -S msimmons msimmons P 11/20/2009 0 99999 7 -1
Als Resultat sehen Sie den Login-Namen, der Status des Passwortes, das Datum der letzten Änderung (falls zutreffend), den minimal und maximal erlaubten Zeitraum zwischen Änderungen, der Zeitraum für den Warnhinweis und wie lange das Konto schon deaktiviert ist.
Der Buchstabe P weist darauf hin, dass das Konto über ein gültiges Passwort verfügt. Stünde hier ein L, wäre das Konto gesperrt; NP wiese auf das Fehlen eines Passworts hin. Geben Sie passwd -S -a ein, gibt das Programm dieselben Informationen aus, allerdings für alle Benutzerkonten.
Möchten Sie ein Konto sperren, erledigen Sie dies mit dem Befehl passwd -l Benutzername. Das macht das Passwort ungültig, indem es einen zufälligen Wert erhält, der mit keinem verschlüsselten Wert übereinstimmt. Auf diese Weise legen Sie das Konto allerdings nicht komplett still: Verfügt der Benutzer beispielsweise über einen gültigen SSH-Schlüssel, vermag er sich dennoch einzuloggen.
Um ein Konto sicher zu deaktivieren und jede Anmeldung zu unterbinden, verwenden Sie passwd --expiredate 1, was das Ablaufdatum in die Vergangenheit setzt. Einige Versionen von Passwd erledigen das automatisch, sobald Sie die Option -l verwenden. Um ein Konto zu entsperren, geben Sie passwd -u ein: Das stellt das frühere Passwort wieder her.
Bearbeiten
Dem Administrator stehen noch mehr Tools bereit, um Konten und Gruppen zu analysieren und zu bearbeiten. Das wichtigste Werkzeug zum Bearbeiten bereits bestehender Benutzerkonten ist /usr/sbin/usermod. Es lässt dieselben Kommandozeilenoptionen zu wie /usr/sbin/useradd, inklusive des Benutzernamens (--login NeuerBenutzername) und UID (--uid NeueUID).
Oft kommt es vor, dass ein Systemadministrator nur dann mit Benutzerkonten zu tun hat, wenn es darum geht, diese anzulegen, zu löschen oder Benutzern zu helfen, ihr Passwort wiederherzustellen. Manchmal jedoch tritt der Fall ein, dass Sie Usermod brauchen, um Änderungen am Konto vorzunehmen, wie zum Beispiel das Ablaufdatum. Um dieses zu ändern, verwenden Sie die Option -e JJJJ-MM-TT (J=Jahr, M=Monat, T=Tag).
Unter Umständen müssen Sie die Benutzerverzeichnisse irgendwann einmal verschieben. Dazu verwenden Sie dieselbe Option (-d), die Sie bei Useradd benutzt haben, um das Verzeichnis festzulegen. Fügen Sie die Option -m hinzu, verschieben Sie zusätzlich den Inhalt des bestehenden Verzeichnisses ins neue:
# usermod -d /home/newhome -m
Arbeiten Sie mit Red Hat oder Fedora (oder einem anderen System das SELinux einsetzt), geben Sie mithilfe der Option -Z den SELinux-Benutzer an.
Ein weiterer typischer Fall besteht darin, dass Sie Benutzer zu neuen Gruppen hinzufügen müssen. Dazu dienen die Optionen -a (für “append”) und -G (für “groups”). Dabei müssen Sie die Gruppen durch Kommas getrennt angeben (wobei kein Leerzeichen dazwischen stehen darf). Um einen Benutzer zu den Gruppen cdrom und admin hinzufügen, tippen Sie also:
# usermod -a -G cdrom,admin
Das Entfernen des Benutzers aus einer Gruppe geht nicht ganz so intuitiv von der Hand, es gibt keinen eigenen Befehl dafür. Stattdessen müssen Sie den Befehl Usermod verwenden, und zwar mit denjenigen Gruppen als Argument, in denen der Benutzer Mitglied bleiben soll, also zum Beispiel cdrom und user. Damit entfernen Sie ihn automatisch aus allen anderen Gruppen:
# usermod -G cdrom,user
Mit dem Befehl /usr/sbin/groupmod bearbeiten Sie darüber hinaus Einstellungen für einzelne Gruppen. Genau wie Usermod unterstützt auch Groupmod sämtliche Optionen, die der vorher erwähnte Befehl Groupadd anbietet.
Mit Usermod bearbeiten Sie bei Bedarf das GECOS/Kommentar-Feld. Allerdings bleibt dabei das Format demjenigen überlassen, der den Befehl eingibt. Das Kommando /usr/bin/chfn macht es wesentlich einfacher, Zugang zum standardisierten Format zu erhalten: Geben Sie den Befehl ohne weitere Optionen ein, fragt das System sogar nach, ob Sie alle Felder ausfüllen möchten.
Mit Passwd ändern Sie einige, aber nicht alle Einstellungen für das Altern des Passwortes. Das Tool /usr/bin/chage hingegen gewährt Ihnen volle Kontrolle über alle Optionen. Bei Chage können Sie sowohl ein explizites Datum eingeben als auch die Anzahl der Tage seit Beginn der Unix-Zeit. Listing 6 zeigt in allen Einzelheiten das Ändern des Ablaufdatums, bei dem ein herkömmlich formatiertes Datum zum Einsatz kommt.
Listing 6
# cat /etc/shadow | grep msimmons msimmons:$1$MfBYOD/O$yv2.31xLwrsN9oXtlBxpa0:14563:0:99999:7::: # chage -E "2009-11-16" msimmons # cat /etc/shadow | grep msimmons msimmons:$1$MfBYOD/O$yv2.31xLwrsN9oXtlBxpa0:14563:0:99999:7::14564: # date -d "Jan 1, 1970 + 14564 days" Mon Nov 16 00:00:00 EST 2009
Verteilungskampf
Listing 4 enthielt bereits einen Verweis auf die Variable SKEL, die im Beispiel auf das Verzeichnis /etc/skel zeigt. Dahinter verbirgt sich das Skeleton-Verzeichnis, das alle Standarddateien für ein neues Benutzerverzeichnis enthält. Jedes Mal, wenn Sie ein neues Konto erstellen, dient dieses Verzeichnis als Vorlage: Sämtliche Dateien und Verzeichnisstrukturen, die sich darin befinden, landen im neuen Benutzerverzeichnis, das Sie beim Befehl Useradd angeben. Diese Methode eignet sich ausgezeichnet dazu, um jedem neuen Benutzer ein Profil oder eine spezielle Bash-Umgebung zuzuweisen.
Eine weitere Datei zum Verwalten von Benutzerumgebungen heißt /etc/profile. Jedes Mal, wenn ein Benutzer sich anmeldet, überprüft das System diese Datei und liest daraus die Standardwerte für Umgebungsvariablen, wie zum Beispiel Prompts, Pfade oder Umasks.
Neben dem Bearbeiten der eigentlichen Benutzerkonten gehört das Verteilen der Systemressourcen mit zu den wichtigen Aufgaben beim Administrieren eines Systems. Auf einem Rechner, den mehrere Personen benutzen, sollte jeder Nutzer gleichberechtigt Zugriff auf den Speicher andere Komponenten erhalten. Die stärkste Waffe im Arsenal ist dabei das in die Bash integrierte Tool ulimit: Es setzt dem einzelnen User Grenzen für den Verbrauch von Festplattenspeicher, Arbeitsspeicher und Anzahl der Prozesse.
Sie haben die Möglichkeit, den Befehl von einer Benutzer-Shell aus zu starten. In diesem Fall wirkt er sich sowohl auf die Shell aus als auch auf alle Programme, die Sie darin starten. Das Kommando kennt “harte” und “weiche” Limits sowie unbegrenzte Werte. Legen Sie ein hartes Limit einmal fest, können Sie es später nur noch senken, aber nicht mehr erhöhen.
Ein anfänglich gesetztes weiches Limit dürfen Sie bis zur Höhe des harten Limits anheben, aber nicht darüber hinaus. Der Parameter unlimited hebt alle Barrieren auf und erlaubt es dem Benutzer, sämtliche Ressourcen eines bestimmten Typs für sich zu beanspruchen.
Da es dieser Befehl relativ einfach macht, zulässige Aktivitäten der Benutzer zu blockieren, ist es wichtig, die Konsequenzen von Modifikationen über Ulimit zu durchschauen. Schränken Sie beispielsweise den Verbrauch von Arbeitsspeicher ein, führt dies unter Umständen dazu, dass beim Benutzer Programme, die auf Shared Libraries aufsetzen, abstürzen oder nicht starten.
Normalerweise kommt Ulimit zum Einsatz, um harte und weiche Grenzen in der Datei /etc/profile festzulegen. Da die Shell bei jedem Start auf /etc/profile zugreift, sobald sich ein Nutzer anmeldet, haben Sie die Möglichkeit, dort harte Limits zu setzen, um die User im Zaum zu halten. Weiche Limits hingegen darf der Benutzer individuell nach Bedarf anpassen – bis zu der Höhe, die Sie dafür vorgesehen haben.
Grenzen setzen
Ulimit bietet zahlreiche Optionen, die auf Systemen mit knappen Ressourcen von Interesse sind. Bei knappem Festplattenspeicher beschränken Sie beispielsweise über die Option -c die Größe der Coredumps sowie über -f die maximale Dateigröße, die eine Shell und ihre Kindprozesse schreiben.
Testen einzelne Benutzer experimentelle Software, ist es mitunter sinnvoll, das System zu schützen, indem Sie die maximale Anzahl an Prozessen (-u), den CPU-Verbrauch (-t) und den maximale Anteil am Arbeitsspeicher (-m) beschränken, damit keine wild gewordenen Prozesse den Rechner überlasten.
Um die aktuellen Beschränkungen aufzulisten, verwenden Sie den Befehl ulimit -a (Listing 7). In der linken Spalte sehen Sie für jede Option eine kurze Beschreibung, die dafür zuständige Option steht in der Mitte, und die aktuelle Grenze rechts. Um sowohl ein hartes als auch ein weiches Limit zu setzen, verwenden Sie ulimit OptionenGrenze. Um nur ein hartes Limit zu setzen, reicht -H, für weiche Limits entsprechend -S.
Listing 7
$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 32768 max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 32768 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
Ausmisten
Benutzerkonten unterliegen einem Lebenszyklus: Früher oder später müssen Sie unter Umständen Benutzerkonten aus einem System wieder entfernen, und oft ist es für alle Beteiligten wünschenswert, wenn dabei keine Spuren zurückbleiben. In einem Unternehmen sollten Sie sich vorab darüber informieren, welche Richtlinien bezüglich des Aufbewahrens von Firmendaten gelten, und sicherstellen, dass Sie alle nötigen Sicherheitskopien von den Benutzerdaten anfertigen, bevor Sie diese aus dem System löschen.
Falls Sie vorhaben, die Daten aufzubewahren, gilt es, eine Entscheidung zu treffen, wer die Daten erhält und in welcher Form Sie sie übergeben – dass heißt, ob es ausreicht, lediglich den Eigentümer im System zu ändern oder ob ein Auslagern auf einen Datenträger und die physische Übergabe erforderlich sind.
Haben Sie diese vorbereitenden Arbeiten abgeschlossen, ermitteln Sie im ersten Schritt die UID und die Gruppenmitgliedschaften des Benutzers. Am einfachsten erledigen Sie das mit dem Befehl id:
# id msimmons uid=1002(msimmons) gid=1004(msimmons) groups=1004(msimmons),37(operator)
Mithilfe dieser Informationen spüren Sie die Dateien, die sich im Besitz des Nutzers befinden, auf allen Dateisystemen auf und weisen Sie gegebenenfalls anderen Benutzern zu. Zum Aufspüren der Daten verwenden Sie find in Kombination mit der fraglichen UID:
# find / -uid 1002
Sobald Sie das Schicksal der Dateien des Benutzers geklärt haben, entfernen Sie das Konto selbst mit dem Befehl
# /usr/sbin/userdel Benutzername
aus dem System. Mit dem Parameter -r löschen dabei Sie automatisch das dazugehörige Benutzerverzeichnis. Das Entfernen der Gruppe des Benutzers klappt über
# /usr/sbin/groupdel <I>Gruppe<I><C>
Dieser Befehl entfernt die entsprechende Zeile in /etc/group, löscht aber keine Dateien, die mit dieser Gruppe verknüpft sind. Die bessere Alternative zum Handhaben der Dateien stellt der bereits erwähnte Find-Befehl dar, bei dem Sie dieses Mal statt -uid den Parameter -gid nutzen.
Fazit
Das Verwalten der Benutzerkonten stellt einen wichtigen Teil des Linux-Alltags dar. Je vertrauter Sie mit den entsprechenden Tools sind, desto mehr steigert sich Ihre Effizienz und Flexibilität. Mit den vorgestellten Tools verfügen Sie über eine solide Basis und einen gut sortierten Werkzeugkasten. Benötigen Sie weitere Informationen, werfen Sie am besten einen Blick in die Dokumentation der verschiedenen Programme. Darüber hinaus finden Sie im Internet zahlreiche Workshops und Howtos, die mehr über das Verwalten von Benutzerkonten und Gruppen unter Linux verraten.





