LPIC102/107.1 Benutzer- und Gruppenkonten: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 14: Zeile 14:
  usermod
  usermod


== passwd, shadow, group, gshadow /etc/passwd ==
= passwd, shadow, group, gshadow =
== /etc/passwd ==
Die wichtigste Datei, die mit der Verwaltung von Benutzerkonten in Zusammenhang steht, ist die Datei /etc/passwd.
Die wichtigste Datei, die mit der Verwaltung von Benutzerkonten in Zusammenhang steht, ist die Datei /etc/passwd.


Zeile 30: Zeile 31:
#''Das sechste Feld /home/willi enthält den Pfad zum Heimatverzeichnis des Benutzers.''
#''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.''
#''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 ==
== /etc/shadow ==

Version vom 25. Februar 2024, 09:10 Uhr

Wichtige Dateien, Verzeichnisse und Anwendungen

/etc/passwd
/etc/shadow
/etc/group
/etc/skel
chage
getent
groupadd
groupdel
groupmod
passwd
useradd
userdel
usermod

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
  1. Das erste Feld willi ist der Anmeldename des Benutzers. Er wird beim Login verwendet.
  2. Das zweite Feld, hier ein x, enthält das Passwort. Dieses Passwort befindet sich in diesem Fall in der shadow-Datei.
  3. 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.
  4. 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.
  5. 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.
  6. Das sechste Feld /home/willi enthält den Pfad zum Heimatverzeichnis des Benutzers.
  7. 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

  1. Das erste Feld enthält den Anmeldenamen. Dieser stimmt mit dem ersten Feld der/etc/passwd-Datei überein.
  2. 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.
  3. Zeitpunkt der letzten Kennwortänderung. Dieser Wert wird in ganzen Tagen ab dem 1. Januar 1970 angegeben.
  4. Mindestanzahl von Tagen zwischen Kennwortänderungen
  5. maximale Anzahl von Tagen zwischen Kennwortänderungen
  6. 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.
  7. 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.
  8. Ablaufdatum des Benutzerkontos (falls ablaufend)
  9. 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:

  1. Name der Gruppe
  2. verschlüsseltes Passwort oder Verweis in die /etc/gshadow-Datei
  3. Gruppen-ID (kurz GID)
  4. Liste der Gruppenmitglieder, die durch ein Komma voneinander getrennt sind

/etc/gshadow

Beispiel: sales:$2a$10$....5nvMAwrW39u1:harald: dominik,willi

  1. Name der Gruppe
  2. 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.
  3. 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.
  4. Mitglieder der Gruppe – sie werden, wie gehabt, durch Kommata voneinander getrennt.

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
  1. Die initiale Gruppe des Benutzers ist 100 (also in diesem Fall users).
  2. Sein Heimatverzeichnis wird unterhalb von /home angelegt.
  3. Das Konto ist nicht deaktiviert (INACTIVE=-1).
  4. Das Konto läuft nie ab (EXPIRE=).
  5. Die voreingestellte Shell ist die Bash.
  6. Das Heimatverzeichnis wird aus der Vorlage /etc/skel erstellt.
  7. 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

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