LPIC102/107.1 Benutzer- und Gruppenkonten
LPIC102/107.1 Benutzer- und Gruppenkonten - Benutzer- und Gruppenkonten und dazugehörige Systemdateien verwalten
Beschreibung
- Wichtige Dateien, Verzeichnisse und Anwendungen
/etc/passwd /etc/shadow /etc/group /etc/skel chage getent groupadd groupdel groupmod passwd useradd userdel usermod
Konfiguration
- passwd, shadow, group, gshadow
/etc/passwd
Die wichtigste Datei, die mit der Verwaltung von Benutzerkonten in Zusammenhang steht, ist die Datei /etc/passwd.
- Beispiel
root:x:0:0:root:/root:/bin/bash harald:x:1000:100:Harald Maaßen:/home/harald:/bin/bash dominik:x:1002:100:Dominik Maaßen:/home/dominik:/bin/bash willi:x:1003:100:Willi 0173-1234567:/home/willi:/bin/bash
- Das erste Feld willi ist der Anmeldename des Benutzers. Er wird beim Login verwendet.
- Das zweite Feld, hier ein x, enthält das Passwort. Dieses Passwort befindet sich in diesem Fall in der shadow-Datei.
- Die dritte Position 1003 ist die User-ID. Sorgen Sie dafür, dass die Benutzer nach der Neuinstallation dieselben Benutzer-IDs bekommen, die sie vor der Neuinstallation hatten. Der Benutzer root bekommt immer die ID 0.
- Das vierte Feld, hier die 100, enthält die Group-ID. Das ist die initiale Gruppe des Benutzers, die in diesem Fall in der Datei /etc/group auf die Gruppe users zeigt.
- Die fünfte Spalte Willi0173-1234567 ist das sogenannte GECOS-Feld. Es kann Informationen über den Benutzer enthalten, die z. B. mit dem Programm finger abgefragt werden können. Ein Benutzer kann das GECOS-Feld auch selbst ändern, indem er das Kommando chfn benutzt.
- Das sechste Feld /home/willi enthält den Pfad zum Heimatverzeichnis des Benutzers.
- Als Letztes wird in Feld sieben /bin/bash der Pfad zur Login-Shell des Benutzers aufgeführt. Wenn hier keine ausführbare Datei angegeben wird, kann sich der Benutzer nicht anmelden. Sollte das gar erwünscht sein, ist es auch möglich, hier/bin/false anzugeben.
/etc/shadow
- Das erste Feld enthält den Anmeldenamen. Dieser stimmt mit dem ersten Feld der/etc/passwd-Datei überein.
- Das zweite Feld enthält das verschlüsselte Passwort. Die Kryptografie geschieht, je nach Distribution, mittels DES oder MD5. Die Kryptografie mitMD5 ist nicht sicherer als die mit DES, erlaubt jedoch die Verwendung längerer Passwörter. Bei der Verwendung von DES ist die Kennwortlänge auf acht Zeichen begrenzt. Längere Passwörter werden praktisch abgeschnitten.
- Zeitpunkt der letzten Kennwortänderung. Dieser Wert wird in ganzen Tagen ab dem 1. Januar 1970 angegeben.
- Mindestanzahl von Tagen zwischen Kennwortänderungen
- maximale Anzahl von Tagen zwischen Kennwortänderungen
- Der Benutzer wird vor dem Ablauf seines Kennwortes gewarnt. Dieser Wert zeigt an, wie viele Tage vor dem Ablauf des Kennwortes der Benutzer zur Passwortänderung aufgefordert wird.
- Wenn das Kennwort abgelaufen ist, wird das Konto deaktiviert. Dieses Feld enthält die Anzahl der Tage bis zur Deaktivierung des Accounts nach Ablauf des Kennwortes.
- Ablaufdatum des Benutzerkontos (falls ablaufend)
- reserviert für zukünftige Zwecke
/etc/group
root:x:0: bin:x:1:daemon daemon:x:2: users:x:100: sales:x:133: dominik,willi
Die verwendeten Felder beinhalten in dieser Reihenfolge:
- Name der Gruppe
- verschlüsseltes Passwort oder Verweis in die /etc/gshadow-Datei
- Gruppen-ID (kurz GID)
- Liste der Gruppenmitglieder, die durch ein Komma voneinander getrennt sind
/etc/gshadow
Beispiel: sales:$2a$10$....5nvMAwrW39u1:harald: dominik,willi
- Name der Gruppe
- Gruppenpasswort (hier gekürzt) – bei Standardgruppen wird auf ein Passwort oftmals auch verzichtet. Es kann ohnehin nur ein Benutzer in diese Gruppe wechseln,der sich am System angemeldet hat und in der Mitgliederliste eingetragen ist. Ein Missbrauch ist also unwahrscheinlich.
- Gruppenverwalter – der Gruppenverwalter kann Mitglieder zur Gruppe hinzufügen oder entfernen. Weiterhin hat er als Einziger (außer root natürlich) das Recht,das Passwort für die Gruppe zu ändern.
- Mitglieder der Gruppe – sie werden, wie gehabt, durch Kommata voneinander getrennt.
Verwaltung von Benutzern
useradd
Mit diesem Befehl wird ein neuer Benutzer erstellt. Als Grundlage für die Voreinstellungen dient hierbei die Datei /etc/default/useradd. Diese Datei kann z. B. so aussehen:
GROUP=100 HOME=/home INACTIVE=-1 EXPIRE=== SHELL=/bin/bash SKEL=/etc/skel GROUPS=video,dialout
- Die initiale Gruppe des Benutzers ist 100 (also in diesem Fall users).
- Sein Heimatverzeichnis wird unterhalb von /home angelegt.
- Das Konto ist nicht deaktiviert (INACTIVE=-1).
- Das Konto läuft nie ab (EXPIRE=).
- Die voreingestellte Shell ist die Bash.
- Das Heimatverzeichnis wird aus der Vorlage /etc/skel erstellt.
- Der Benutzer gehört, abgesehen von der initialen Gruppe, auch noch den Gruppenvideo und dialout an.
userdel
Mit diesem Kommando wird ein Benutzerkonto vom System entfernt. Es wird einfach nur der Anmeldename übergeben.
Häufig verwendete Optionen sind:
-r (remove) löscht gleichzeitig das Heimatverzeichnis des Benutzers. -f (force) löscht das Heimatverzeichnis des Benutzers auch dann, wenn dieses Verzeichnis Dateien anderer Benutzer enthält.
Beispiel:
userdel willi -rf
löscht den Benutzer Willi inklusive seines Heimatverzeichnisses, auch wenn dieses Daten anderer Benutzer enthält.
usermod
Der Befehl usermod dient dazu, ein existierendes Benutzerkonto zu ändern. Die Syntax bzw. die Optionen zu usermod ähneln größtenteils denen von useradd.
passwd
Das Kommando passwd wird hauptsächlich dazu verwendet, das Kennwort eines Benutzers zu ändern. Es können aber auch Änderungen damit durchgeführt werden,die eigentlich usermod machen sollte. Der Grund hierfür wird klar, wenn Sie die bei-den Kommandos miteinander vergleichen:
-rwsr-xr-x 1 root shadow 66040 Mai 17 2017 passwd -rwxr-xr-x 1 root root 92000 Mai 17 2017 usermod
Wie Sie sehen, ist bei passwd das SUID-Bit gesetzt und bei usermod nicht. Die Folge ist,dass passwd auch dann schreibend auf /etc/passwd und /etc/shadow zugreifen kann, wenn das Programm von einem nicht administrativen Benutzerkonto ausgeführt wird. Sonst könnte ein Benutzer nämlich sein Kennwort nicht selbst ändern.
Beispiele:
Als root ändern Sie das Passwort eines Benutzers, indem Sie den Benutzernamen dem passwd-Kommando übergeben:
# passwd dominik Changing password for dominik. New password: Re-enter new password: Password changed.
chage
Kennwortänderungen können für jeden Benutzer einzeln mit chage festgelegt werden. Die Standardwerte sind in der Konfigurationsdatei/etc/default/useradd festgelegt.
# chage -m 2 dominik Aging information changed.
Die Option -m (Minimum) legt den frühesten Zeitpunkt in Tagen fest, nach denen der Benutzer sein Kennwort ändern darf.
# chage -M 21 dominik Aging information changed.
Das große -M (Maximum) legt fest, wie lange der Benutzer maximal dasselbe Kennwort verwenden darf. Ein Benutzer kann nicht zweimal hintereinander dasselbe Kennwort angeben.
# chage -l dominik Minimum: 2 Maximum: 21 Warning: 7 Inactive: -1 Last Change: Sep 20, 2017 Password Expires: Oct 11, 2017 Password Inactive: Never Account Expires: Never
Abschließend werden die vorgenommenen Änderungen mit chage-l (list) überprüft.Sie sehen die erwarteten Modifikationen und zusätzliche Informationen, die alle selbst erklärend sein dürften.
getent
Das Programm getent kann in diversen lokalen Datenbanken lesen. Sie können z. B. nach der Existenz eines bestimmten Benutzers fragen und damit ein entsprechendes Errorlevel erhalten – je nachdem, ob der Benutzer existiert oder nicht.
# getent passwd jonathan # echo $? 2
Die Abfrage nach dem Benutzer Jonathan ergibt ein Errorlevel von 2. Der Benutzer existiert also offensichtlich nicht. Wenn der Benutzer existiert, wird der entsprechende Eintrag einfach angezeigt:
# getent passwd harald harald:x:1000:1000::/home/harald:/bin/bash
id
Mit dem Kommando id können Sie die Benutzer- und Gruppen-ID des momentanangemeldeten oder eines anderen Users herausfinden:
# id dominik uid=1002(dominik) gid=1002(dominik) Gruppen=1002(dominik)
Die Anzeige kann auch gefiltert werden, wenn Sie lediglich die Benutzer- oder nur die Gruppen-ID abfragen wollen:
# id dominik -u 1002
Verwaltung von Gruppen
groupadd
Mit dem Kommando groupadd werden neue Benutzergruppen erstellt. Es können während der Erstellung eine GID und auch ein Gruppenpasswort festgelegt werden. Die Gruppe wird dann in /etc/group erstellt.
# groupadd produktion -g 4711 -p prodp@ssword
erstellt die Gruppe produktion mit der GID 4711 und dem Gruppenkennwort prodp@ssword.
Häufig verwendete Optionen:
-g,--gid legt die GID für die neue Gruppe fest. -o,--non-unique erlaubt die Verwendung von nicht eindeutigen GIDs. -p,--password gibt das Passwort an, das zum Wechsel in diese Gruppe notwendig ist. Die Verwendung von Gruppenpasswörtern ist allerdings eher unüblich.
groupdel
Mit dem Kommando groupdel werden nicht mehr benötigte Benutzergruppen gelöscht. Die Übergabe von Parametern ist nicht erforderlich.
# groupdel produktion
entfernt die Gruppe produktion. Das System gibt keine Bestätigung zu dem Löschvorgang aus.
groupmod
Mit groupmod werden bestehende Benutzergruppen modifiziert. Die Syntax dieses Kommandos ist stark an die des Kommandos groupadd angelehnt. Eine Besonderheit ist allerdings die Möglichkeit, eine Gruppe mittels groupmod umzubenennen. Die verwendete GID und daraus resultierende Berechtigungen im Dateisystem bleiben hier-bei erhalten.
# groupmod mktg -n marketing
nennt die Benutzergruppe mktg in marketing um. Mitglieder in dieser Gruppe undauch die GID bleiben erhalten.
Häufig verwendete Optionen
-A,--add-user fügt Benutzer zur Gruppe hinzu. (veraltet) -R,--remove-user entfernt Benutzer aus der angegebenen Gruppe. (veraltet) -n,--new-name ändert den Namen der Gruppe unter Beibehaltung der GID und der in der Gruppe enthaltenen Benutzer.
gpasswd
Mit diesem Kommando ändern Sie das Kennwort einer Gruppe. Diese Operation ist ausschließlich dem Benutzer root und dem Gruppenadministrator vorbehalten. Mit der Option -r wird ein Gruppenpasswort entfernt.
# gpasswd -r sales Password removed.
newgrp
Ein Benutzer führt newgrp aus, um damit seine Gruppenzugehörigkeit zu ändern.
$ newgrp sales Passwort: $ pstree ... login-bash-bash-pstree ...
Der relevante Ausschnitt der Ausgabe des pstree-Kommandos zeigt, dass tatsächlich eine Subshell erzeugt wurde. Normalerweise läuft nur eine Instanz der Shell Bash, wenn sich ein Benutzer am System anmeldet.