Bei der Benutzerverwaltung wird geregelt, wer auf welche Dateien/Verzeichnisse zugreifen, wer welche Programme ausführen und wer auf Hardwarekomponenten zugreifen darf. Unter Linux werden mehrere Benutzer neben den eigentlichen Benutzern eingerichtet um Aufgaben zu verteilen. Viele Systemdienste haben ihre eigenen Benutzer. Erstellt ein Benutzer eine Datei ist die Datei immer Eigentum des Benutzers und der Gruppe zugeordnet die der Hauptgruppe des Benutzers entspricht.
Bei der Zuordnung von Benutzer und Gruppen gibt es jedoch Distributonsabweichungen. So wird z.B. bei Debian ein neu erstellter Nutzer „hans“ auch der Gruppe „hans“ zugewiesen. Bei anderen Distributionen könnte dies bei Nutzer „hans“ die Gruppe „user“ sein.
Alle Benutzer und Gruppenidentitäten werden als Zahlen „UID“ (userID) und „GID“ (gruppenID) im Prozesskontrollblock hinterlegt. Der user mit der UID 0: ist meist der Administator (root).
Diese IDs unterscheiden sich noch in:
Unter Unix, Linux Systemen gibt es folgende drei Typen von Benutzer:
Alle Benutzer werden in der Datei /etc/passwd mit Loginname, Name, UID, GID, Homeverzeichnis und Shell gespeichert.
Gruppen haben die Aufgabe, verschiedenen Benutzern einen gemeinsamen Zugriff auf Dateien zu ermöglichen. Dabei wird jeder Benutzer einer bestimmten Gruppe zugeordnet. Ein Benutzer kann beliebig vielen Gruppen zugeordnet sein. Alle Gruppen werden in der Datei /etc/group gespeichert. Bei der Zuordnung von Benutzern und Gruppen gibt es unterschiedliche Ansätze. Bei SuSE wird ein neuer Benutzer Standardmäßig der Gruppe „users“ zugeordnet. Bei Debian und Red Hat bekommt der Benutzer seine eigene primäre Gruppe die dem Nutzernamen entspricht.
Informationen und Konfigurationsdateien über Benutzer und Gruppenzugehörigkeiten.
Reale und effektive Benutzer- und Gruppen-IDs ausgeben.
Syntax:
Optionen:
Beispiel:
rudi@home:~$ id uid=1000(rudi) gid=1000(rudi) Gruppen=1000(rudi),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev),109(bluetooth),112(fuse),115(scanner) rudi@home:~$ id -G 1000 24 25 29 30 44 46 108 109 112 115
Mit „passwd“ lassen sich Passwörter von Benutzer und/oder Gruppen verändern. Benutzer und Gruppenangehörige dürfen nur ihr eigenes Passwort, „root“ hingegen alles bearbeiten. Wenn „passwd“ ohne Nutzernamen und Optionen eingesetzt wird, kann das Passwort des angemeldeten Nutzers geändert werden.
Syntax:
Optionen:
Beispiel:
hans@home:~$ passwd hans Geben Sie ein neues UNIX-Passwort ein: Geben Sie das neue UNIX-Passwort erneut ein: passwd: Passwort erfolgreich geändert
hans@home:~$ passwd -S hans hans P 06/25/2012 0 99999 7 -1
Die Datei „/etc/passwd“ listet alle Metadaten der Nutzer, deren Gruppenzugehörigkeit und Shell auf. Da diese Datei von jedem lesbar sein muß, wird das Passwort in der Datei „/etc/shadow“, die nur von „root“ und/oder der Gruppe „shadow“ lesbar sein muß.
less /etc/passwd
..... root:x:0:0:tf,,,:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh ..... hans:x:1000:1000:Hans,,,:/home/hans:/bin/bash .....
Konfigurationsdatei für Benutzergruppen.
less /etc/group
..... root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: bettina:x:502: verkauf:x:503:bettina .....
Der Befehl „groups“ gibt die Gruppenzugehörigkeit der Nutzer aus. Dabei kann der Administrator „root“ mit „groups [Nutzername]“ alle Gruppenzugehörigkeiten der registrierten Nutzer einsehen, der angemeldete Nutzer selbst, nur seine eigenen Gruppenzugehörigkeiten.
hans@home:~$ groups hans cdrom floppy audio video plugdev scanner
In der Datei „/etc/shadow“, dass nur von „root“ lesbar ist, wird der Nutzername, das verschlüsselte Passwort und weitere Felder zur Gültigkeit gespeichert.
... hans:$3$jX6784T$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXKA1jWfli0:XXX23:0:XXX90:5::: bettina:$1$F7vuc.lg$bhr1g/GOb94zCQyUhHDhy.:15659:7:92:7:14:15916: daemon:*:XXX23:0:XXX90:5::: bin:*:XXX23:0:XXX90:5::: sys:*:XXX23:0:XXX90:5::: ...
In der Datei „/etc/login.defs“ befinden sich Möglichkeiten zur Administration von Passwörter und Logins. Hier kann man z.B. einstellen wie lange die Wartezeit nach einem gescheiterten Loginversuch ist und wieviele Loginversuche gestattet sind. Je nach Einstellung dieser Datei wird bei jedem fehlerhaften Login eine Meldung in „/var/log/faillog“ im Binärformat gespeichert.
Die Datei „/var/log/faillog“ protokolliert, sofern in der Datei „/etc/login.defs“ eingestellt die fehlerhaften Login Versuche.
Syntax:
Optionen:
hans@home:~$ faillog -a Login Fehlver. Maximum Letzter Auf root 0 0 01/01/70 01:00:00 +0100 daemon 0 0 01/01/70 01:00:00 +0100 bin 0 0 01/01/70 01:00:00 +0100 sys 0 0 01/01/70 01:00:00 +0100 ....
Zeigt fehlerhafte Loginversuche aller Benutzer.
Beispiele:
faillog -u hans -m 5
Für User hans werden 5 fehlerhafte Loginversuche gestattet, danach wird der Login blockiert und kann danach nur von „root“ freigeschalten werden.
faillog -u hans -r
Der Loginzähler wurde zurückgesetzt, der Benutzer „hans“ kann sich wieder einloggen.
Mit dem Kommando „gpasswd“ kann ein Gruppenpasswort vergeben werden, dieses wird in /etc/gshadow gespeichert. Ein Gruppenpasswort ist nötig, sollte ein Benutzer mit dem Kommando newgrp die aktive Gruppe wechseln, da die aktive Gruppe festlegt, welcher Gruppe neue Dateien angehören.
Dieses Programm erstellt oder aktualisiert die Datei „/etc/shadow“, dabei sucht „pwconv“ in der Datei „/etc/passwd“ nach Passwörter und verschiebt diese nach „/etc/shadow“, sollte dies nicht schon geschehen sein (x im Passwortfeld der passwd). Optionen sind bei diesem Kommando nur notwendig, sollten sich die Dateien nicht im Verzeichnis „/etc“ befinden.
Hier werden verschlüsselte Passwörter aus der Datei „/etc/shadow“ in die „/etc/passwd“ verschoben und anschließend „/etc/shadow“ gelöscht.
Prüft die Integrität der Dateien „/etc/passwd“ und „/etc/shadow“.
Beispiel:
root@home:~# pwck pwck: Keine Änderungen
Das Kommando ist aquivalent zu „pwconv“, es werden lediglich die Dateien „/etc/group“ und „/etc/gshadow“ eingelesen.
Das Kommando ist aquivalent zu „pwunconv“, es werden lediglich die Dateien „/etc/group“ und „/etc/gshadow“ eingelesen.
Prüft die Integrität der Dateien „/etc/group“ und „/etc/gshadow“ (wie „pwck“).
Linux und BSD sind mehrbenutzer Systeme. Um sich z.B. als Systemadministator einzuloggen ist der Nutzer „root“ vorgesehen. Nur „root“ kann wichtige Konfigurationen vornehmen.
Hierfür gibt es folgende Befehle:
Mit „su“ (Switch User) läßt sich eine neue Shell des gewählten Nutzers starten. Hierfür ist das Passwort des Nutzers notwendig, nur „root“ darf in alle Nutzer Shells abtauchen.
Syntax:
Optionen:
hans@home:~$ su root Passwort: root@home:/home/hans#
Oben wird der „su“ Befehl ohne Optionen ausgeführt. „root“ bekommt eine Shell und befindet sich im letzten Verzeichnis des Nutzers „hans“.
hans@home:~$ su - root Passwort: root@home:~#
Hier wurde vor dem Nutzernamen ein [-] hinzugefügt, dadurch landet man beim Benutzerwechsel gleich im jeweiligen Heimatverzeichnis des angegebenen Nutzers.
Hier wird keine Shell als „root“ oder „nutzerrname“ gestartet, sondern führt das Kommando nur einmalig mit „root“, „nutzername“ rechten aus. Wird auch hier kein Nutzer angegeben, startet das Programm mit „root“ rechten. In der Konfigurationsdatei „/etc/sudoers“ kann das erlauben oder verbieten der Nutzung von „sudo“ für die jeweiligen Nutzer gesteuert werden. Der „sudo“ Befehl wird Standardmäßig bei Ubuntu Systeme verwendet.
Syntax:
Optionen:
Durch das setzen von „SetUID / SetGID“ Bits können die Berechtigungen eines anderen Nutzers verwendet werden. Diese Rechte werden auf Dateien gesetzt und mit den Rechten des Besitzers oder der Gruppe der Datei ausgeführt. Weitere Informationen hierzu in Dateirechte.
Für die verschiedenen Aufgaben zur Benutzerverwaltung gibt verschiedene Kommandos zur Bearbeitung. Die Befehle „adduser“, „deluser“, „addgroup“ und „delgroup“ sind Debian spezifische Kommandos. Die Standardkommandos zur Nutzerverwaltung, „useradd“, „groupadd“ usw. berücksichtigen bei Debian Systeme die in den „/etc/adduser.conf“ und „/etc/deluser.conf“ definierten Regeln. Bei Red Hat und Fedora sind die Kommandos „adduser“, „addgroup“ usw. lediglich Links auf „useradd“ bzw. „groupadd“ usw., weshalb sich hier die Syntax nicht unterscheidet, wie z.B. bei Debian .
Beim Anlegen eines neuen Nutzers kann das Verzeichnis „/etc/skel/“ so modifiziert werden, dass die Verzeichnisstruktur innerhalb von „/etc/skel/“ in das Heimatverzeichnis des neuen Nutzers kopiert und mit den jeweiligen Rechten ausgestattet werden.
Hinzufügen eines neuen Nutzers mit dem Befehl „useradd“.
Syntax:
Optionen:
Beispiele:
useradd -m -s /bin/bash -c testuser hans
Hier wird der neue Nutzer „hans“ in die Gruppe „hans“ und ein Heimatverzeichnis „/home/hans/*“ mit Standardverzeichnissen aus den Dateien in „/etc/skel“ angelegt. Als Shell bekommt der neue Nutzer „hans“ die Standardshell „bash“ zugewiesen, als Kommentar wurde „testuser“ definiert.
root@home:~# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/sh SKEL=/etc/skel CREATE_MAIL_SPOOL=no
Zeigt die Standardeinstellungen zu „useradd“. Die Konfigurationsdatei zu „useradd“ befindet sich in der Datei „/etc/default/useradd“.
Ist ein Debian spezifisches Kommando, wobei ein angelegter Benutzer zu seiner Gruppe, jedoch keiner Systemgruppe hinzugefügt wird. Nach dem Start von „adduser“ wird ein Dialog in der Shell angezeigt, der auf Eingaben wartet.
Gibt man hier keine Optionen an, werden die Voreinstellungen der Datei „/etc/adduser.conf“ (Standard Konfiguratinsdatei von „adduser“ und „addgroup“) verwendet, sowie die Konfigurationsdateien von „/etc/skel“ in das Heimatverzeichnis des neuen Nutzers hineinkopiert. „adduser“ vergibt dann die erste freie „UID“ des in der Konfigurationsdatei festgelegten Bereichs.
Syntax:
Optionen:
Beispiel:
adduser hans --ingroup gruppe
Hier wird der neue Nutzer „hans“ der Gruppe [gruppe] hinzugefügt.
root@home:~# dpkg-reconfigure adduser
Nutzer Einstellungen bearbeiten.
Syntax:
Optionen:
Beispiele:
root@home:/# usermod -G video,audio,www-data hans
Hier wird der Nutzer „hans“ den Gruppen „video“, „audio“ und „www-data“ hinzugefügt.
root@home:/# usermod -d /home/verwaltung/hans -m hans
Den Nutzer „hans“ mit seinen Heimatverzeichnissen nach „/home/verwaltung/hans“ umziehen.
Löscht einen Nutzer und seine Verzeichnisse.
Syntax:
Optionen:
Rückgabewerte:
Beispiel:
[root@home ~]# userdel -rf karl && echo $? 0
Löscht den Nutzer „karl“ inclusive Heimatverzeichnis, Mailverzeichnis und Dateien im Nutzerverzeichnis die nicht „Karl“ gehören und gibt dabei den Wert [0] (Aktion erfolgreich) zurück.
Nutzer und Gruppen aus dem System entfernen. Bedinungsfreundlichere Frontends für „userdel“ und „groupdel“. Ohne Optionen entfernt „deluser“ den Benutzer, ohne das Heimatverzeichnis, die Emails und andere dem Benutzer gehörende Dateien zu löschen.
Syntax:
Optionen:
Rückgabewerte:
Nutzerkonto Informationen auflisten / zuweisen. Diese Informationen werden z.B. von dem Programm finger verwendet. Ein Nutzer darf nur seine eigenen Felder bearbeiten, diese können in der Datei /etc/login.defs eingeschränkt werden. „chfn“ [nutzername] ohne Optionen, geht alle Infos durch und wartet auf Bestätigung.
root@home:/# chfn hans Benutzerinformationen für hans werden geändert. Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert Vollständiger Name [Hans Dampf]: Raumnummer []: Telefon geschäftlich [0123456]: Telefon privat [0123456]: Sonstiges []:
Syntax:
Optionen:
Das Kommando „chsh“ (change shell), dient zum ändern der „Login-Shell“. Dabei darf ein eingeloggter Nutzer nur seine eigene, „root“ die Shells aller Nutzer ändern. In der Datei /etc/shells sind alle möglichen Login-Shells aufgelistet.
Syntax:
Optionen:
Beispiel:
chsh -s /bin/csh hans
Hier wird dem Nutzer „hans“ die csh Shell als Login-Shell zugewiesen.
Ist ein Kommandozeilen Werkzeug zum festlegen der Tage zwischen Passwort änderungen, b.z.w., wann ein Benutzer sein Passwort ändern muß. Als „root“ ausgeführt erwartet das Programm eine Eingabe, als Benutzer kann man mit der Option [-l] seine Parameter einsehen.
Syntax:
Optionen:
Rückgabewerte:
Beispiele:
hans@home:~$ chage -l hans Letzte Passwortänderung : Jan 04, 2010 Passwort läuft ab : nie Passwort inaktiv : nie Benutzerzugang läuft ab : nie Minimale Anzahl der Tage zwischen Passwortänderungen : 0 Maximale Anzahl der Tage zwischen Passwortänderungen : 99999 Anzahl Tage, an denen vor Passwortablauf gewarnt wird : 7
root@home:# chage hans Passwortalterung für hans wird geändert. Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert Minimales Passwortalter [0]: Maximales Passwortalter [99999]: Letzte Passwortänderung (JJJJ-MM-TT) [2010-01-04]: Passwortablaufwarnung [7]: Passwort inaktiv [-1]: Ablaufdatum des Benutzerzugangs (JJJJ-MM-TT) [2012-12-31]:
Für die verschiedenen Aufgaben zur Benutzerverwaltung gibt es, wie oben schon Beschrieben mehr Kommandos zur Bearbeitung. Das gilt natürlich auch für die Gruppenbearbeitung.
Eine neue Gruppe hinzufügen.
Syntax:
Optionen:
Gruppeneigenschaften ändern.
Syntax:
Optionen:
Gruppen löschen. Eine Übergabe von Optionen ist nicht erforderlich.
Syntax:
Optionen:
Das Kommando „gpasswd“ dient zum bearbeiten von Gruppenzugehörigkeiten (/etc/group) und Gruppenpasswörter (/etc/gshadow).
Syntax:
Optionen:
Hier werden Gruppenname und Gruppenpasswort gespeichert.
.... cdrom:*::hans floppy:*::hans tape:*:: sudo:*:: audio:*::hans ....
Mit diesem Befehl kann man ohne sich ab und wieder anzumelden, während einer Sitzung als neue Gruppe anmelden. Wird „newgrp - [gruppe]“ angewendet, wird die Benutzerumgebung so neu gestartet als ob sich der Benutzer neu angemeldet hätte, ohne den Schalter [-] bleibt die aktuelle Benutzerumgebung und Arbeitsverzeichnisse unverändert, hierbei ist jedoch zu beachten, dass beim Wechsel in eine andere Gruppe eine neue Shell gestartet wird und ggf. gesetzte Variablen exportiert werden müssen.
Syntax:
Wenn kein Gruppenname angegeben wird, wechselt der Benutzer in die Standardgruppe, die in der „/etc/passwd“ festgelegt ist. „newgrp“ wird versuchen die Gruppe der Gruppensammlung des Benutzers hinzuzufügen. Sollte der Benutzer nicht Mitglied der Gruppe und nicht „root“ sein, die Gruppe ein Passwort besitzt, wird nach einem Passwort gefragt und der Benutzer kann einer neuen Gruppe beitreten. Verweigert wird der Zugriff jedoch, sollte das Gruppenpasswort leer oder der Benutzer nicht Mitglied der Gruppe sein.
Das Verhalten von „newgrp“ kann in der Datei „/etc/login.defs“ konfiguriert werden.