Willemers Informatik-Ecke
Die Benutzerverwaltung gehört zu den Routinetätigkeiten des
Administrators. Für jeden Benutzer wird eine Kennung, ein Passwort
und ein Bereich auf der Platte angelegt, auf der er arbeiten kann.
Es treten Aspekte der Einbruchsicherheit auf und hin und wieder
müssen den Benutzern auch Grenzen gesetzt werden.
Passwortverwaltung unter UNIX
Informationen über die Anwender werden in der /etc/passwd gehalten.
Hier steht für jede Benutzerkennung, wo das Heimatverzeichnis liegt, welche
Shell gestartet wird, die User-ID und Group-ID. Traditionsgemäß enthält die
/etc/passwd auch das verschüsselte Passwort.
Die Benutzerdatei /etc/passwd
In den älteren UNIX-Systemen hat man für einen Benutzereintrag direkt die
/etc/passwd manipuliert. Dieser Weg steht prinzipiell auch heute
noch offen, sofern die Passwörter nicht zentral im Netz unter NIS
verwaltet werden.
Die /etc/passwd zeigt auf, wie der Benutzer eines UNIX-Systems
definiert ist. Ein Eintrag in der /etc/passwd hat folgenden Aufbau:
Benutzer:Passwort:User-ID:Group-ID:Kommentar:Verzeichnis:Shell
|
Hier ein Beispiel für eine /etc/passwd:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
lp:x:4:7:lp daemon:/var/spool/lpd:/bin/bash
ftp:x:40:2:ftp account:/usr/local/ftp:/bin/bash
named:x:44:44:Nameserver Daemon:/var/named:/bin/bash
nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash
arnold:x:501:100:Arnold Willemer:/home/arnold:/bin/bash
andrea:x:502:100::/home/andrea:/bin/bash
|
Die Einträge bedeuten im Einzelnen:
- Benutzer
-
Die Benutzerkennung bezeichnet den Benutzer. Gern wird dazu der Name
verwandt. Bei einigen Systemen ist er auf 8 Buchstaben begrenzt. Dies ist
die Kennung, mit der man sich anmeldet.
- Passwort
-
In Systemen ohne Shadow-Datei steht hier das verschlüsselte Passwort.
Es handelt sich um einen Falltür-Algorithmus. Das bedeutet, dass man aus
dem Passwort im Klartext zwar leicht die Verschlüsselung ermitteln kann,
der umgekehrte Weg aber nicht möglich ist. An sich ist das Verfahren recht
sicher. Mit Hilfe einer Lexikondatei und einem Namensregister kann man
aber schlechte Passworte leicht knacken.
Beim Anlegen eines neuen Benutzers lässt man diesen Eintrag frei. Ein
leerer Eintrag erlaubt den Zugang ohne Passwort. Gleich anschließend
wird der Eintrag durch den Aufruf des Befehls passwd gefüllt.
Soll der Benutzer für interne Zwecke angelegt werden, dann ist es durchaus
möglich, dass man vermeiden will, dass sich jemand unter dieser Kennung
anmeldet. Das erreicht man, indem man einen Stern oder ein X als Passwort
einsetzt. Der Verschlüsselungsallgorithmus kann nämlich
niemals einen einstelligen Eintrag an dieser Stelle erzeugen. Damit gibt
es kein Passwort, das hier passt.
Ein kleines x an dieser Stelle in allen Einträgen deutet darauf hin, dass
das System eine shadow passwd Datei verwendet.
- User-ID
-
Jeder Benutzer hat seine eigene Nummer. Normale Benutzer werden auf einigen Systemen ab 50, ab 100 oder neuerdings ab 500 angelegt. Die kleineren Nummern sind teilweise für Systemdienste festgelegt, so ist das Administrationskennwort root mit der User-ID 0 verbunden.
Mit seiner User-ID wird in Dateien der Eigentümer gekennzeichnet.
- Group-ID
-
Jeder Benutzer gehört zu mindestens einer Gruppe. Die Hauptgruppe, zu der
der Benutzer gehört, wird hier eingetragen. Der Benutzer kann in der Datei
/etc/group auch in weiteren Gruppen angemeldet werden.
- Kommentar
-
Hier wird im Klartext eingetragen, wer der Benutzer ist. Der Eintrag hat informativen Charakter.
- Verzeichnis
-
Das Heimatverzeichnis des Benutzers. Hier hat der Anwender seinen Arbeitsbereich und hier wird er auch landen, sobald er sich eingeloggt hat. Auch Einstellungen wie die .profile-Datei stehen hier. Der neue Benutzer muss in das Verzeichnis wechseln und es lesen können (x+r). In den meisten Fällen werden es Benutzer schätzen, wenn sie in ihrem Bereich auch schreiben können.
- Shell
-
Hier wird normalerweise die Shell eingetragen, die für den Benutzer beim
Einloggen gestartet wird. Hier kann man je nach Geschmack neben der
klassischen Bourne-Shell (sh) auch Kornshell (ksh), C-Shell (csh) oder die
Bourne-Again-Shell (bash) eingesetzt werden. Lediglich für den root sollte
man eine Shell wählen, die auch dann zur Verfügung steht, wenn nur die
Bootpartition ansprechbar ist. Die Shell ist mit vollem Pfadnamen
einzutragen.
Um neue Benutzer direkt in die /etc/passwd einzutragen, kopiert man am
einfachsten einen bisherigen Eintrag, korrigiert die benutzerbezogenen
Daten, insbesondere die User-ID und erstellt ein neues Heimatverzeichnis.
Zum Beispiel:
meier::237:106::/home/meier:/bin/sh
|
Für den Benutzer wird ein Verzeichnis eingerichtet. In unserem Beispiel:
Gegebenenfalls wird der Benutzer in die Gruppendatei /etc/group
aufgenommen. Zum Beispiel:
projekt_a::106:petersen,meier
post::107:schulz,mueller,meier
|
Das Heimverzeichnis des neuen Benutzers wird mit dessen Zugriffsrechten
versehen. Zum Beispiel:
chown meier /home/meier
chgrp projekt_a /home/meier
|
Mit dem Befehl passwd wird schließlich das Passwort gesetzt.
Wenn allerdings Schattenpasswörter in der /etc/shadow verwendet
werden, muss vor dem ersten Aufruf von passwd noch ein Eintrag in
dieser Datei gemacht werden. Ansonsten landet das verschlüsselte Passwort
doch wieder in der /etc/passwd.
Verborgene Passwörter: shadow
Die Datei /etc/passwd enthält heute normalerweise keine
verschlüsselten
Passwörter mehr. Diese werden im System in einer zweiten Datei namens
/etc/shadow abgelegt, die nur noch von root lesbar ist.
Der Grund für diese Maßnahme liegt darin, dass viele Anwender Passwörter
verwenden, die leicht zu knacken sind. Das ist vor allem der Fall, wenn
das Passwort Worten entspricht, die man in einem Lexikon findet
oder übliche Vornamen sind.
Angriff auf /etc/passwd
Ein gängiger Angriff auf eine Maschine wurde so durchgezogen, dass man die
für jeden lesbaren Datei /etc/passwd kopierte. Anschließend ließ
man ein kleines Programm über ein Wörterbuch laufen, das jedes Wort
verschlüsselt und die Verschlüsselung mit der in der /etc/passwd
vergleicht.
Ein solches Programm zu schreiben ist nicht weiter schwierig, da das
Verfahren, mit dem UNIX seine Passwörter verschlüsselt, öffentlich bekannt
ist.
So wie man einen Benutzer in der /etc/passwd von Hand eintragen
kann, geht das auch in der /etc/shadow. Am einfachsten ist es auch
hier, einen existierenden
Eintrag zu kopieren und an den neuen Benutzer anzupassen. Wie in der
passwd werden auch hier die Einträge durch Doppelpunkte voneinander
getrennt. Dabei stehen hintereinander folgende Einträge:
- Die Benutzerkennung, die auch in der /etc/passwd in der ersten Spalte steht.
- Hier steht nun das Passwort.
- Tag der letzten Änderung des Passworts. Das Datum wird in der Zahl der Tage
seit dem 1.1.1970 kodiert.
- Anzahl der Tage, nach denen das Passwort erstmals geändert werden darf.
- Anzahl der Tage, nach denen das Passwort geändert werden muss.
- Anzahl der Tage, die der Benutzer vor dem Ablauf des Passwortes gewarnt wird.
- Wieviel Tage nach dem Ablauf des Passworts der Zugang geschlossen wird.
- Datum, an dem der Zugang gechlossen wurde in Tagen seit dem 1.1.1970.
- Reserviertes Feld.
Beispiel eines Eintrags:
arnold::11545:0:99999:7:0::
|
Passwörter zeitlich begrenzen
Man sieht, dass man durch die /etc/shadow neben der Sicherung der
verschlüsselten Passwörter auch die Möglichkeit gewinnt, Passwörter ablaufen
zu lassen. Wenn Sie diese Option einsetzen möchten, denken Sie daran, dass
ein häufiger Wechsel kontraproduktiv sein kann. Sobald die Anwender den
Überblick verlieren, werden Sie die Passwörter aufschreiben, anstatt sie sich
zu merken oder lassen sich Kreationen wie januar1, februar2 und so fort
einfallen.
Benutzerpflege automatisieren
useradd
Bei den meisten Systemen existiert ein Dienstprogramm namens useradd.
Manchmal heißt es auch adduser. Damit kann man einen Benutzer anlegen.
Das Programm prüft die Verträglichkeit des Eintrags und setzt sinnvolle
Vorgaben, damit man nicht soviel tippen muss.
Im folgenden Beispiel wird ein Benutzer mit der Kennung testperson
angelegt.
gaston# useradd testperson
gaston# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
...
nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash
willemer:x:500:100:Arnold Willemer:/home/willemer:/bin/bash
arnold:x:501:100:Arnold Willemer:/home/arnold:/bin/bash
andrea:x:502:100::/home/andrea:/bin/bash
testperson:x:503:100::/home/testperson:/bin/bash
gaston# ls /home
. .. andrea arnold cvsroot t345-1.33 willemer
gaston# mkdir /home/testperson
gaston# chown testperson /home/testperson
|
Durch useradd wird der Eintrag in der /etc/passwd generiert. Das
zeigt die Ausgabe der Datei. Das Kommentarfeld und das Passwort lässt das
Programm frei. Das Heimatverzeichnis des Benutzers wird zwar in der
/etc/passwd benannt, muss aber erst noch angelegt werden.
Solche Tools sind durchaus praktisch, man sollte aber genau wissen, wo sie
ihre Grenzen haben und wann man von Hand nachfassen muss.
Analog gibt es auch kleine Programme, die eine Änderung des Benutzers oder
das Austragen durchführen.
Alle Administrationstools erlauben, dass man auch Benutzer verwalten kann.
Im Allgemeinen leisten sie mehr als die oben genannten Skripten.
Probleme beim Anlegen des Verzeichnisses
Wenn Sie plötzlich Probleme haben, im Verzeichnis /home einen
Benutzer anzulegen und dies auch nicht durch das Administrationstool möglich
ist, kann es sein, dass ein Automount Dämon
das Verzeichnis /home verwaltet.
In diesem Fall ist zu prüfen, ob die Heimatverzeichnisse im Netz per
Automount verwaltet werden. Falls das nicht beabsichtigt ist, muss man ihn
deinstallieren, bevor man im Verzeichnis /home Benutzerverzeichnisse
anlegt.
Grundeinstellungen: /etc/profile
Die Datei /etc/profile wird beim Einloggen jedes Benutzers gestartet,
der nicht die C-Shell verwendet. Für die C-Shell heißt die entsprechende
Datei /etc/csh.chsrc. Die Unterscheidung ist insofern sinnvoll, als
die C-Shell einen anderen Syntax für das Setzen von Variablen hat. In diesen
beiden Dateien können Einstellungen gemacht werden, die für alle Benutzer
gelten sollen.
ulimit
Mit dem Befehl ulimit können den Anwendern Beschränkungen aufgelegt
werden, die die Größen von einigen Ressourcen betreffen. Die Optionen von
ulimit bewirken:
| Option | Wirkung |
| -a | Anzeige aller aktuellen Limits |
| -c | maximale Größe eines core dumps |
| -d | maximale Größe des Datasegments eines Prozesses |
| -f | maximale Größe einer Datei |
| -l | maximaler gesperrter Hauptspeicherbereich |
| -n | maximale Anzahl offener Dateien (nicht alle Systeme) |
| -s | maximale Größe des Stacks eines Prozesses |
| -t | maximale CPU-Zeit in Sekunden |
| -v | maximamle Größe des virtuellen Speichers |
ulimit vs. quota
Die Größe einer Datei zu beschränken, um den Plattenplatz zu limitieren, dürfte
nicht der richtige Weg sein, da viele kleine Dateien genauso viel Platz
einnehmen können, wie eine große. Ein solches Problem löst man besser mit
Quotas.
Informieren!
Die hier festgelegten Einschränkungen sollten allgemein bekannt gemacht werden.
Im Allgemeinen wird das Überschreiten der Limits zu einem Programmabbruch
führen und die Ursache kann gegebenfalls schwer zu ermitteln sein.
umask
umask verhindert zu großzügige Rechte
Der Befehl umask setzt eine Maske von denjenigen Rechten, die bei
der Erzeugung einer Datei nicht gesetzt werden.
Ein typischer Wert ist 022. Das bedeutet, dass die Gruppe und die Welt keine
Schreibrechte auf die Dateien und Verzeichnisse hat. Letztlich kann der
Anwender natürlich die Rechte nach ihrer Erzeugung mit einem chmod beliebig
setzen. Allerdings weiß er dann auch, was er tut.
Der Befehl umask dient also in erster Linie dazu, den Anfänger davor
zu beschützen, dass er versehentlich Dateien anlegt, die dann von aller Welt
verändert werden können.
Umgebungsvariablen
Eine der wichtigsten Aufgabe der /etc/profile ist sicherlich die
Vorbelegung der Umgebungsvariablen.
Eine der wichtigsten ist die Variable PATH, die beschreibt, wo die startbaren
Programme zu finden sind. Andere Einstellungen, wie der Standardprinter
oder Einstellungen zur grafischen Umgebung können hier systemweit vorgegeben
werden. Aber auch Variablen, die als Schalter für Anwendungssoftware dienen,
können hier definiert werden.
Gruppenverwaltung
Eine Gruppe ist eine Menge von Benutzern. Durch die Gruppe ergibt sich die
Möglichkeit, die Berechtigungen von Dateien so zu wählen, dass ein Team
gemeinsam auf Ressourcen zugreifen kann, ohne dass die Daten
gleich allen Benutzern öffentlich angeboten werden.
/etc/group definiert Gruppen
Die Verfahrensweise ist simpel. Die Gruppen werden in der Datei group
im Verzeichnis /etc verwaltet. Hinter dem Gruppennamen
stehen die Benutzerkennungen der Mitglieder der Gruppe. Eine Datei, die nur
für die Gruppe gedacht ist, wird durch den Befehl chgrp zum Eigentum
der Gruppe. Mit dem Befehl chmod werden die Zugriffsrechte der
Gruppe gesetzt.
Jeder Benutzer gehört
zu einer Standardgruppe, die in der /etc/passwd festgelegt wird. Das
bedeutet, dass Dateien, die er erzeugt, automatisch dieser Gruppe zugeordnet
werden. Der Benutzer kann aber in beliebig vielen anderen Gruppen eingetragen
sein. Dazu wird in der /etc/group sein Name an die Liste der
Mitglieder der jeweiligen Gruppe gehängt.
dialout:x:16:root,arnold,andrea
prog:x:101:arnold,ralf
|
Zur Gruppe dialout gehören root, arnold und andrea, zur Gruppe prog arnold
und ralf. An der dritten Stelle steht die eindeutige Nummer der Gruppe.
Die Definition eigener Gruppen sollte man bei 101 beginnen.
Bis hierher reichen die Gemeinsamkeiten der Systeme, die immerhin durchaus
eine klar geregelte Gruppenbildung ermöglicht.
Gruppe wechseln
Mit dem Befehl newgrp kann man die Gruppe wechseln. Es hat vom Syntax
Ähnlichkeiten mit dem Kommando su. Sofern der Benutzer in der
Zielgruppe
eingetragen ist, wird die reale Gruppe gewechselt. Gehört er nicht zur Gruppe
und die Gruppe besitzt ein Passwort, wird er danach gefragt. Ist er nicht in der
Gruppe per /etc/group eingetragen und die Gruppe hat kein Passwort, ist ein
Wechsel nicht möglich. Leider reagieren nicht alle Systeme gleich.
In einigen Systemen wird trotz des Eintrags in einer anderen Gruppe nach dem
Passwort gefragt, in anderen Gruppen ist ein Passwort gar nicht vorgesehen.
Gruppenpasswort
Obwohl in der zweiten Spalte der group-Datei Platz für ein Passwort vorhanden
ist, verfügen einige System über keinen Befehl dieses Passwort zu besetzen.
Unter Linux wird beispielsweise der Befehl gpasswd oder der normale
Befehl passwd mit der Option -g verwendet.
Der Befehl gpasswd ermöglicht, einen Gruppenadministrator, der dann
mit dem gleichen Befehl Mitglieder hinzufügen oder austragen kann.
Benutzerüberwachung
Das Überwachen von Benutzern hat keinen guten Klang. Normalerweise befasst
sich ein Administrator nicht sehr gern damit. Allerdings ist es wichtig, zu
wissen, welche Möglichkeiten existieren, wenn ein Benutzer das in ihn gesetzte
Vertrauen missbraucht.
Accounting
Accounting protokolliert Benutzeraktivitäten
Das Accounting ist das Berechnen der Kosten, die ein Benutzer auf dem System
verursacht. In Zeiten, da eine UNIX-Maschine ein Vermögen kostete, lohnte es
sich durchaus, den hochbezahlten Administrator berechnen zu lassen, welchen
Kostenanteil welcher Benutzer zu tragen hatte. Heute ist der Kostenaspekt
so weit zurückgegangen, dass ein Accounting fast nicht mehr durchgeführt wird.
In einer Hinsicht ist das Accounting aber immer noch interessant. Da dabei
alle Aktivitäten der Benutzer protokolliert werden, hat man ein Hilfsmittel
zur Hand, wenn auf der Maschine Unregelmäßigkeiten vorkommen.
accton startet und stoppt Accounting
Das Programm accton kontrolliert das Accounting. Wird ihm eine Datei
als Argument mitgegeben, startet das Accounting in diese Datei.
Als Datei wird üblicherweise acct oder pacct im
Verzeichnis /var/adm/ verwendet. Die Datei muss beim Aufruf
existieren.
In der Datei werden die Anzahl der Programmaufrufe, die verbrauchte CPU-Zeit,
IO Operationen und Speicherbenutzung für jeden Anwender protokolliert.
Das Accounting wird durch den Aufruf von accon ohne Parameter
abgeschaltet.
/var/adm/wtmp
Das Accounting der Verbindungszeit wird durch die Existenz der Datei
wtmp im Verzeichnis /var/adm ausgelöst.
Zur Auswertung der Daten dient das Programm ac. Die Option -u
wertet nach Person, -d nach dem Datum aus.
who und finger
Übersicht über aktuelle Aktivitäten
who zeigt an, welche Benutzer an welchen Terminals angemeldet sind.
finger zeigt alle angemeldeten Benutzer. Für jeden wird angezeigt,
seit wann
er angemeldet ist und seit wann keine Aktivität mehr feststellbar ist.
Auf manchen Systemen gibt es den Befehl whodo. Damit kann man sehen,
welches Programm welcher Benutzer aktuell gestartet hat.
/var/run/utmp
finger und who werten die Datei utmp aus, die sich
normalerweise in /var/run oder in /var/log befindet. Hier
sollen sich alle für das Einloggen
zuständigen Programme eintragen. Allerdings gibt es da Unterschiede in der
Interpretation. So macht xterm einen Eintrag, konsole,
die xterm-Variante von KDE, macht dagegen keinen Eintrag und begründet dies
damit, dass es sich bei einer xterm Sitzung ja nicht um einen weiteren
Benutzer des Systems handelt.
Kurzfristiger Benutzerwechsel: su
su wechselt die Benutzeridentität
Obwohl der Befehl su (set user) oft als Abkürzung für superuser
tituliert wird, dient er zum Wechseln der eigenen Identität in eine beliebige
andere auf der aktuellen Terminalsitzung. Wenn Sie su ohne
Parameter aufrufen, werden Sie nach dem Administrationspasswort gefragt und
werden root. Der Wechsel zum root wird normalerweise protokolliert.
su - bewirkt ein komplettes Login
Beim einfachen Aufruf von su werden die
profile-Skripten nicht durchlaufen und das Arbeitsverzeichnis nicht
gewechselt.
Ergebnis ist, dass man zwar root-Rechte hat, aber die Umgebung für die
Werkzeuge des root nicht gesetzt sind. Insbesondere stimmt die Variable PATH
nicht, so dass die Programme im sbin beispielsweise nicht gefunden
werden. Will man sich vollständig als root anmelden, verwendet man su -.
Dann wird ein regulärer Login vollzogen.
Benutzer ohne Anmeldemöglichkeit
Man kann su auch mit dem Namen eines anderen User als Parameter
angeben und
wechselt dann seine Identität. Normale Benutzer müssen dann natürlich das
Passwort des Zielusers angeben. Nur root muss das nicht. Auf diesem Weg
ist es möglich, User anzulegen, die kein Passwort besitzen. Solche Benutzer
können sich zwar nicht am Terminal anmelden, aber root kann mit su
deren Identität annehmen, da er kein Passwort braucht. Ein Beispiel ist der
User news, der für die Administration des Newsgroupservers
gebraucht wird. Dieser User kann einen Stern als
Passwort
bekommen. Auf diese Weise kann sich niemand über diesen Account von außen
anmelden. Die Newsgroup wird normalerweise sowieso vom Systemadministrator
geplegt. Er kann sich leicht per su news anmelden, ohne dass ein
Passwort existiert.
| Befehl | Wirkung |
| su | root-Login ohne Umgebungswechsel |
| su - | root-Login inklusive Umgebungswechsel |
| su - username | Login als anderer Benutzer |
Administrationsaufgaben starten: sudo
Es gibt diverse Aufgaben, für die man die Berechtigung von root braucht,
aber durchaus auch in die Hände einzelner Benutzer gelegt
werden können. Dennoch möchte man ihm deswegen gleich das Passwort von root
verraten. Diese Lücke schließt das Programm sudo.
Der Aufrufer stellt den Befehl sudo wird einem Kommando voran. Das
bewirkt, dass das Kommando
unter einer fremden User ID läuft, typischerweise der des Administrators.
Die einzelnen Befehle
und die Anwender, die sie benutzen dürfen, werden vorher festgelegt.
Jede Benutzung von sudo wird exakt protokolliert.
/etc/sudoers wird mit visudo editiert
Die Konfigurationsdatei /etc/sudoers hält die Information, welche
Benutzer den sudo verwenden dürfen. Die Datei wird nicht direkt,
sondern mit dem Programm visudo als root editiert.
Diese Datei wird in mehrere Gruppen eingeteilt. Die ersten Gruppen haben
nur den Zweck Makros zu bilden, um die Rechte einfacher zu beschreiben.
Als Benutzerprivilegien ist von vornherein eingetragen, dass root auf allen
Rechnern alles darf. Neu hinzu kommt, dass der Benutzer arnold seine
Datensicherung auf gaston ausführen darf.
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
arnold gaston = /root/msg
arnold gaston = /home/arnold/bin/cddasi
|
Da der Skript cddasi per cdrecord
auf den CD-Brenner zugreift, braucht man
die root Rechte. Man kann das Problem lösen, indem man dem Device des Brenners
freie Rechte mit chmod vergibt. Damit ist das Gerät für jeden zu jeder
Verwendung freigegeben. Man kann den in den Manpages von cdrecord
vorgeschlagenen Weg gehen und dem Befehl cdrecord das SUID-Bit setzen.
Alternative User-ID-Bit
Damit würde immerhin erreicht, dass der Zugriff auf den Brenner nur über die
Anwendung cdrecord kontrolliert erfolgen kann.
Die Freigabe per sudo ermöglicht aber sogar die Einschränkung auf
den Skript cddasi. Der Anwender darf mit dem Brenner also
ausschließlich seine Datensicherung duchführen. Er kann beispielsweise keine
Audio-CDs brennen. Des weiteren ermöglicht sudo, dieses Recht
einzelnen aufgeführten Anwendern zu gestatten. Und zu guter Letzt wird die
Verwendung des Befehls auch noch protokolliert.
Will arnold den Skript cddasi ausführen, gibt er das Kommando
mit vorangestellten sudo ein.
sudo fragt nun nach einem Passwort. Dies ist aber nicht das des root,
sondern das des angemeldeten Benutzers. Damit wird vermieden, dass jemand
die nicht geschlossene Konsole bei kurzfristiger Abwesenheit für priviligierte
Aufgaben nutzen kann.
Protokoll in der syslog-Datei
In der syslog-Datei (meist /var/log/messages) wird protokolliert, dass
arnold den Skript als root ausgeführt hat. Hier sind zwei Protokolleinträge
dargestellt. Der erste wurde ohne Berechtigung durchgeführt. Im zweiten wurde
der Eintrag in der sudoers eingetragen.
Mar 9 05:45:30 gaston sudo: arnold : command not allowed ; TTY=pts/5 ; PWD=/home/arnold ; USER=root ; COMMAND=/home/arnold/bin/cddasi
Mar 9 05:46:18 gaston sudo: arnold : TTY=pts/5 ; PWD=/home/arnold ; USER=root ; COMMAND=bin/cddasi
|
Makros können die sudoers verkürzen
Wie oben schon angedeutet, kann man in der sudoers auch mit Makros
arbeiten. Dabei können mehrere Benutzer, Maschinen und Kommandomakros
gebildet werden und in der Rechtevergabe verwendet werden.
User_Alias DEPUTIES = wim, wum, wendelin
Host_Alias SERVERS = gaston, asterix, silver
Cmnd_Alias HALT = /usr/sbin/halt, /usr/sbin/fasthalt
DEPUTIES SERVERS = HALT
|
Hier können alle Benutzer, die unter DEPUTIES aufgeführt sind, alle Server
herunterfahren.
sudoers im Netzwerk
Vielleicht ist es irritierend, dass in der Datei auch die
root-Rechte fremder Rechner festgelegt werden. Es ist natürlich nicht
möglich, auf einem Rechner festzulegen, welche Rechte ein Anwender auf einem
andern Rechner bekommt. Jeder Rechner kann seine root-Rechte nur selbst
vergeben. Der
Grund, dass hier auch Hostnamen genannt werden, hat damit zu tun, dass die
Datei sudoers per NIS verteilt
werden kann und dann jeder Rechner anhand des Rechnernamens nur den Teil
übernimmt, der für ihn gedacht ist.
Liste der Kommandos
Durch Aufruf von sudo -l kann ein Benutzer sehen, welche Kommandos
er unter sudo ausführen kann.
Das Programm sudo hat noch vielfältige Optionen. So können für
einzelne Kommandos oder Gruppen die Passworteingabe abgeschaltet werden.
Es kann konfiguriert werden, dass das Protokoll per Mail versandt wird.
Diese Informationen findet man in den umfangreichen Manpages von sudo
und sudoers.
Pseudobenutzer zum Shutdown
Bei einer Workstation kann es wichtig sein, dass auch nicht priviligierte
Anwender die Maschine herunterfahren können.
Der Vorgang sollte dann so einfach wie möglich sein, denn je umständlicher
das Herunterfahren ist, desto eher besteht die Neigung, die Maschine einfach
abzuschalten.
User shutdown
Eine sehr einfache Methode ist es, einen Benutzer anzulegen, dessen einziger
Zweck das Herunterfahren ist. Der Benutzer soll shutdown heißen und damit
es sich jeder merken kann, bekommt er auch das Passwort shutdown.
Nachdem er angelegt wurde, wird in die Datei .profile im Heimatverzeichnis ganz zu Anfang eine einzige Zeile geschrieben:
sudo shutdown
Damit wird direkt nach dem Anmelden der shutdown aufgerufen. Da dies
nur dem Administrator root erlaubt ist, wird hier sudo verwendet.
Nun muss der Benutzer shutdown noch einen Eintrag in die Datei /etc/sudoers bekommen, der ihm erlaubt, den besagten shutdown auszuführen.
shutdown localhost=NOPASSWD:/sbin/shutdown -h 0
|
Das Attribut NOPASSWD ist wichtig, da die Ausführung von .profile
nicht interaktiv ist. Damit wird für das folgende Kommando kein Passwort
abgefragt.