Druckversion | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
In diesem Abschnitt erfahren Sie die notwendigen Maßnahmen zur Administration von Benutzerzugängen auf dem System. Nach dem Kennenlernen der wichtigen Dateien widmen wir uns den Möglichkeiten zum Anlegen und Löschen von Zugängen. Da neben den allgemeinen Werkzeugen eine Reihe distributionspezifischer Administrationshilfen existieren, finden auch diese Erwähnung. Weiterhin besprechen wir Kommandos, die die einzelnen Einträge der Passwortdatei manipulieren. Abschließend erfahren Sie, wie Sie einzelnen Benutzern Sonderrechte (z.B. Root-Rechte) für bestimmte Zwecke einräumen können.
Die Daten zur Benutzerverwaltung findet man in /etc/passwd. Der Begriff »Benutzer« wird hier etwas weiter gefasst, indem auch Pseudobenutzer angelegt werden, um Rechte für bestimmte Dateien / Verzeichnisse / Prozesse nur bestimmten Programmen einzuräumen. So findet man einen Benutzer »lp«, hinter dem sich der Druckerdämon verbirgt. Und sucht man ihm gehörende Dateien, wird man unterhalb von »/var/spool« fündig. Der Aufbau eines Eintrags ist immer gleich (sofern es sich nicht um einen NIS-Eintrag handelt):
Die Einträge bedeuten: Username Druckbare Zeichen, meist Kleinbuchstaben
Password
UID Nichtnegative Zahl < 64000, für normale Benutzer > 100
GID Nichtnegative Zahl < 64000
Info (GCOS) Das Feld kann mehrere Einträge enthalten. Dazu zählen:
Diese Angaben werden von zahlreichen Programmen wie finger, mail abgefragt. Zusätzlich können, per Komma getrennt, 3 weitere Angaben enthalten sein:
Home Startverzeichnis nach Login
Shell Default-Shell
Dass das verschlüsselte Passwort in der /etc/passwd steht, wird man nur noch auf älteren Systemen vorfinden. Die Bedeutung der Felder der /etc/shadow unterscheidet sich von denen in der Datei /etc/passwd:
Die Einträge bedeuten: Username Identischer Eintrag wie in der /etc/passwd
password Verschlüsseltes Passwort
DOC Day of last change, Tag ab dem 1.1.1970, an dem das Passwort zuletzt geändert wurde
MinD Minimale Anzahl Tage, die das Passwort gültig ist
MaxD Maximale Anzahl Tage, die das Passwort gültig ist
Warn Anzahl der Tage vor Ablauf der Lebensdauer des Passwortes, ab der vor dem Verfall zu warnen ist
Exp Expire, wieviele Tage gilt das Passwort trotz Ablauf der MaxD?
Dis Bis zu diesem Tag (gezählt ab 1.1.1970) ist dieser Account gesperrt
Res Reserve, Feld wird derzeit nicht ausgewertet
Eine manuelle Konvertierung der Einträge aus der Datei /etc/passwd in die Datei /etc/shadow und umgekehrt kann aus drei Gründen notwendig sein:
Es ist sicher schwierig und in Systemen mit mehreren hundert Benutzern vielleicht sogar unmöglich, die Konsistenz von /etc/passwd und /etc/shadow manuell zu gewährleisten. Zum Glück existieren zwei Kommandos, die die Konvertierung der Formate automatisch vornehmen:
pwconv vergleicht die Einträge aus der Datei /etc/passwd mit denen in der Datei /etc/shadow. Findet das Programm Unstimmigkeiten, wird die /etc/shadow so manipuliert, dass sie dem Stand der /etc/passwd entspricht. D.h. zu jedem Eintrag der Passwortdatei existiert anschließend ein zugehöriger Eintrag in der Shadowdatei, wobei eventuell vorhandene Passwörter in der /etc/passwd durch ein »x« ersetzt und diese in der /etc/shadow gespeichert werden.
pwunconv überträgt die verschlüsselten Passwörter aus der Datei /etc/shadow in die Datei /etc/passwd und löscht anschließend die Shadowdatei. Eventuell ist eine Überprüfung der Konsistenz der beiden Dateien notwendig. Das Kommando pwck gibt eventuelle Unstimmigkeiten aus und fordert ggf. zu Korrekturen auf:
Selbst der Unix-Kenner ist mit der Konfiguration aller wichtigen Programme oft überfordert. Deswegen liegen solchen Programmen meist Konfigurationsdateien bei, die eine arbeitsfähige Grundkonfiguration bieten. Der Systemverwalter kann solche Dateien, die er für die Anwender als sinnvoll erachtet, in das Verzeichnis /etc/skel kopieren. Beim Anlegen eines neuen Zugangs kopiert man dann dessen gesamten Inhalt ins Heimatverzeichnis des neuen Benutzers. Die Namen der Konfigurationsdateien beginnen üblicherweise mit einem Punkt, um sie beim normalen Listing zu verbergen:
Das Anlegen neuer Benutzer kann prinzipiell auf drei Wegen erfolgen:
Die Handarbeit
Allgemeine WerkzeugeHierbei ist zwischen Shadow- und herkömmlichen Passwort-Systemen zu unterscheiden. Die traditionelle Passwortverwaltung verwendet das Kommando adduser, dessen Bedienung dem neueren useradd stark ähnelt. Der wesentliche Unterschied ist die automatische Anpassung der Datei /etc/shadow durch das Kommando »useradd«. Wir beschränken uns hier auf die Beschreibung des letzteren Befehls.
Wichtige Optionen von useradd sind: -c "Infos" Das »Info«-Feld des Eintrags in der /etc/passwd wird gesetzt.
-d "Verzeichnis"
Das Heimatverzeichnis des Benutzers wird gesetzt. Damit kann die Voreinstellung
»/home/<Benutzerkennung>« überschrieben werden.
-g "Gruppe" Gruppennummer oder -name der Default-Gruppe des neuen Benutzers.
-G "Gruppenliste" Durch Komma getrennte Liste der Gruppen, denen der Benutzer angehört.
-m
Das Heimatverzeichnis wird angelegt (falls es nicht so existiert) und der
Inhalt von /etc/skel hinein kopiert.
-p "Passwort" Das Passwort des Benutzers in verschlüsselter Form!
-s "Shell" Die Default-Shell des Benutzers.
-u "UID"
Die NutzerID des Anwenders. Wird sie nicht angegeben, wird die
nächsthöhere noch freie UID gewählt.
Um denselben Benutzereintrag, wie unter »Handarbeit« beschrieben, zu erzeugen, ist folgende Kommandofolge notwendig:
Alle nicht explizit angegebenen Werte werden mit Default-Werten belegt, die in der Datei /etc/default/useradd zu finden sind:
Der Systemverwalter kann mit Hilfe des Aufrufes »useradd -D« die Voreinstellungen u.a. für die Default-Gruppe »-g«, das Basisverzeichnis für die Homes »-b« und die Shell »-s« ändern. Hinweis zum Passwort: Die Verwendung der Option »-p Passwort« erwartet das verschlüsselte Passwort. In einigen Unix-Versionen existiert hierzu das Kommando crypt, das aus dem Klartextpasswort den verschlüsselten Text erzeugt. Den meisten Linux-Distributionen liegt allerdings nur die gleichnamige Bibliotheksfunktion bei, so dass man sich erst ein eigenes crypt-Kommando schreiben müsste. Angenommen, das Programm hieße »mycrypt«, dann ließe sich das Passwort automatisch generieren:
Eine Beispielimplementierung des Programmes »mycrypt« finden Sie im Anhang Skriptsammlung. Distributionseigene WerkzeugeManchen Distributionen liegen spezielle Administrationswerkzeuge bei, die das Vorgehen auf der Kommandozeile hinter grafischen Eingabemasken verbergen. Allen RedHat-basierenden Linuxen liegt das Tools userconf bei, dessen Konsolen-Frontend hier dargestellt sei: Abbildung 1: Nutzerverwaltung mit userconf SuSE integriert die Benutzerverwaltung in ihr Adminstrationswerkzeug Yast. Die Eingabemaske erreicht man über Administration des Systems Benutzerverwaltung Abbildung 2: Nutzerverwaltung mit yast1
Die Handarbeit
Allgemeine WerkzeugeBei herkömmlichen Passwortsystemen heißt das zu »adduser« korrespondierende Kommando deluser und bei Shadow-Passwort-Systemen userdel. »userdel« arbeitet analog zu »deluser«, entfernt aber den Benutzereintrag gleichzeitig aus der Shadowdatei. Die einzige Option von »userdel« ist »-r«, womit gleichzeitig das Heimatverzeichnis des Benutzers entfernt wird. Vorsicht: Die Daten sind damit für immer verloren!
Distributionseigene WerkzeugeDie zum Anlegen neuer Benutzer gedachten Werkzeuge lassen sich ebenso zu Entfernen dieser benutzen. Verwenden Sie also »userconf« bei RedHat-Systemen und »yast« bei SuSE.
Es sollte einleuchtend sein, dass sich die Einträge der /etc/passwd mittels eines Editors modifizieren lassen. Auch sollte das Vorgehen mit den distributionseigenen Werkzeugen leicht nachzuvollziehen sein. Zum Ändern der Felder »Info« und »Shell« der /etc/passwd stehen spezielle Kommandos zur Verfügung, wobei einige Anpassungen sogar dem Benutzer selbst möglich sind. Ändern der voreingestellten Shell mit chsh: Jeder Anwender darf die von ihm favorisierte Shell als Default-Shell in die Datei /etc/passwd eintragen. Voraussetzung ist nur, dass diese Shell in der Datei /etc/shells aufgeführt ist:
Die Liste kann bei den einzelnen Installationen differieren, dennoch sollte man als normaler Benutzer zwei der Einträge nicht verwenden.
Zum Ändern der Shell ist unbedingt deren vollständiger Zugriffspfad anzugeben, da zum Zeitpunkt des Logins noch keine PATH-Variable existiert:
Ändern des Info-Feldes mit chfn: Eine Modifikation des vollen Namens des Benutzers »-f name« und der Limits »-o options« (man vergleiche die Beschreibung des Info-Feldes) sind dem Administrator vorbehalten. Die Raumnummer »-r nummer«, Firmentelefonnummer »-w nummer« und Privattelefonnummer »-h nummer« dürfen auch vom betreffenden Benutzer gesetzt werden.
In der Datei /etc/shadow lassen sich durch den Systemverwalter die Werte zur Passwortalterung manipulieren. Das hierzu verwendete Kommando ist chage. Mit der Option -l Benutzerkennung liest chage die aktuellen Einstellungen aus:
chage ist immer die Benutzerkennung mitzugeben, für das die Aktion vollzogen werden soll. Die einzelnen Werte zur Passwortalterung lassen sich mit folgenden Optionen setzen: -m Mindesthaltbarkeit
Ein neues Passwort behält mindestens für die angegebene Anzahl Tage
seine Gültigkeit. Steht hier 0, kann ein Passwort stets geändert
werden.
-M Maximale Lebensdauer Erreicht ein Passwort dieses Alter (Angabe in Tagen), wird der Zugang gesperrt.
-d Letzter Tag An diesem Tag wurde das Passwort letztmalig geändert.
-E Verfallstag
An diesem Tag wird ein Zugang definitiv gesperrt. Die Angabe kann als Tage seit
dem 1.1.1970 oder in Form von JJJJ-MM-TT (Jahr-Monat-Tag) erfolgen.
-I Inaktiv
Ist ein Passwort abgelaufen, so wird der Zugang erst nach Ablauf dieser Anzahl
Tage gesperrt. Ein Nutzer hat somit die Möglichkeit, sein Passwort noch zu
ändern.
-W Tag der Warnung
Ab so vielen Tagen vor Ablauf des Verfalls eines Passwortes wird der Benutzer
bei einem Anmeldevorgang darüber informatiert.
Die mit Gruppen verbundene Möglichkeit zur Vergabe von speziellen Rechten an eine Auswahl von Benutzern ist Gegenstand des Abschnittes Gruppenverwaltung. An dieser Stelle möchten wir demonstrieren, wie man einem Benutzer/einer Benutzergruppe die Rechte eines beliebigen anderen Benutzers bei der Ausführung eines einzelnen Kommandos einräumen kann. Das Kommando zum Ausführen eines Kommandos mittels Rechten eines bestimmten Benutzers - auch des Administrators - heißt sudo.
Wichtige Optionen sind: -l Gibt eine Liste der Kommandos aus, die der Benutzer im Auftrag von Root verwenden darf:
-b Das »sudo« übergebene Kommando wird im Hintergrund ausgeführt
-u "user"
Das Kommando wird als Benutzer »user« anstatt als aufrufender Benutzer
gestartet. Ein solcher »user« wird im weiteren Text als Zielbenutzer
bezeichnet.
Doch zunächst ist es am Systemverwalter, eine Datenbank anzulegen, die eine Zuordnung von Benutzern und den Kommandos, die diese im Auftrag von Root ausführen dürfen, beinhaltet. Die Datei nennt sich /etc/sudoers und sollte mit dem Kommando visudo (einige Syntaxprüfungen werden automatisch von dem Werkzeug vorgenommen) bearbeitet werden. Die Datenbasis /etc/sudoers/etc/sudoers ist in fünf Sektionen gegliedert, von denen die ersten vier nur Aliasfunktionen ausüben, um die fünfte - und damit auch die Konfiguration an sich - übersichtlich zu halten.
In den Alias-Sektionen werden symbolische Namen für Rechner-, Benutzer-, Kommando- und Zielbenutzer- Gruppen erzeugt. Eine derartige Zusammenfassung ist sinnvoll, wenn die Gruppen mehrfach Verwendung finden oder aber auf komplexe Definitionen wie u.a. IP-Adressbereiche zurückgegriffen wird. Hintergrund der recht ausführlichen Möglichkeiten der Rechner- bzw. Netzwerk-Selektion und Varianten von Benutzergruppen ist die zentrale Konfiguration von UNIX-Systemen in größeren Netzwerken mit einer einzigen sudoers-Datei, die hierbei nur einmal generiert und auf die einzelnen Maschinen verteilt werden muss. Um die einzelnen Bereiche genauer zu erklären ist es am günstigsten, das Feld von hinten aufzurollen, da in der letzten Sektion - der Benutzer-Spezifikation - alle zuvor definierten Einträge erst ihre Wirksamkeit erlangen. Hier wird die Zuordnung realisiert, die die Funktion von sudo ausmacht, dass »ein bestimmer Benutzer« als »ein bestimmter anderer Benutzer« »bestimmte Kommandos« auf »einem bestimmten Rechner« ausführen darf. Der Aufbau einer Benutzer Spezifikation gestaltet sich wie folgt:
Die einzelnen Einträge stehen dabei sowohl für einen einzelnen Benutzer, einen Rechnernamen, ein Kommando oder aber für einen Alias der gleichnamigen Alias-Spezifikation. Die optionale Angabe von NOPASSWD: berechtigt die angegeben Benutzer, das (oder die) Kommando(s) ohne Eingabe eines Passwortes (Passwort des »Zielbenutzers«) zu starten. Fehlt RUN-AS, so ist der Zielbenutzer immer Root. Abgesehen vom einleitenden Schlüsselwort User_Alias bzw. Runas_Alias besitzt die Spezifikation der Benutzer- und Zielbenutzer-Aliasse denselben Aufbau. Dem Schlüsselwort folgt eine freie wählbarer Aliasname (Großbuchstaben!), dem eine kommaseparierte Liste aus Benutzerkennung, Gruppennamen (durch ein vorangestelltes »%« gekennzeichnet) oder Netzgruppen (Benutzer der genannten Netzgruppe aus der Datei »/etc/netgroups«; ein Eintrag wird durch ein vorangestelltes »+« als Netzgruppe gekennzeichnet) folgt.
Ein Eintrag der Rechner Alias Spezifikation wird mit einem Host-Alias eingeleitet. Dem Aliasnamen (Großbuchstaben) folgt eine Liste der Mitglieder, jeweils durch Komma voneinander getrennt. Ein Mitglied kann ein Rechnername, eine Netzgruppe, eine IP-Adresse oder ein Netzwerk sein. Ein Netzwerk wird entweder über seinen Namen (/etc/networks) oder über eine Netzwerkadresse (194.168.17.0), die mittels einer optionalen Netzmaske (194.168.17.0/255.255.255.127) weiter eingeschränkt werden kann. Letztes Beispiel betrifft alle Rechner mit IP-Adressen 194.168.17.1 - 194.168.17.127. Ohne Angabe der Netzmaske wird die des lokalen Rechners angenommen.
Die Kommando Alias Spezifikation besitzt die komplexeste Syntax, da hier auch die shell-üblichen Metazeichen (für Argumente) Anwendung finden. Ein Kommando muss immer mit vollständigem Zugriffspfad angegeben werden. Ihm können optionale Argumente folgen, um die Verwendung des Kommandos auf eben diese Optionen einzuschränken. Mehrere Kommandos werden durch Komma voneinander getrennt. Die Metazeichen *, ?, [...] und [!...] besitzen dieselbe Bedeutung, wie im Abschnitt Bash Kommandoeingabe beschrieben. Sonderzeichen verlieren durch einen vorangestellten Backslash »\« ihre Wirkung. Sollen alle Optionen eines Kommandos verboten werden, so ist dem Kommando eine leere Zeichenkette "" nachzustellen.
Kommen wir noch einmal zur Benutzer Spezifikation zurück, die letztlich die Verbindung aller Alias-Spezifikationen herstellt. Stellvertretend für die Aliasse von Rechnern, Zielbenutzern und Kommandos kann das Schlüsselwort ALL stehen, das als Platzhalter für »Alles« steht. Anstelle eines einzelnen Kommandos oder Kommandoaliasses darf hier eine Liste von Kommandos oder Kommandoaliassen stehen. Steht einem Kommando(alias) ein Ausrufezeichen »!« zuvor, so wird genau dieses Kommando gesperrt. Abschließend soll diese Thematik eine vollständige Datei »/etc/sudoers« demonstrieren:
Auch wenn die Konfiguration vielgestaltig und fehlerträchtig ist, so besitzt sudo gegenüber dem Kommando su und den Suid-Bits verschiedene Vorteile. Wesentlich ist die Möglichkeit der Protokollierung sämtlicher Aktivitäten, womit etwaige ungewöhnliche Vorgänge im System, deren Ursache man im Missbrauch von Sonderrechten vermutet, im Nachhinein resümiert werden können. Und während man mittels Suid-Bits die Rechte nur auf Gruppenbasis (»allen Mitgliedern dieser Gruppe«) oder allen Benutzern einräumen kann, ermöglicht sudo eine abgestufte Administration. Dennoch erfordert die Konfiguration in kritischen Umgebungen enorme Sorgfalt, da oben benannte Eigenschaften nur für die direkt mit sudo eingegebenen Kommandos gelten und nicht für mittels sudo eröffnete Shells und den daraus gestarteten Kommandos. Deshalb Vorsicht mit der Vergabe von solchen allgemeinen Rechten wie mit »ALL«; hier sollten zumindest die Ausführung von Programmen untersagt werden, die irgendwelche Manipulationen im Dateisystem ermöglichen (cp, chmod, chown, ln, ...) ebenso wie alle Programme, die außerhalb der Standard-Pfade liegen! Gehen Sie besser sehr restriktiv an die Freigabe von Berechtigungen. Ihre wichtigste Devise lautet: »Weniger ist mehr!«.
Zugang allen Benutzern verwehrenManchmal ist es für den Systemadministrator erforderlich, den Benutzern den Zugang zum Rechner temporär zu versagen. Die Existenz einer (auch leeren) Datei /etc/nologin - ermöglicht das Einloggen nur noch für Root. Versucht sich ein anderer Benutzer beim System anzumelden, wird der Inhalt dieser Datei ausgegeben. Zugang einem bestimmten Benutzer verwehrenDer häufigere Fall wird wohl sein, dass man einen einzelnen Benutzer den Zugang verwehren möchte. So ist es durchaus sinnvoll, falls ein Kollege für längere Zeit auswärts seinen Job ausübt, dessen ungenutzten Zugang zu sperren, um so potentiellen Hackern einen in Frage kommenden Angriffspunkt zu entziehen. Es gibt mehrere Wege, dies zu realisieren:
Es ist eine Gratwanderung zwischen dem Sicherheitsanspruch an ein Passwort und dessen Einfachheit. Ein simples Passwort lässt sich leicht merken, ist aber ebenso einfach von einem potentiellen Hacker zu erraten. Ein kompliziertes Passwort verschwindet womöglich auf Nimmer Wiedersehen in den grauen Zellen des Vergessens... Und nun? Einfach ist es, hat man sein Passwort als normaler Benutzer »verlegt«. Dann bittet man einfach den Systemverwalter, den alten Passworteintrag zu entfernen. Und wenn einem das Root-Passwort entfallen ist?Der erste Versuch sollte die Erlangung einer Root-Shell zum Ziel haben. Booten Sie hierzu Linux neu und übergeben dem Boot-Image am Bootmanager-Prompt folgenden »init«-Parameter:
Anstatt die Runlevel-Skripte abzuarbeiten, startet Linux einzig die Shell /bin/sh. Das Root-Passwort kann nachfolgend mit passwd neu vergeben werden. Falls jedoch obige Methode versagt - weil bspw. die Übergabe von Bootparametern unterbunden wurde - kann das Passwort nur aus einem anderen Linux-System heraus geändert werden. Booten Sie hierzu ein anderes System. Vielen Distributionen liegt hierzu ein so genanntes Rettungssystem bei. Melden Sie sich auf diesem System als Root an und mounten die Rootpartition des Systems mit dem verschollenen Passwort auf ein beliebiges Verzeichnis. Mit dem Kommando chroot weisen Sie das System an, als Wurzel das angegebene Verzeichnis zu verwenden. Ändern Sie anschließend das Passwort und booten das System neu. Beispielhaft seien die Schritte des Mountens, Wechseln des Rootverzeichnisses und Ändern des Passwortes skizziert, wobei als Wurzelverzeichnis des zu korrigierenden Systems /dev/hda2 angenommen wird:
Bemerkung: Nach dem Aufruf von »chroot« befinden wir uns in einer anderen Wurzel, d.h. alle nachfolgend eingegebenen Kommandos verwenden diese aus diesem System! Ein Aufruf von »passwd« bewirkt - aus Sicht des Rettungssystems - einen Aufruf von »/mnt/usr/bin/passwd«. Im Beispiel differiert daher die Ausgabe des passwd-Kommandos (das hier die MD5-Verschlüsselung verwendet) von denen der weiter oben angeführten Beispiele. Verwendet man »chroot« ohne Angabe des Kommandos, erhält man eine Shell im System der neuen Wurzel. Diese kann man nur über exit verlassen. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Korrekturen, Hinweise? |