FreeBSD ermöglicht es mehreren Benutzern, den Computer zur selben Zeit zu benutzen. Es kann immer nur ein Benutzer vor der Konsole sitzen, aber es können sich beliebig viele Benutzer über das Netzwerk am System anmelden. Jeder Benutzer muss einen Account haben, um das System benutzen zu können.
Nachdem Sie dieses Kapitel gelesen haben, werden Sie
die verschiedenen Account-Typen von FreeBSD kennen,
wissen, wie Sie Accounts angelegen, verändern oder löschen,
wissen, wie Sie Limits für einen Benutzer oder eine Gruppe setzen, um beispielsweise Ressourcen, wie Speicher oder CPU-Zeit einzuschränken,
wissen, wie Sie Gruppen erstellen und Benutzer zu diesen Gruppen hinzufügen.
Jeder Zugriff auf das FreeBSD-System geschieht über Accounts und alle Prozesse werden von Benutzern gestartet, also sind Benutzer- und Account-Verwaltung von wesentlicher Bedeutung.
Es gibt drei Haupttypen von Accounts: Systembenutzer, Benutzer-Accounts und der Superuser-Account.
Systembenutzer starten Dienste wie DNS, Mail-Server und Web-Server. Der Grund dafür ist die Sicherheit; wenn die Programme von dem Superuser gestartet werden, können Sie ohne Einschränkungen handeln.
Beispiele von Systembenutzern sind
daemon
,
operator
,
bind
,
news
und
www
.
nobody
ist der
generische unprivilegierte Systembenutzer. Bedenken Sie
aber, dass je mehr Dienste nobody
benutzen, desto mehr
Dateien und Prozesse diesem Benutzer gehören und dieser
Benutzer damit umso privilegierter wird.
Benutzer-Accounts sind realen Personen zugeordnet und sind das primäre Mittel des Zugriffs das System. Jede Person, die Zugriff auf das System bekommt, sollte einen eindeutigen Benutzer-Account besitzen. Dies erlaubt es dem Administrator herauszufinden, wer was macht. Gleichzeitig werden die Benutzer daran gehindert, die Einstellungen anderer Benutzer zu zerstören.
Jeder Benutzer kann die eigene Umgebung anpassen, bspw. seine voreingestellte Shell, Editor, Tastenbelegungen und Spracheinstellungen.
Mit jedem Account eines FreeBSD-Systems sind bestimmte Informationen verknüpft:
Der Loginname wird am login:
Prompt eingegeben. Jeder Benutzer muss einen
eindeutigen Benutzernamen haben. Es gibt eine Reihe
von Regeln für die Erstellung von gültigen Loginnamen,
die in passwd(5) dokumentiert sind. Es wird aus
Kompatibilitätsgründen empfohlen, Benutzernamen zu
verwenden, die aus Kleinbuchstaben bestehen und bis zu
acht Zeichen lang sind.
Jeder Account ist mit einem Passwort verknüpft.
Die User ID (UID) ist eine Zahl, die verwendet wird, um die Benutzer auf dem FreeBSD-System eindeutig zu identifizieren. Programme, die einen Loginnamen akzeptieren, wandeln diesen zuerst in eine UID um. Es wird empfohlen, nur UIDs kleiner 65535 zu verwenden, da höhere Werte Kompatibilitätsprobleme mit einigen Anwendungen verursachen können.
Die Group ID (GID) ist eine Zahl, die verwendet wird, um die primäre Gruppe eines Benutzers eindeutig zu identifizieren. Gruppen sind ein Mechanismus zur Steuerung des Zugriffs auf Ressourcen über die GID eines Benutzers anstelle der UID. Dies kann die Größe einiger Konfigurationsdateien signifikant reduzieren und ermöglicht es Benutzern, Mitglied mehreren Gruppen zu sein. Es wird empfohlen, GIDs kleiner 65535 zu verwenden, da höhere Werte bei einigen Anwendungen große Probleme verursachen können.
Login-Klassen erweitern das Gruppenkonzept. Sie erhöhen die Flexibilität des Systems in der Handhabung der verschiedenen Accounts. Login-Klassen werden auch im Abschnitt 14.13.1, „Login-Klassen konfigurieren“ diskutiert.
In der Voreinstellung verfallen Passwörter nicht. Allerdings können Passwortwechsel nach einer gewissen Zeit auf Basis einzelner Accounts erzwungen werden.
In der Voreinstellung verfallen unter FreeBSD keine Accounts. Wenn Sie Accounts einrichten, die nur für eine bestimmte Zeit gültig sein sollen, beispielsweise Accounts für Teilnehmer eines Praktikums, können Sie mit pw(8) die Gültigkeitsdauer des Accounts angeben. Nachdem die angegebene Zeitspanne verstrichen ist, kann dieser Account nicht mehr zum Anmelden verwendet werden, obwohl alle Verzeichnisse und Dateien, die diesem Account gehören, noch vorhanden sind.
FreeBSD identifiziert einen Account eindeutig über den Loginnamen, der aber keine Ähnlichkeit mit dem richtigen Namen des Benutzers haben muss. Ähnlich wie bei einem Kommentar, kann diese Information Leerzeichen, Großbuchstaben und mehr als 8 Zeichen enthalten.
Das Heimatverzeichnis gibt den vollständigen Pfad
zu dem Verzeichnis an, in dem sich der Benutzer nach
erfolgreicher Anmeldung befindet. Es ist üblich, alle
Heimatverzeichnisse unter
oder
/home/Loginname
anzulegen. Im Heimatverzeichnis oder in dort
angelegten Verzeichnissen werden die Dateien eines
Benutzers gespeichert./usr/home/Loginname
Grundsätzlich ist die Shell, von denen es viele unterschiedliche gibt, eine Schnittstelle zum System. Die bevorzugte Shell eines Benutzers kann seinem Account zugeordnet werden.
Der Superuser-Account, normalerweise root
genannt, ist
vorkonfiguriert und erleichtert die Systemverwaltung, sollte
aber nicht für alltägliche Aufgaben wie das Verschicken und
Empfangen von Mails, Erforschen des Systems oder
Programmierung benutzt werden.
Der Superuser kann, im Gegensatz zu normalen Benutzer-Accounts, ohne Beschränkungen operieren und die falsche Anwendung des Superuser-Accounts kann in spektakulären Katastrophen resultieren. Benutzer-Accounts sind nicht in der Lage, das System versehentlich zu zerstören, deswegen wird empfohlen, normale Benutzer-Accounts zu verwenden, solange nicht zusätzliche Privilegien benötigt werden.
Kommandos, die Sie als Superuser eingeben, sollten Sie immer doppelt und dreifach überprüfen, da ein zusätzliches Leerzeichen oder ein fehlender Buchstabe irreparablen Datenverlust bedeuten kann.
Es gibt mehrere Möglichkeiten Superuser-Rechte zu
bekommen. Obwohl man sich direkt als root
anmelden kann, wird von
dieser Methode dringend abgeraten.
Verwenden Sie stattdessen su(1) um zum Superuser zu
werden. Wenn Sie noch ein -
eingeben,
wird der Benutzer auch die Umgebung des Root-Benutzers
erben. Der Benutzer, der diesen Befehl ausführt muss
Mitglied der Gruppe wheel
sein, oder der
Befehl schlägt fehl. Zudem muss der Benutzer das Kennwort
für den Benutzer-Account root
kennen.
In diesem Besipiel wird der Benutzer nur zum Superuser,
um make install
auszuführen, da dieser
Befehl Superuser-Rechte erfordert. Nachdem der Befehl
ausgeführt wurde, kann der Benutzer exit
eingeben, um den Superuser-Account zu verlassen und zu den
Privilegien des Benutzer-Accounts zurückkehren.
%
configure
%
make
%
su -
Password:#
make install
#
exit
%
Das in FreeBSD enthaltene su(1) funktioniert gut für einzelne Systeme oder in kleineren Netzwerken, mit nur einem Administrator. Eine Alternative ist es, das Paket oder den Port security/sudo zu installieren. Diese Software bietet eine Protokollierung von Aktivitäten und ermöglicht es dem Administrator zu bestimmen, welche Benutzer welche Befehle als Superuser ausführen dürfen.
FreeBSD stellt eine Vielzahl an Programmen bereit, um Accounts zu verändern. Die gebräuchlichsten Kommandos sind in Tabelle 4.1, „Programme zur Verwaltung von Benutzer-Accounts“ gefolgt von einer detaillierten Beschreibung, zusammengefasst. Weitere Informationen und Anwendungsbeispiele finden Sie in der Manualpage des jeweiligen Programms.
Programm | Zusammenfassung |
---|---|
adduser(8) | Das empfohlene Werkzeug, um neue Accounts zu erstellen. |
rmuser(8) | Das empfohlene Werkzeug, um Accounts zu löschen. |
chpass(1) | Ein flexibles Werkzeug, um Informationen in der Account-Datenbank zu verändern. |
passwd(1) | Ein Werkzeug, um Passwörter von Accounts zu ändern. |
pw(8) | Ein mächtiges und flexibles Werkzeug um alle Informationen über Accounts zu ändern. |
Das empfohlene Programm zum Hinzufügen neuer Benutzer
ist adduser(8). Wenn ein neuer Benutzer
hinzugefügt wird, aktualisiert das Programm automatisch
/etc/passwd
und
/etc/group
. Es erstellt auch das
Heimatverzeichnis für den Benutzer, kopiert die
Standardkonfigurationsdateien aus
/usr/share/skel
und kann optional
eine ,,Willkommen``-Nachricht an den neuen Benutzer
versenden. Das Programm muss als Superuser ausgeführt
werden.
Das Werkzeug adduser(8) arbeitet interaktiv und
führt durch die einzelnen Schritte, wenn ein neues
Benutzerkonto erstellt wird. Wie in Beispiel 4.2, „Einen Benutzer unter FreeBSD anlegen“ zu sehen
ist, müssen Sie entweder die benötigte Information eingeben
oder Return drücken, um den Vorgabewert in
eckigen Klammern zu akzeptieren. In diesem Beispiel wird
der Benutzer in die Gruppe wheel
aufgenommen, was es
ihm erlaubt mit su(1) zum Superuser zu werden. Wenn
Sie fertig sind, können Sie entweder einen weiteren Benutzer
erstellen oder das Programm beenden.
#
adduser
Username:jru
Full name:J. Random User
Uid (Leave empty for default): Login group [jru]: Login group is jru. Invite jru into other groups? []:wheel
Login class [default]: Shell (sh csh tcsh zsh nologin) [sh]:zsh
Home directory [/home/jru]: Home directory permissions (Leave empty for default): Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : jru Password : **** Full Name : J. Random User Uid : 1001 Class : Groups : jru wheel Home : /home/jru Shell : /usr/local/bin/zsh Locked : no OK? (yes/no):yes
adduser: INFO: Successfully added (jru) to the user database. Add another user? (yes/no):no
Goodbye!#
Wenn Sie das Passwort eingeben, werden weder Passwort noch Sternchen angezeigt. Passen Sie auf, dass Sie das Passwort korrekt eingeben.
Benutzen Sie rmuser(8) als Superuser, um einen Account vollständig aus dem System zu entfernen. Dieses Programm führt die folgenden Schritte durch:
Entfernt den crontab(1) Eintrag des Benutzers, wenn dieser existiert.
Entfernt alle at(1) jobs, die dem Benutzer gehören.
Schließt alle Prozesse des Benutzers.
Entfernt den Benutzer aus der lokalen Passwort-Datei des Systems.
Entfernt optional das Heimatverzeichnis des Benutzers, falls es dem Benutzer gehört.
Entfernt eingegangene E-Mails des Benutzers
aus /var/mail
.
Entfernt alle Dateien des Benutzers aus temporären
Dateispeicherbereichen wie
/tmp
.
Entfernt den Loginnamen von allen Gruppen, zu denen
er gehört, aus /etc/group
. Wenn
eine Gruppe leer wird und der Gruppenname mit dem
Loginnamen identisch ist, wird die Gruppe entfernt. Das
ergänzt sich mit den einzelnen Benutzer-Gruppen, die von
adduser(8) für jeden neuen Benutzer erstellt
werden.
Der Superuser-Account kann nicht mit rmuser(8) entfernt werden, da dies in den meisten Fällen das System unbrauchbar macht.
Als Vorgabe wird ein interaktiver Modus benutzt.
rmuser
#
rmuser jru
Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh Is this the entry you wish to remove?y
Remove user's home directory (/home/jru)?y
Removing user (jru): mailspool home passwd.#
Jeder Benutzer kann chpass(1) verwenden, um die Shell und persönliche Informationen des Benutzerkontos zu verändern. Der Superuser kann dieses Werkzeug benutzen, um zusätzliche Kontoinformationen für alle Benutzer zu ändern.
Werden neben dem optionalen Loginnamen keine weiteren Optionen angegeben, zeigt chpass(1) einen Editor mit Account-Informationen an. Wenn der Benutzer den Editor verlässt, wird die Account-Datenbank mit den neuen Informationen aktualisiert.
Dieses Programm fragt nach dem Verlassen des Editors nach dem Passwort, es sei denn, man ist als Superuser angemeldet.
In Beispiel 4.4, „chpass
als Superuser
verwenden“ hat der
Superuser chpass jru
eingegeben. Es
werden die Felder ausgegeben, die für diesen Benutzer
geändert werden können. Wenn stattdessen jru
diesen Befehl aufruft,
werden nur die letzten sechs Felder ausgegeben. Dies ist in
Beispiel 4.5, „chpass
als normaler Benutzer
verwenden“ zu sehen.
chpass
als Superuser
verwenden#Changing user database information for jru. Login: jru Password: * Uid [#]: 1001 Gid [# or name]: 1001 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jru Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information:
chpass
als normaler Benutzer
verwenden#Changing user database information for jru. Shell: /usr/local/bin/tcsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information:
Die Kommandos chfn(1) und chsh(1) sind nur
Verweise auf chpass(1), genauso wie ypchpass(1),
ypchfn(1) und ypchsh(1). Da
NIS automatisch unterstützt wird, ist
es nicht notwendig das yp
vor dem
Kommando einzugeben. NIS wird später
im Kapitel 29, Netzwerkserver besprochen.
Jeder Benutzer kann mit passwd(1) einfach sein Passwort ändern. Um eine versehentliche oder unbefugte Änderung zu verhindern, muss bei einem Passwortwechsel zunächst das ursprüngliche Passwort eingegeben werden, bevor das neue Passwort festgelegt werden kann.
%
passwd
Changing local password for jru. Old password: New password: Retype new password: passwd: updating the database... passwd: done
Der Superuser kann jedes beliebige Passwort ändern, indem er den Benutzernamen an passwd(1) übergibt. Das Programm fordert den Superuser nicht dazu auf, das aktuelle Passwort des Benutzers einzugeben. Dadurch kann das Passwort geändert werden, falls der Benutzer sein ursprüngliches Passwort vergessen hat.
#
passwd jru
Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done
Wie bei chpass(1) ist yppasswd(1) nur ein Verweis auf passwd(1). NIS wird von jedem dieser Kommandos unterstützt.
Mit dem Werkzeug pw(8) können Accounts und Gruppen erstellt, entfernt, verändert und angezeigt werden. Dieses Kommando dient als Schnittstelle zu den Benutzer- und Gruppendateien des Systems. pw(8) besitzt eine Reihe mächtiger Kommandozeilenschalter, die es für die Benutzung in Shell-Skripten geeignet machen, doch finden neue Benutzer die Bedienung des Kommandos komplizierter, als die der anderen hier vorgestellten Kommandos.
Eine Gruppe ist einfach eine Zusammenfassung von Accounts. Gruppen werden durch den Gruppennamen und die GID identifiziert. Der Kernel von FreeBSD entscheidet anhand der UID und der Gruppenmitgliedschaft eines Prozesses, ob er dem Prozess etwas erlaubt oder nicht. Wenn jemand von der GID eines Benutzers oder Prozesses spricht, meint er damit meistens die erste Gruppe der Gruppenliste.
Die Zuordnung von Gruppennamen zur GID
steht in /etc/group
, einer Textdatei mit
vier durch Doppelpunkte getrennten Feldern. Im ersten Feld
steht der Gruppenname, das zweite enthält ein verschlüsseltes
Passwort, das dritte gibt die GID an und
das vierte besteht aus einer Komma separierten Liste der
Mitglieder der Gruppe. Eine ausführliche Beschreibung der
Syntax dieser Datei finden Sie in group(5).
Wenn Sie /etc/group
nicht händisch
editieren möchten, können Sie pw(8) zum Editieren
benutzen. Das folgende Beispiel zeigt das Hinzufügen einer
Gruppe mit dem Namen teamtwo
:
#
pw groupadd teamtwo
#
pw groupshow teamtwo
teamtwo:*:1100:
1100
ist die GID der
Gruppe teamtwo
.
Momentan hat teamtwo
noch keine
Mitglieder. Mit dem folgenden Kommando wird der Benutzer
jru
in die Gruppe
teamtwo
aufgenommen.
#
pw groupmod teamtwo -M jru
#
pw groupshow teamtwo
teamtwo:*:1100:jru
Als Argument von -M
geben Sie eine Komma
separierte Liste von Mitgliedern an, die in die Gruppe
aufgenommen werden sollen. Aus den vorherigen Abschnitten ist
bekannt, dass die Passwort-Datei ebenfalls eine Gruppe für
jeden Benutzer enthält. Das System teilt dem Benutzer
automatisch eine Gruppe zu, die aber vom
groupshow
Kommando von pw(8) nicht
angezeigt wird. Diese Information wird allerdings von
id(1) und ähnlichen Werkzeugen angezeigt. Das heißt,
dass pw(8) nur /etc/group
manipuliert, es wird nicht versuchen, zusätzliche
Informationen aus /etc/passwd
zu
lesen.
#
pw groupmod teamtwo -m db
#
pw groupshow teamtwo
teamtwo:*:1100:jru,db
Die Argumente zur Option -m
ist eine
durch Komma getrennte Liste von Benutzern, die der Gruppe
hinzugefügt werden sollen. Anders als im vorherigen Beispiel
werden diese Benutzer in die Gruppe aufgenommen und ersetzen
nicht die bestehenden Benutzer in der Gruppe.
id
die Gruppenzugehörigkeit
bestimmen%
id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
In diesem Beispiel ist jru
Mitglied von
jru
und
teamtwo
.
Weitere Informationen zu diesem Befehl und dem Format von
/etc/group
finden Sie in pw(8) und
group(5).
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.