Druckversion

Die Benutzerverwaltung

Übersicht Weiter

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 Datei /etc/passwd Zurück Anfang Weiter

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):

Username: Password: UID: GID: Info: Home: Shell

Die Einträge bedeuten:

Username

Druckbare Zeichen, meist Kleinbuchstaben

Password

Leer Login ohne Passwortabfrage
x Passwort steht in /etc/shadow sonst Verschlüsseltes Passwort

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:

  • Vollständiger Name des Benutzers
  • Telefonnummer des Benutzers
  • Zimmernummer des Benutzers

Diese Angaben werden von zahlreichen Programmen wie finger, mail abgefragt. Zusätzlich können, per Komma getrennt, 3 weitere Angaben enthalten sein:

  • umask=... - Die Maske für neu erstellte Dateien
  • pri=... - Ein Nice-Faktor für Prozesse
  • ulimit=... - Verschiedene Beschränkungen der Systemressourcen

Home

Startverzeichnis nach Login

Shell

Default-Shell

Die Datei /etc/shadow Zurück Anfang Weiter

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:

Username: Password : DOC : MinD : MaxD: Warn : Exp: Dis : Res

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

Konvertieren der Einträge Zurück Anfang Weiter

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:

  1. Sie verwenden noch immer das herkömmliche Passwortsystem, d.h. mit Speicherung der verschlüsselten Passwörter in der /etc/passwd, und möchten nun auf das Shadow-Passwort-System umstellen.
  2. Sie sind ein Verfechter der Konsole und verwalten ihre Benutzer in der /etc/passwd von Hand.
  3. Aus irgendeinem Grund möchten Sie vom Shadow-Passwort-System auf das herkömmliche zurückstellen.

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:

root@sonne> pwconv

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.

root@sonne> pwunconv

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:

root@sonne> pwck
user man: directory /var/catman does not exist
user fixadm: program /bin/ksh does not exist
user fib: program /bin/ksh does not exist
pwck: no changes

Das Verzeichnis /etc/skel Zurück Anfang Weiter

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:

root@sonne> ls /etc/skel
root@sonne> ls -a /etc/skel
.              .dayplan.priv  .kermrc     .tex            .xinitrc
..             .dvipsrc       .lyxrc      .uitrc.console  .xserverrc.secure
.Xdefaults     .emacs         .muttrc     .uitrc.vt100    .xsession
.Xmodmap       .exrc          .nc_keys    .uitrc.vt102    .xtalkrc
.Xresources    .gimprc        .profile    .uitrc.xterm    .zsh
.bash_history  .grok          .seyon      .urlview
.bashrc        .hotjava       .stonxrc    .xcoralrc
.dayplan       .jazz          .susephone  .xfm

Anlegen neuer Benutzer Zurück Anfang Weiter

Das Anlegen neuer Benutzer kann prinzipiell auf drei Wegen erfolgen:

  • mittels reiner Handarbeit
  • mit Hilfe der allgemeinen Werkzeuge
  • durch Verwendung distributionseigener Verwaltungstools

Die Handarbeit

  1. Zunächst bearbeitet man mit einem Editor die Datei /etc/passwd. Als Editor eignet sich vipw, da das Kommando gleichzeitig die notwendige Dateisperre setzt und somit eine Mehrfachbearbeitung ausschließt (der Editor arbeitet tatsächlich auf einer Kopie und schreibt erst beim Speichern das Original). Der sich hinter dem Kommando verbergende Editor kann mittels der Shellvariable VISUAL bzw. EDITOR eingestellt werden. Erst wenn beide Variablen nicht gesetzt sind, wird der vi verwendet. Bei manuellem Eintrag ist insbesondere auf die Eindeutigkeit von Benutzerkennung und die UID zu achten.

    root@sonne> vipw
    ...
    user:x:501:100:Testuser:/home/user:/bin/bash
    newuser:x:502:100:Neuer Benutzer:/home/newuser:/bin/bash
    -- INSERT --                                47,55         Bot
  2. Bei Verwendung des Shadow-Passwort-Systems ist nun die Datei /etc/shadow anzupassen. Dies geschieht am einfachsten mittels eines Aufrufs von pwconv. Um von den Default-Einstellungen abweichende Werte zu verwenden, kann auch eine manuelle Bearbeitung notwendig sein. Hier kann das Kommando vipw -s genutzt werden.

    root@sonne> pwconv
  3. Das Passwort des Benutzers ist zu setzen.

    root@sonne> passwd newuser
    New password:
    New password (again):
    Password changed


  4. Das Heimatverzeichnis des neuen Benutzers ist anzulegen. Um dem Anwender eine voreingestellte Konfiguration zur Verfügung zu stellen, sollte der Inhalt des Verzeichnisses /etc/skel in dessen Home kopiert werden.

    root@sonne> mkdir /home/newuser
    root@sonne> cp -R /etc/skel ~newuser

Allgemeine Werkzeuge

Hierbei 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.

Aufruf:   useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir]] [-p passwd] [-s shell] [-u uid [ -o]] login

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:

root@sonne> useradd -m -u 502 -c "Neuer Benutzer" newuser
root@sonne> passwd newuser
New password:
New password (again):
Password changed

Alle nicht explizit angegebenen Werte werden mit Default-Werten belegt, die in der Datei /etc/default/useradd zu finden sind:

user@sonne> cat /etc/default/useradd
GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=10000
SHELL=/bin/bash
SKEL=/etc/skel

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:

root@sonne> useradd newuser -p 'mycrypt Klartext-Passwort Salz'

Eine Beispielimplementierung des Programmes »mycrypt« finden Sie im Anhang Skriptsammlung.

Distributionseigene Werkzeuge

Manchen 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:

Nutzerverwaltung mit userconf

Abbildung 1: Nutzerverwaltung mit userconf

SuSE integriert die Benutzerverwaltung in ihr Adminstrationswerkzeug Yast. Die Eingabemaske erreicht man über Administration des Systems Benutzerverwaltung

Nutzerverwaltung mit Yast

Abbildung 2: Nutzerverwaltung mit yast1

Löschen eines Benutzers Zurück Anfang Weiter

Die Handarbeit

  1. Der Eintrag des Benutzers wird aus der Datei /etc/passwd entfernt. Dies geschieht am besten wiederum mit dem Kommando »vipw«.
  2. Der Eintrag des Benutzers wird aus der Datei /etc/shadow entfernt. Entweder löscht man ihn durch Editieren der Datei (»vipw -s«) oder durch Aufruf von »pwconv«, so dass die Datensätze der Shadowdatei mit denen der /etc/passwd abgeglichen werden.
  3. Das Heimatverzeichnis des Benutzers ist zu löschen. Denken Sie an eine vorherige Archivierung!

Allgemeine Werkzeuge

Bei 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!

root@sonne> userdel -r newuser

Distributionseigene Werkzeuge

Die zum Anlegen neuer Benutzer gedachten Werkzeuge lassen sich ebenso zu Entfernen dieser benutzen. Verwenden Sie also »userconf« bei RedHat-Systemen und »yast« bei SuSE.

Modifzieren eines Benutzereintrags Zurück Anfang Weiter

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:

user@sonne> cat /etc/shells
/bin/ash
/bin/bash
/bin/bash1
/bin/csh
/bin/false
/bin/sh
/bin/tcsh
/usr/bin/csh
/usr/bin/ksh
/usr/bin/passwd
/usr/bin/tcsh
/usr/bin/zsh

Die Liste kann bei den einzelnen Installationen differieren, dennoch sollte man als normaler Benutzer zwei der Einträge nicht verwenden.

  • /bin/false Diese Shell verhindert das Einloggen eines Benutzers in das System; er landet immer wieder bei der Anmeldeaufforderung (nicht bei grafischem Login).
  • /usr/bin/passwd Der Benutzer wird beim nächsten Anmeldevorgang zum Ändern seines Passwortes aufgefordert. Anschließend wird die Sitzung beendet (nicht bei grafischem Login).

Zum Ändern der Shell ist unbedingt deren vollständiger Zugriffspfad anzugeben, da zum Zeitpunkt des Logins noch keine PATH-Variable existiert:

user@sonne> chsh -s /bin/tcsh
Password:

Ä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.

newuser@sonne> grep ^newuser /etc/passwd
newuser:x:502:100:Neuer Benutzer:/home/newuser/newuser:/bin/bash

newuser@sonne> chfn -r 0815 -w 0815/110
Password
newuser@sonne> grep ^newuser /etc/passwd
newuser:x:502:100:Neuer Benutzer,0815,0815/110,:/home/newuser/newuser:/bin/bash

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:

root@sonne> chage -l root
Minimum:        0
Maximum:        10000
Warning:        -1
Inactive:       -1
Last Change:            Jan 27, 2000
Password Expires:       Never
Password Inactive:      Never
Account Expires:        Never

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.

Sonderrechte für einen Benutzer Zurück Anfang Weiter

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.

Aufruf:   sudo [ OPTIONEN ] KOMMANDO

Wichtige Optionen sind:

-l

Gibt eine Liste der Kommandos aus, die der Benutzer im Auftrag von Root verwenden darf:

user@sonne> sudo -l
Sorry, user user is not allowed to execute "list" as root on sonne.

-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.

# Benutzer Alias Spezifikation
User_Alias <USER>=...

# Rechner Alias Spezifikation
Host_Alias <HOSTS>=...

# Zielbenutzer Alias Spezifikation
Runas_Alias <RUN_AS>=...

# Kommando Alias Spezifikation
Cmnd_Alias <COMMAND>=...

# Benutzer Spezifikation
...

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:

# Benutzer Spezifikation
<USER> <HOSTS>=[(<RUN-AS>)][NOPASSWD:]<COMMAND>[,<COMMAND>]

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.

# Benutzer Alias Spezifikation
User_Alias LOCALUSER=tux,user,newbie
User_Alias NETGROUP=+intranet,tux

# Zielbenutzer Alias Spezifikation
Runas_Alias WORKAS=operator,%printer

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.

# Rechner Alias Spezifikation
Host_Alias SOMEHOSTS=erde,sonne,melmac.outside.all
Host_Alias NETWORKS=localnet,194.168.17.0/255.255.255.127
Host_Alias MIXED=erde.galaxis.de,128.233.1.12,linuxnet

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.

# Kommando Alias Spezifikation
Cmnd_Alias BOOT=/sbin/shutdown -r now,/sbin/reboot
Cmnd_Alias USERADMIN=/usr/sbin/vipw "",/usr/sbin/vigr ""
Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh,/bin/ksh

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:

# Benutzer Alias Spezifikation
User_Alias LOCALUSER=tux,user,newbie
User_Alias NETGROUP=+intranet,tux

# Zielbenutzer Alias Spezifikation
Runas_Alias WORKAS=operator,%printer

# Rechner Alias Spezifikation
Host_Alias SOMEHOSTS=erde,sonne,melmac.outside.all
Host_Alias NETWORKS=localnet,194.168.17.0/255.255.255.127
Host_Alias MIXED=erde.galaxis.de,128.233.1.12,linuxnet

# Kommando Alias Spezifikation
Cmnd_Alias REBOOT=/sbin/shutdown -r now,/sbin/reboot
Cmnd_Alias HALT=/sbin/shutdown -h now,/sbin/halt
Cmnd_Alias USERADMIN=/usr/sbin/vipw "",/usr/sbin/vigr ""
Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh,/bin/ksh

# Benutzer Spezifikationen
# tux darf alles
tux      ALL = (ALL) ALL

# notux erhält Root-Rechte, darf aber den Rechner nicht booten. Und damit er diese Beschränkung durch Öffnen einer neuen Shell nicht umgehen kann, werden diese ausgeklammert (siehe Anmerkungen im Anschluss)
notux       ALL = (ALL) ALL,!REBOOT,!HALT,!SHELLS

# Lokale Benutzer dürfen auf Rechner "sonne" das Modem ohne Passwortangabe benutzen (dies stellt insofern eine Alternative zu den Suid-Bits dar, da die Berechtigung detaillierter konfiguriert werden können und die Benutzung protokolliert wird)
LOCALUSER sonne = NOPASSWD: /usr/bin/wvdial

# "newbie" darf auf allen Rechnern in der Gruppe NETGROUP ein "su" mit allen Argumenten außer "root" ausführen. Oder anders formuliert, er kann mit su jeder Nutzer werden ausgenommen root.
newbie    NETGROUP = /bin/su ?*,!/bin/su *root*

# Jeder darf auf jedem Rechner ohne Eingabe eines Passwortes den Automounter zum Unmounten der nicht benutzten Dateisysteme auffordern
ALL       ALL = NOPASSWD:/usr/bin/killall -USR1 automount

Anmerkungen:

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 sperren Zurück Anfang Weiter

Zugang allen Benutzern verwehren

Manchmal 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 verwehren

Der 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:

  • Mit Hilfe des Kommandos passwd kann Root das Passwort des Benutzers als ungültig kennzeichnen:

    root@sonne> passwd -l user
    Password changed.
    root@sonne> grep user: /etc/shadow
    user:!HbFHWOedOYXwI:11103:0:99999:7:::


    Dem verschlüsselten Passwort wurde ein Ausrufezeichen vorangestellt, somit ist das alte Passwort nutzlos. Der Aufruf:

    root@sonne> passwd -u user
    Password changed.


    entfernt das Ausrufezeichen wieder.
  • Mit einem Editor kann Root natürlich manuell das Passwort in der Shadowdatei »versalzen«.
  • Die Shell des Benutzers kann auf /bin/false geändert werden:

    root@sonne> chsh -s /bin/false user


    Das funktioniert allerdings nur, wenn das System für Konsolenlogin (Runlevel!) konfiguriert ist. Unter einem grafischen Login hätte ein solcher Benutzer weiterhin Zugang. Allerdings kann er dann keine Shell (keine Terminalanwendungen) mehr starten.
Passwort vergessen - was nun? Zurück Anfang

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:

# Das Bootimage im Beispiel heißt »vmlinuz«
Lilo: vmlinuz init=/bin/sh

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:

# Wir sind Administrator des Rettungssystems
root@sonne> mount /dev/hda2 /mnt

root@sonne> chroot /mnt passwd
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully

root@sonne> reboot

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?
Startseite Nächste Seite Nächstes Kapitel Vorherige Seite Kapitelanfang