Zum Hauptinhalt springen
Zurück zur Kategorie

Linux Benutzer- und Rechteverwaltung: sudo und Gruppen

Linux-Benutzerverwaltung mit useradd/usermod/userdel, Gruppenverwaltung, sudo-Konfiguration, SSH-schlüsselbasierte Authentifizierung und das Prinzip der minimalen Rechte.

Lesezeit: 13 min Serververwaltung
linuxbenutzerverwaltungsudogruppensshsicherheituseraddberechtigungen
Autor
REXE Teknoloji Network & Security Team
Redaktion
REXE Teknoloji Technical Editorial
Erstveröffentlichung
Letzte Aktualisierung

Linux Benutzer- und Rechteverwaltung: sudo und Gruppen

Benutzer- und Rechteverwaltung in Linux ist ein Grundpfeiler der Serversicherheit. Richtig konfigurierte Benutzerkonten und Berechtigungen verhindern unbefugten Zugriff und begrenzen die Auswirkungen von Sicherheitsverletzungen. Diese Anleitung behandelt Linux-Benutzerverwaltung, Gruppenstruktur, sudo-Konfiguration und SSH-schlüsselbasierte Authentifizierung.

Benutzerverwaltung

Benutzer erstellen

hljs bash
# Einfachen Benutzer erstellen
sudo useradd benutzername

# Benutzer mit Home-Verzeichnis erstellen
sudo useradd -m benutzername

# Mit Home-Verzeichnis, Shell und Kommentar
sudo useradd -m -s /bin/bash -c "Vor- und Nachname" benutzername

# Mit bestimmter UID
sudo useradd -m -u 1500 benutzername

# Mit primärer Gruppe
sudo useradd -m -g www-data benutzername

# Passwort setzen
sudo passwd benutzername

# Benutzerinformationen anzeigen
id benutzername
getent passwd benutzername

Benutzer bearbeiten

hljs bash
# Benutzernamen ändern
sudo usermod -l neuer_name alter_name

# Home-Verzeichnis ändern
sudo usermod -d /neues/home -m benutzername

# Shell ändern
sudo usermod -s /bin/bash benutzername

# Konto sperren
sudo usermod -L benutzername

# Konto entsperren
sudo usermod -U benutzername

# Ablaufdatum setzen
sudo usermod -e 2025-12-31 benutzername

# Passwortänderung beim nächsten Login erzwingen
sudo chage -d 0 benutzername

Benutzer löschen

hljs bash
# Benutzer löschen (Home-Verzeichnis bleibt)
sudo userdel benutzername

# Benutzer und Home-Verzeichnis löschen
sudo userdel -r benutzername

# Dateien des Benutzers finden
find / -user benutzername 2>/dev/null

Gruppenverwaltung

hljs bash
# Gruppe erstellen
sudo groupadd entwickler

# Benutzer zur Gruppe hinzufügen
sudo usermod -aG entwickler benutzername

# Zu mehreren Gruppen hinzufügen
sudo usermod -aG gruppe1,gruppe2,gruppe3 benutzername

# Gruppen des Benutzers anzeigen
groups benutzername
id benutzername

# Benutzer in einer Gruppe auflisten
getent group entwickler

# Benutzer aus Gruppe entfernen
sudo gpasswd -d benutzername entwickler

# Gruppe löschen
sudo groupdel entwickler

# Gruppe umbenennen
sudo groupmod -n neuer_name alter_name

sudo-Konfiguration

sudo-Zugriff gewähren

hljs bash
# Benutzer zur sudo-Gruppe hinzufügen (Debian/Ubuntu)
sudo usermod -aG sudo benutzername

# Benutzer zur wheel-Gruppe hinzufügen (RHEL/CentOS)
sudo usermod -aG wheel benutzername

# Änderung testen
su - benutzername
sudo whoami  # sollte root ausgeben

sudoers-Datei konfigurieren

hljs bash
# sudoers-Datei sicher bearbeiten
sudo visudo
# /etc/sudoers Inhalt

# Vollständiger sudo-Zugriff für Benutzer
benutzername ALL=(ALL:ALL) ALL

# Passwortloser sudo (mit Vorsicht verwenden)
benutzername ALL=(ALL) NOPASSWD: ALL

# sudo nur für bestimmte Befehle
benutzername ALL=(ALL) /usr/bin/systemctl, /usr/bin/apt

# sudo-Zugriff für eine Gruppe
%entwickler ALL=(ALL:ALL) ALL

# Passwortlos für bestimmten Befehl
benutzername ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
hljs bash
# Separate Datei erstellen (empfohlene Methode)
sudo nano /etc/sudoers.d/benutzername

# Dateiinhalt
benutzername ALL=(ALL:ALL) ALL

# Dateiberechtigungen setzen
sudo chmod 440 /etc/sudoers.d/benutzername

Dateiberechtigungen

hljs bash
# Berechtigungen anzeigen
ls -la /verzeichnis/

# Berechtigungen ändern (numerisch)
chmod 755 skript.sh    # rwxr-xr-x
chmod 644 datei.txt    # rw-r--r--
chmod 600 geheim.key   # rw-------

# Berechtigungen ändern (symbolisch)
chmod u+x skript.sh    # Ausführen für Eigentümer hinzufügen
chmod g-w datei.txt    # Schreiben von Gruppe entfernen
chmod o-r geheim.txt   # Lesen von anderen entfernen

# Eigentümerschaft ändern
chown benutzername datei.txt
chown benutzername:gruppe datei.txt

# Verzeichnis und Inhalt rekursiv ändern
chown -R benutzername:gruppe /verzeichnis/

SSH-schlüsselbasierte Authentifizierung

SSH-Schlüsselpaar generieren

hljs bash
# Schlüssel auf lokalem Rechner generieren
ssh-keygen -t ed25519 -C "email@example.com"

# RSA-Schlüssel (für ältere Systeme)
ssh-keygen -t rsa -b 4096 -C "email@example.com"

# Schlüssel werden in ~/.ssh/ erstellt:
# ~/.ssh/id_ed25519 (privater Schlüssel)
# ~/.ssh/id_ed25519.pub (öffentlicher Schlüssel)

Öffentlichen Schlüssel auf Server kopieren

hljs bash
# Mit ssh-copy-id (einfachste Methode)
ssh-copy-id benutzer@server_ip

# Manuelle Kopie
cat ~/.ssh/id_ed25519.pub | ssh benutzer@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

# Manuelle Einrichtung auf Server
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys  # öffentlichen Schlüssel einfügen
chmod 600 ~/.ssh/authorized_keys

SSH-Sicherheitskonfiguration

hljs bash
sudo nano /etc/ssh/sshd_config
# Passwort-Authentifizierung deaktivieren (nach Schlüssel-Einrichtung)
PasswordAuthentication no

# Root-Login deaktivieren
PermitRootLogin no

# Leere Passwörter nicht erlauben
PermitEmptyPasswords no

# Maximale Login-Versuche
MaxAuthTries 3

# Bestimmte Benutzer erlauben
AllowUsers benutzer1 benutzer2

# Bestimmte Gruppe erlauben
AllowGroups ssh-users
hljs bash
# SSH-Dienst neu starten
sudo systemctl restart sshd

# Konfiguration testen
sudo sshd -t

Prinzip der minimalen Rechte

Das Prinzip der minimalen Rechte besagt, dass jeder Benutzer und Prozess nur die Mindestberechtigungen haben sollte, die zur Erfüllung seiner Aufgabe erforderlich sind.

hljs bash
# Dedizierten Benutzer für Anwendung erstellen (ohne Shell)
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/myapp myapp_user

# Home-Verzeichnis für Dienstbenutzer erstellen
sudo mkdir -p /var/lib/myapp
sudo chown myapp_user:myapp_user /var/lib/myapp
sudo chmod 750 /var/lib/myapp

Vermeiden Sie die direkte Verwendung des Root-Kontos. Erstellen Sie für jeden Administrator ein separates Konto und autorisieren Sie über sudo. So sind alle Aktionen protokolliert und nachverfolgbar.

Benutzeraktivität überwachen

hljs bash
# Letzte Anmeldungen anzeigen
last
lastlog

# Fehlgeschlagene Anmeldeversuche anzeigen
lastb

# Aktive Benutzer anzeigen
who
w

# sudo-Nutzung überwachen
sudo grep sudo /var/log/auth.log

Fazit

Linux-Benutzer- und Rechteverwaltung bildet die Grundlage der Serversicherheit. Gewähren Sie jedem Benutzer nur die benötigten Berechtigungen, verwenden Sie SSH-schlüsselbasierte Authentifizierung und schränken Sie den Root-Zugriff ein. Diese Praktiken schützen Ihre REXE-Server vor unbefugtem Zugriff.

Häufig gestellte Fragen

Was ist der Unterschied zwischen sudo und su?

'sudo' führt einen bestimmten Befehl als Root (oder anderen Benutzer) mit Ihrem eigenen Passwort aus. 'su' wechselt vollständig zu einem anderen Benutzer und erfordert dessen Passwort. sudo wird aus Sicherheitsgründen bevorzugt, da alle ausgeführten Befehle protokolliert werden.

Ich habe einen Benutzer zur sudo-Gruppe hinzugefügt, aber es funktioniert nicht, warum?

Der Benutzer muss sich ab- und wieder anmelden, damit Gruppenänderungen wirksam werden. In der aktuellen Sitzung führen Sie 'newgrp sudo' oder 'exec su -l $USER' aus. Überprüfen Sie auch mit dem Befehl 'groups', ob der Benutzer hinzugefügt wurde.

Wie funktioniert SSH-schlüsselbasierte Authentifizierung?

Ein öffentliches/privates Schlüsselpaar wird generiert. Der öffentliche Schlüssel wird in ~/.ssh/authorized_keys auf dem Server hinzugefügt. Bei der Verbindung sendet der Server eine mit dem öffentlichen Schlüssel verschlüsselte Herausforderung; der Client entschlüsselt sie mit dem privaten Schlüssel. Kein Passwort erforderlich, sicherer.

Wie sehe ich, welchen Gruppen ein Benutzer angehört?

'groups benutzername' oder 'id benutzername' zeigt alle Gruppen eines Benutzers. 'getent group gruppenname' listet alle Benutzer in einer bestimmten Gruppe auf.

Warum wird /usr/sbin/nologin für Dienstkonten verwendet?

Systemkonten für Dienste wie Nginx oder MySQL benötigen keinen interaktiven Shell-Zugriff. Die '/usr/sbin/nologin'-Shell verhindert SSH- oder su-Anmeldungen mit diesen Konten und reduziert die Angriffsfläche.

Verwandte Artikel

NetzwerkverkehrEingehend GbpsAusgehend Gbps