Aus Linux-Magazin 05/2007

LPIC-1-Vorbereitung - Teil 10: Benutzer und Gruppen, Variablen, Cron und At

© 1afoto, Fotolia

Die LPI-Prüfung deckt viele Themen ab – echtes Handwerkszeug für den täglichen Gebrauch finden Systemverwalter in Topic 111. Unter der Überschrift "Administrative Tätigkeiten" geht es um Benutzer- und Gruppenverwaltung, Umgebungsvariablen und die Job-Automatisierung mit Cron und At.

Kein Linux-PC kommt ohne Accounts aus – schon die Level-1-Prüfung fordert recht tief gehende Kenntnisse rund ums Anlegen und Verwalten der Konten. Besonders wichtig sind hier »/etc/passwd« und »/etc/shadow«. Als LPI-Prüfling müssen Sie nicht nur wissen, welche Informationen in welcher Datei stehen, sondern die exakte Reihenfolge kennen.

Benutzer und Gruppen

Zum Glück ist die Datei »/etc/passwd« recht überschaubar: Die enthaltenen Zeilen haben den Aufbau »Accountname:Passwort:UID:GID:GECOS/Realname:Homedir:Shell«. Bereits anhand weniger markanter Merkmale entlarven Sie hier schnell falsche Antworten im Multiple-Choice-Test von LPI: Die Einträge beginnen mit dem Accountnamen und enden mit der Login-Shell (und nicht etwa mit dem Homeverzeichnis). Achten Sie bei den vorgegebenen Antworten auch darauf, ob sie das (gegebenenfalls leere) Passwortfeld und das Feld für den Realnamen (GECOS, siehe Kasten “Stichwort GECOS”) enthalten.

Stichwort GECOS

Der Begriff GECOS stammt von Unix-Systemen aus den 70er Jahren und steht für General Electric Comprehensive Operating Supervisor. Je nach Unix-Version wurden in diesem Feld verschiedene Informationen zur Identifizierung des Accounts abgelegt. Da diese Daten unter Linux nicht nötig sind, nutzt man das Feld häufig zum Speichern von Name, Büronummer und Durchwahl.

Um diese Daten komfortabel zu bearbeiten, verwenden Sie das Tool »chfn«; mit »finger« kann sie jeder Benutzer abrufen, sofern auf dem Rechner ein »finger«-Daemon läuft.

Etwas ungewohnter ist für viele Administratoren die Datei »/etc/shadow«. Die genaue Bedeutung der Zahlen in den hinteren Spalten ist oft unklar, zudem ist die Reihenfolge der Zahlenfelder schwer einzuprägen. Tabelle 1 erklärt die einzelnen Felder der Shadow-Datei.

Tabelle 1: Aufbau
eines Shadow-Eintrags

 

Pos.

Beispiel

Bedeutung

1

test

Benutzername

2

$2a$10…

Passwort-Hash (in der Dokumentation verschlüsseltes
Passwort genannt)

3

13555

Datum der letzten Passwortänderung (in Tagen seit dem
01.01.1970)

4

Minimales Passwortalter in Tagen (verhindert häufige
Passwortwechsel)

5

100

Maximales Passwortalter in Tagen (verhindert zu hohes Alter des
Passworts)

6

7

Wann erhält der Benutzer eine Warnung, dass sein Passwort
abläuft (in Tagen vor Erreichen des Ablauftermins)?

7

(leer)

Wann wird ein Account mit abgelaufenem Passwort deaktiviert (in
Tagen ab Erreichen des Ablauftermins)?

8

13787

Expiry-Datum für den Account, der Beispielwert entspricht
dem 01.10.2007

9

(leer)

(reserviert)

Die Shadow-Datei birgt manche nützliche Funktion: Accounts können Sie von vornherein zeitlich befristen oder automatisch durch das System sperren lassen, wenn sich der Inhaber längere Zeit nicht einloggt und sein Passwort nicht aktualisiert. Das beugt wirksam toten Accounts vor und minimiert damit ein potenzielles Sicherheitsrisiko.

Die Felder und deren Bedeutungen müssen Sie für die Prüfung in der richtigen Reihenfolge beherrschen – das ist Fleißarbeit. Suchen Sie sich ein paar Eselsbrücken oder entdecken eine für Sie schlüssige Logik der Reihenfolge, denn die Felder sind nicht ganz beliebig angeordnet. Im LPI-Test kommen Ihnen die Multiple-Choice-Fragen zugute. Auch dort erkennen Sie mit gesundem Halbwissen nach dem Ausschlussverfahren viele Antworten schnell als falsch, was Ihnen die Möglichkeit eröffnet, qualifiziert zu raten.

Neben »passwd« und »shadow« gehören noch »/etc/group« und »/etc/gshadow« zu den wichtigen Dateien der Accountverwaltung, wobei manche Distributionen auf »gshadow« verzichten und Gruppenpasswörter in »group« speichern.

Verwaltungshelfer

Theoretisch ließen sich Accounts allein durch Bearbeiten dieser Dateien anlegen, doch auch der Profi-Administrator wird die Standardtools »chage«, »gpasswd«, »groupadd«, »groupdel«, »groupmod«, »passwd«, »useradd«, »userdel« und »usermod« zu schätzen wissen. Von allen hier genannten Tools sollten Sie die Manpages studieren, um die Aufrufparameter zu kennen, die für die normale Accountverwaltung erforderlich sind.

  • »useradd -m Username« legt auch gleich das
    Homeverzeichnis des Nutzers an, was ohne diese Option nicht
    geschieht.
  • »useradd -r Username« legt Accounts mit einer
    System-ID an, also beispielsweise für Daemons und andere
    Serverprozesse, die sich üblicherweise nicht einloggen.

Wichtige Informationen, die »useradd« in die Datei »/etc/passwd« schreibt, können Sie hier auch gleich per Parameter angeben: Ein besonderer Pfad zum Homeverzeichnis (»-d«), eine spezielle Login-Shell (»-s«), User-ID (»-u«) oder Gruppen-ID (»-g«) und der Realname des Nutzers im GECOS-Feld (»-c« für Comment) sind auf diese Weise schnell konfiguriert. Abbildung 1 enthält einen Ausschnitt der »useradd«-Manpage, der zeigt, dass das Tool zahlreiche weitere Optionen bietet.

LPI-Aufgabengruppen

Das Linux Professional Institute gliedert die Prüfungsfragen in Aufgabengruppen. Dieser Artikel erklärt die Abschnitte:

  • 1.111.1: Benutzer-, Gruppenkonten und zugehörige
    Systemdateien verwalten
  • 1.111.2: Optimieren der Benutzerumgebung und systemweiter
    Umgebungsvariablen
  • 1.111.4: Automatisieren von Systemadministrationsaufgaben durch
    später laufende Jobs
Abbildung 1: Die Tools zur Benutzer- und Gruppenverwaltung besitzen zahlreiche Optionen, wie hier die Manpage zu »useradd« zeigt. Die meisten sind für die LPI-Prüfung aber irrelevant.

Abbildung 1: Die Tools zur Benutzer- und Gruppenverwaltung besitzen zahlreiche Optionen, wie hier die Manpage zu »useradd« zeigt. Die meisten sind für die LPI-Prüfung aber irrelevant.

Einen bestehenden Account bearbeiten Sie mit »usermod«, viele Parameter dieses Programms sind mit denen von »useradd« identisch. Komfortabel ist die Möglichkeit, mit »-m« das Homeverzeichnis zu verschieben, wenn Sie mit »usermod« einen Account umbenennen. Das dritte Tool im Bunde, »userdel«, ist vergleichsweise überschaubar. Die einzige interessante Option gilt der Frage, ob das Homeverzeichnis beim Löschen eines Accounts erhalten bleibt (Standard) oder verschwindet (»-r«).

Die drei Tools »groupadd«, »groupdel« und »groupmod« müssen Sie ebenfalls der Funktion nach kennen. Ein schneller Blick in die Manpages zeigt: Soweit die von »useradd« & Co. bekannten Aufrufparameter hier Sinn ergeben, sind sie identisch benannt.

Etwas Aufmerksamkeit sollten Sie noch dem recht unbekannten Tool »chage« (change aging) schenken. Hier schließt sich der Kreis zu den Feldern der Datei »/etc/shadow«, denn darüber legen Sie fest, wie und wann Accounts ungültig werden (expiry). Für den Zweck der LPI-Vorbereitung reicht es jedoch aus, diese grundlegende Aufgabe dem Tool zuordnen zu können.

Variablen

Variablen haben einen ganz wesentlichen Einfluss auf das Verhalten des Systems. Das Kommando »env« listet alle gesetzten Umgebungsvariablen. Neben den vielen aus technischen Gründen vorhandenen Variablen finden sich dort auch einige nützliche Dinge:

  • »HISTSIZE« legt fest, wie viele Befehle die Bash in
    der History speichert.
  • »PAGER« gibt das Programm an, mit dem viele
    Anwendungen Textdateien anzeigen – in der Regel
    »more« oder »less«, je nach
    Distribution.
  • »EDITOR« verweist auf den vom Anwender bevorzugten
    Editor: Der Standardeditor ist »vi«; wer ihn seinen
    Usern nicht zumuten will, ändert die Variable auf
    »joe« oder »pico«, sodass Anwender ohne
    »vi«-Kenntnisse beim Aufruf von »crontab
    -e« nicht gleich verzweifeln.
  • In »TERM« steht ein Profilname für die
    richtige Ansteuerung des Terminals. Diese Variable ist
    beispielsweise dann wichtig, wenn Sie sich via »ssh«
    auf anderen Rechnern einloggen, damit diese die richtigen
    Kontrollzeichen für Ihr Terminalprogramm schicken. Sonst
    funktionieren zum Beispiel Farbdarstellung, Hervorheben durch
    Inversion und grafische Sonderzeichen nicht.

Variablen sollten Sie in der Regel exportieren, denn nur dann erben Subshells oder andere aus der Shell gestartete Programme diese Belegungen. Setzen Sie eine Variable einfach mit »VARIABLE=Wert«, gehört sie noch nicht zur eigentlichen Umgebung (ist also keine Umgebungsvariable, sondern nur eine Shellvariable). Ein Export ist sowohl sofort bei der Zuweisung über »export EDITOR=joe« als auch nachträglich möglich:

EDITOR=joe
export EDITOR

»EDITOR« ist hier der Name der Variablen. Da es nicht um ihren Wert geht, geben Sie diese im »export«-Aufruf ohne Dollarzeichen an.

Der Anwender hat das letzte Wort

Um Variablenbelegungen für die Anwender dauerhaft zu speichern, tragen Sie diese in »/etc/profile« (oder besser »/etc/profile.local«) systemweit ein. Beim Login des Benutzers liest die Shell diese Dateien ein. Doch das heißt nicht, dass sich jeder Anwender den Vorschlägen des Administrators zu fügen hat. Über Einträge in der Datei ».profile« im Homeverzeichnis überschreibt jeder Nutzer die Default-Einträge des Administrators auf Wunsch. Der Anwender hat also das letzte Wort.

Für einige Verwirrung sorgt oft die Datei »/etc/bash.bashrc«, auf manchen Systemen auch nur »/etc/bashrc« genannt. Sie ist eigentlich für Bash-spezifische Einstellungen vorgesehen, auch wenn Distributionen wie Suse sie mittlerweile für verschiedene Shells verwenden. In der Praxis lädt oft das Skript »/etc/profile« diese globale Bash-Konfiguration nach. Neben den genannten Skriptdateien gibt es noch weitere; einige führt die Shell nur in bestimmten Situationen aus. Das steht detailliert im LPI-Artikel der vorigen Ausgabe [2].

Nehmen Sie sich etwas Zeit und studieren Sie beide Dateien. Sie werden dort noch so manche interessante Einstellungsmöglichkeit entdecken und zugleich merken, wie trivial Linux viele Dinge löst, beispielsweise die Festlegung des Shellprompts über die Variablen »PS1«, »PS2« und »PS4«.

Einen Rahmen schaffen

Die LPI-Objectives erwähnen in diesem Themenbereich auch das Verzeichnis »/etc/skel«, es ist das Musterverzeichnis, das »useradd« verwendet, wenn es mit der Option »-m« ein neues Homeverzeichnis erzeugt. Hier bereitet der Administrator bequem Einstellungen für neue Anwender vor, beispielsweise um am Webbrowser oder Mailclient Anpassungen vorzunehmen. Auch für Verzeichnisstrukturen oder Desktop-Icons, die jeder neue Account erhalten soll, ist »/etc/skel« der richtige Ort.

Änderungen in diesem Verzeichnis wirken sich nur auf anschließend neu angelegte Accounts aus, sie ändern keine Anwendereinstellungen von bereits vorhandenen Benutzern.

Felder der Crontab

“Nennen Sie alle anzugebenden Felder beim Aufruf von »crontab -e« in der richtigen Reihenfolge.” Eine LPI-Frage wie diese müssen Sie ohne Zögern beantworten. Im Prinzip sind die Bedeutungen der Crontab-Felder aber leicht zu erraten: Minute, Stunde, Tag des Monats, Monat – doch wie steht es mit dem Jahr? Gehört auch eine Jahreszahl in den Crontab-Eintrag? Wer hier raten muss, verschenkt unnötig wertvolle Punkte. Die Antwort ist: Nein, das Jahr ist nicht in dem Eintrag enthalten. Cron hilft also dabei, den Hochzeitstag nicht zu vergessen, aber die goldene Hochzeit können Sie damit nicht vormerken.

Es gibt noch ein weiteres Crontab-Feld, das oft unbeachtet bleibt: Über den Tag der Woche regeln Sie beispielsweise bequem, dass Backups nur am Wochenende laufen. Am Schluss folgt das aufzurufende Kommando – insgesamt gibt es also sechs Felder in den privaten Crontabs der Anwender, wie Abbildung 2 an einem Beispiel zeigt.

Abbildung 2: Der Befehl »crontab -l« gibt die private Crontab eines Benutzer aus. LPI-Kandidaten müssen in der Lage sein, alle Ausführungstermine komplizierter Einträge dieser Datei zu bestimmen.

Abbildung 2: Der Befehl »crontab -l« gibt die private Crontab eines Benutzer aus. LPI-Kandidaten müssen in der Lage sein, alle Ausführungstermine komplizierter Einträge dieser Datei zu bestimmen.

Wochenstart am Montag

Für den Wochentag sind verschiedene Kodierungen möglich: Neben den englischen Tageskürzeln (Mon, Tue, Wed, Thu, Fri, Sat, Sun) dürfen hier auch Zahlen stehen, doch welcher Tag ist der erste? In Deutschland beginnt die Woche mit dem Montag, in anderen Ländern startet sie schon am Sonntag. (Daher bietet zum Beispiel das Kalender-Tool »cal« die Optionen »-m« für Montag und »-s« für Sonntag, je nach Wunsch stehen dann in der Übersicht Montage oder Sonntage in der ersten Spalte.)

Informatiker lösen dieses Problem auf ihre Art und Weise: Den Sonntag repräsentiert wahlweise eine 0 oder eine 7. Nun hat jeder Anwender die Wahl, die Woche mit Sonntag oder Montag beginnen zu lassen, und zählt dazu von 0 bis 6 beziehungsweise von 1 bis 7.

Periodisch

Auch die Angaben von Perioden ist zulässig: Die Zeitangabe »*/5« in der Minutenspalte etwa sorgt dafür, dass Cron den Prozess in jeder fünften Minute startet, also in der 0., 5., 10., 15. und so weiter. Dabei würde Cron nach dem Booten des Servers unmittelbar mit dem Kommandozyklus beginnen, sobald eine dieser Minuten erreicht ist.

