UNIX Benutzerverwaltung
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:

mkdir /home/meier

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.

passwd meier

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:

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.

chmod 4755 cdrecord

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  /bin/cddasi

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 -h 0

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.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru?