# Benutzerverwaltung unter Linux ### tl;dr ``` bash # Erstellen von Gruppen sudo groupadd developers # Erstellen von Benutzern und Zuweisen zu Gruppen sudo useradd -m -s /bin/bash User # Den User `User` der Nebengruppe `developers` hinzufügen sudo usermod -aG developers User # Setzen des Passworts sudo passwd User # Überblick verschaffen über Nutzer und Gruppen getent passwd # Einträge der Datei passwd (User) getent group # Einträge der Datei group (Gruppen) # User wieder löschen sudo userdel -r User ``` ## Benutzer - Linux ist ein Mehrbenutzer-Betriebssystem. - Das bedeutet, dass mehrere Benutzer gleichzeitig auf einem System arbeiten können. - Jeder Benutzer hat ein eigenes Konto mit spezifischen Rechten und Privilegien. ## Gruppen - Jeder Benutzer ist einer Hauptgruppe zugeordnet - kann daneben aber auch Mitglied weiterer Gruppen sein. - Der Zugriff auf gewisse Hardware oder Dienste ist auf die Mitglieder einer bestimmten Gruppe beschränkt. - Jede Datei ist immer Eigentum genau eines Benutzers. - Daneben ist den Dateien aber auch eine Gruppe zugeordnet. **Benutzerverwaltung**: - fassen Benutzer mit ähnlichen Rollen oder Verantwortlichkeiten zusammenfassen - ermöglichen Administratoren, Berechtigungen kollektiv auf eine Gruppe von Benutzern anzuwenden. **Ressourcenzugriff**: - erleichtern den kontrollierten Zugriff auf Dateien, Verzeichnisse und Systemressourcen. - Berechtigungen können auf Gruppenebene zugewiesen werden, was eine effiziente Ressourcenverwaltung sicherstellt. **Zusammenarbeit**: - Gruppen verbessern die Zusammenarbeit, indem sie es Benutzern mit gemeinsamen Zielen ermöglichen, nahtlos zusammenzuarbeiten. - Gruppenzugehörigkeiten vereinfachen den Prozess der Zugriffsgewährung auf gemeinsame Projektdateien. **Sicherheit**: - Sicherheitsrichtlinien können auf Gruppenebene durchgesetzt werden, was einen detaillierten Ansatz zur Systemsicherheit gewährleistet. - Gruppenbasierte Berechtigungen tragen zu einer sicheren und gut organisierten Linux-Umgebung bei. ### Gruppen anlegen/ ändern/ löschen | Befehl | Aktion | |-|-| |`sudo groupadd gruppe` |Fügt Gruppe hinzu | |`sudo groupmod -n neuername gruppe` |Ändert Namen einer Gruppe | |` sudo groupdel gruppe` |Löscht eine Gruppe | ## Benutzerkonten - **Root-Benutzer:** Der Administrator des Systems mit vollen Rechten. Dieser Benutzer kann alle Dateien und Einstellungen ändern. - **Normale Benutzer:** Diese Benutzer haben eingeschränkte Rechte und können nur auf ihre eigenen Dateien und bestimmte freigegebene Ressourcen zugreifen. ### Benutzer anlegen ``` sudo useradd -m -s /bin/bash benutzername ``` | Option | Aktion | |-|-| |`-m` |sorgt dafür, dass ein Home-Verzeichnis für den neuen Benutzer erstellt wird | |`-s` |Nutzer nutzt `bash` als Konsole | |`-G` |fügt den neu erstellten Nutzer direkt der Nebengruppe GRUPPE hinzu | ### Passwort setzen Nach dem Anlegen eines Benutzers muss ein Passwort gesetzt werden: ``` sudo passwd benutzername ``` ### Benutzer modifizieren ``` sudo usermod -g gruppe benutzername ``` | Befehl | Aktion | |-|-| |`-g gruppe benutzername ` |ändert die Hauptgruppe des Users | |`-aG gruppe benutzername` |fügt den Benutzer einer Nebengruppe hinzu, ohne ihn aus anderen Gruppen zu entfernen | |`-G gruppe benutzername` |ändert die Nebengruppe des Users | |`-l neuername benutzername` |kann der Name eines Benutzers geändert werden | ### Benutzer aus Gruppen entfernen mit gpasswd Der Befehl `gpasswd` wird sowohl für das Hinzufügen als auch das Entfernen von Usern zu Gruppen verwendet. **Hinzufügen** `gpasswd -a` -a für "add" ``` sudo gpasswd -a benutzername gruppenname ``` **Entfernen** `gpasswd -d` -d für "delete" ``` sudo gpasswd -d benutzername gruppenname ``` ### Benutzer und Gruppen anzeigen | Befehl | Rückgabe | |-|-| | `getent passwd` |`user:password:uid:gid:user name or comment field:home directory:shell` | | `getent group` | `group:password:gid:users` | ### /etc/passwd Die Einträge in der Datei **`/etc/passwd`** sind für die Verwaltung von Benutzerkonten auf einem Linux-System wichtig. Jeder Eintrag enthält Informationen zu einem einzelnen Benutzer und ist durch Doppelpunkte (:) getrennt. Ein typischer Eintrag sieht so aus: ``` > getent passwd benutzername:passwort:benutzer_id:gruppen_id:gefullname:home_verzeichnis:shell ``` Hier ist eine detaillierte Erklärung der einzelnen Felder: 1. **benutzername**: Der Name des Benutzers (z. B. "root", "john"). 2. **passwort**: Ein verschlüsseltes Passwort (historisch gesehen war hier das Passwort gespeichert, aber aus Sicherheitsgründen wird heutzutage oft ein "x" oder "\*" angezeigt, und die Passwörter werden in der Datei `/etc/shadow` gespeichert). 3. **benutzer_id (UID)**: Eine eindeutige numerische ID für den Benutzer. 4. **gruppen_id (GID)**: Die ID der primären Gruppe des Benutzers. 5. **gefullname**: Ein optionales Feld für den vollständigen Namen des Benutzers oder eine Beschreibung (manchmal bleibt es leer). 6. **home_verzeichnis**: Das Verzeichnis, in dem der Benutzer seine Dateien speichert (z. B. `/home/john`). 7. **shell**: Die Standard-Shell, die beim Einloggen verwendet wird (z. B. `/bin/bash` oder `/bin/sh`). Ein Beispiel eines Eintrags: john:x:1001:1001:John Doe:/home/john:/bin/bash In diesem Beispiel bedeutet: - Benutzername: `john` - Passwort: `x` (Passwort wird in `/etc/shadow` gespeichert) - UID: `1001` - GID: `1001` - Vollständiger Name: `John Doe` - Home-Verzeichnis: `/home/john` - Shell: `/bin/bash` ### Benutzer löschen | Befehl | Aktion | |-|-| |`sudo userdel benutzername` | Löscht den User | |`sudo userdel -r benutzername` |Home-Verzeichnis wird gelöscht |