Eine Angabe von »4/5« hingegen baut den Fünf-Minuten-Rhythmus auf Basis der Startminute 4 auf. Cron führt das Kommando dann in der 4., 9., 14., 19. Minute und so weiter aus. Interessantes Detail: Da die Startminute exakt angegeben ist, beginnt ein frisch gebooteter Server erst ab Erreichen dieser Minute mit dem Aufrufen des Befehls, auch wenn er dazu im ungünstigsten Fall 59 Minuten warten müsste. Das ist der Unterschied zwischen »*/5« und »0/5«.

Wer Cron-Einträge erstellen darf, steht in den Dateien »/etc/cron.allow« und »/etc/cron.deny«. Wenn es Letztere gibt und ein Benutzername darin enthalten ist, verwehrt ihm das System den Aufruf von »crontab -e«. Umgekehrt gilt: Wenn die Datei »cron.allow« vorhanden ist, muss ein Benutzer dort genannt sein, um Cron-Einträge erzeugen zu dürfen. Im Zweifel hat »cron.allow« übrigens Vorfahrt – »man 1 crontab« beschreibt die Prioritäten im Detail.

Wie so häufig gibt es neben den privaten Einstellungen der Anwender auch eine systemweise Cron-Tabelle für den Administrator. Sie heißt »/etc/crontab« und hat vor dem Kommando noch ein zusätzliches Feld für die User-ID, mit der Cron den Befehl ausführen soll. Einträge in der globalen Crontab bestehen also aus sieben Feldern.

Cron vs. Anacron

Der Standarddienst Cron hat mit Anacron einen großen Bruder. Konfigurationsdetails sind hier für die Level-1-Prüfung nicht weiter notwendig, wichtig ist der grundlegende Unterschied zwischen beiden Varianten: Konnte das System einen Befehl nicht ausführen (beispielsweise, weil der Computer zum Zeitpunkt eines geplanten Backups ausgeschaltet war), holt »anacron« diese verpassten Kommandos umgehend (nach dem Booten) nach; »cron« hingegen würde die Kommandos erst beim nächsten regulären Erreichen des eingestellten Termins ausführen, sodass bei ausgeschaltetem Rechner beispielsweise Backups ersatzlos entfallen würden. Mehr zu Cron und Anacron verrät ein älterer Linux-Magazin-Artikel [3].

Der Wecker: At

Ein weiteres Tool komplettiert die Möglichkeiten, zeitgesteuert Befehle auszuführen: »at« startet Kommandos zur hinterlegten Uhrzeit, anders als Cron jedoch nur einmalig. Damit bereiten Sie beispielsweise bequem den einzelnen nächtlichen Aufruf eines Wartungsskripts vor oder generieren eine Erinnerungsmail für einen wichtigen Nachmittagstermin. »atq« (at queue) listet alle Kommandos in der Pipeline auf und verschafft damit einen Überblick über die Jobs, die noch anstehen. Überlegen Sie es sich anders, entfernen Sie mit »atrm« (at remove) Jobs aus der Warteschlange.

Mehr LPI-111

Zum LPI-Topic 111 gehören noch weitere Themen wie Logdateien, Datensicherung und das Verwalten der Systemzeit. Im nächsten Linux-Magazin finden Sie den zweiten Teil dieser Übersicht über administrative Aufgaben. (hge)

Infos

[1] LPI-Seite mit den Prüfungsinhalten: [http://www1.lpi.org/de/obj_102.html]

[2] Hans-Georg Eßer, “Großer Shell-Atlas”: Linux-Magazin 04/07, S. 78

[3] Marc André Selig, “Pünktlich wie die Feuerwehr”: Linux-Magazin 11/04, S. 60, [https://www.linux-magazin.de/heft_abo/ausgaben/2004/11/puenktlich_wie_die_feuerwehr]

[4] Anacron: [http://anacron.sourceforge.net]

Der Autor

Peer Heinlein ist seit über sechs Jahren LPI-Trainer und hat neben dem LPIC-1-Buch bei Open Source Press noch zwei weitere Bücher über Postfix und Snort veröffentlicht.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben