Wie man den Benutzer in Linux wechselt: Der vollständige Leitfaden
Linux ist ein Multi-User-Betriebssystem von Natur aus, und die Verwaltung von Benutzeridentitäten ist eine der grundlegendsten Fähigkeiten, die jeder Systemadministrator beherrschen muss. Egal ob Sie eine VPS Hosting-Umgebung verwalten, einen Webserver konfigurieren oder Dateiberechtigungsprobleme nach einer Bereitstellung beheben, das Verständnis, wie man Benutzer in Linux wechselt, ist unverzichtbar.
Der Ausdruck „Benutzer wechseln” in Linux umfasst tatsächlich mehrere unterschiedliche Operationen, jede mit ihren eigenen Tools, Risiken und Best Practices:
- Zu einem anderen Konto in der Shell wechseln (z. B. von
johnzuroot) für eine interaktive Sitzung - Ein einzelnes Kommando als ein anderer Benutzer ausführen, ohne Sitzungen vollständig zu wechseln
- Ändern, welcher Benutzer einen Service oder Prozess ausführt — kritisch für die Sicherheitshärtung
- Ändern von Datei- und Verzeichniseigentum — unverzichtbar nach Migrationen, Wiederherstellungen oder Bereitstellungen
- Ändern von Benutzerkontoattributen — Umbenennung von Benutzern, Änderung von UIDs oder Anpassung von Gruppenmitgliedschaften
Dieser Leitfaden behandelt alle diese Szenarien ausführlich und erklärt, wann jeder Ansatz zu verwenden ist, wie man ihn sicher durchführt und welche Fehler zu vermeiden sind — damit Sie Linux-Benutzer sicher verwalten können, ohne Berechtigungen, Services oder Zugriff zu beschädigen.
Inhaltsverzeichnis
- Zu einem anderen Benutzer wechseln (Interaktive Shell)
- Ein einzelnes Kommando als ein anderer Benutzer ausführen
- Den Benutzer ändern, unter dem ein Service läuft (systemd)
- Dateieigentum mit chown ändern
- Ihre aktuelle Identität bestätigen
- Benutzerkontoattribute ändern
- Schnellreferenz-Spickzettel
Zu einem anderen Benutzer wechseln (Interaktive Shell)
Wenn Sie eine vollständige interaktive Terminalsitzung als ein anderer Benutzer benötigen — für Systemadministration, zum Testen des Anwendungsverhaltens unter einem anderen Konto oder zum Zugriff auf ein Service-Konto — bietet Linux zwei primäre Tools: su und sudo.
su verwenden (Benutzer wechseln)
Das Kommando su ersetzt Ihre aktuelle Benutzeridentität durch eine andere:
su - usernameDas Flag - (auch geschrieben als -l oder --login) ist wichtig: es lädt die vollständige Login-Umgebung des Zielbenutzers, einschließlich seines Home-Verzeichnisses, PATH, Shell-Profil und Umgebungsvariablen. Ohne das Flag - erben Sie viel von Ihrer aktuellen Umgebung, was zu subtilen und verwirrenden Verhaltensweisen führen kann — besonders beim Ausführen von Skripten oder Services.
Um direkt zu root zu wechseln:
su -> Sicherheitshinweis: Auf vielen modernen Linux-Distributionen ist das Root-Konto-Passwort standardmäßig deaktiviert (besonders auf Ubuntu-basierten Systemen). In diesen Fällen schlägt su zu root fehl, und sudo ist der richtige Ansatz.
sudo -i verwenden (Bevorzugt für Root/Admin-Shells)
sudo -iDies gibt Ihnen eine Root-Login-Shell, die su - entspricht, authentifiziert sich aber mit Ihren eigenen sudo-Privilegien, anstatt das Root-Passwort zu benötigen. Dies ist der empfohlene Ansatz auf den meisten modernen Distributionen, weil:
- Es vermeidet, das Root-Passwort zu teilen oder zu kennen
- Alle Aktionen werden über den sudo-Audit-Trail protokolliert
- Es respektiert Ihre sudoers-Konfiguration und Einschränkungen
Zu einem anderen Benutzer mit einer Login-Shell über sudo wechseln
sudo -iu usernameDies kombiniert -i (Login-Shell) und -u (Zielbenutzer) und gibt Ihnen eine saubere Login-Umgebung als der angegebene Benutzer — ohne das Passwort dieses Benutzers zu benötigen.
Ein einzelnes Kommando als ein anderer Benutzer ausführen
Oft benötigen Sie keine vollständige interaktive Sitzung — Sie müssen nur ein Kommando mit einer anderen Identität ausführen. Dies ist das häufigste und sicherste Muster für Privilegienerweiterung.
sudo -u verwenden
sudo -u username whoamisudo -u postgres psqlDas zweite Beispiel ist äußerst häufig in der Datenbankadministration — Wechsel zum postgres-Systembenutzer, um auf PostgreSQL ohne Passwortauthentifizierung zuzugreifen.
Ein Kommando mit einer sauberen Login-Umgebung ausführen
sudo -iu username command_hereDies stellt sicher, dass das Kommando mit der vollständigen Umgebung des Zielbenutzers läuft, nicht mit den Variablen Ihrer aktuellen Sitzung.
Ein Kommando als Root ausführen
sudo systemctl restart nginxDies ist das Standardmuster für administrative Aufgaben: Führen Sie ein einzelnes privilegiertes Kommando aus, ohne eine Root-Shell zu öffnen.
Den Benutzer ändern, unter dem ein Service läuft (systemd)
Auf praktisch allen modernen Linux-Distributionen verwaltet systemd Services. Aus Sicherheitsgründen sollte jeder Service unter einem dedizierten, nicht-privilegierten Benutzerkonto laufen, anstatt als Root. Services als Root auszuführen ist ein erhebliches Sicherheitsrisiko — wenn der Service kompromittiert wird, erhält der Angreifer Root-Zugriff auf das gesamte System.
Dies ist besonders wichtig auf Dedicated Servern und produktiven VPS-Umgebungen, in denen mehrere Services gleichzeitig laufen können.
Die aktuelle Service-Konfiguration überprüfen
systemctl cat myservice.serviceSuchen Sie nach den Direktiven User= und Group= im Abschnitt [Service]:
[Service]
User=www-data
Group=www-dataDen Service-Benutzer überschreiben (Sichere Methode)
Anstatt die ursprüngliche Unit-Datei zu bearbeiten (die bei Paket-Upgrades überschrieben werden kann), verwenden Sie systemctl edit, um eine Drop-in-Überschreibung zu erstellen:
sudo systemctl edit myservice.serviceDies öffnet einen Editor, in dem Sie hinzufügen:
[Service]
User=myuser
Group=mygroupSpeichern Sie die Datei und wenden Sie dann die Änderungen an:
sudo systemctl daemon-reload
sudo systemctl restart myservice.serviceÜberprüfen Sie, dass der Service als der richtige Benutzer läuft
systemctl status myservice.serviceps -eo user,pid,cmd | grep myserviceÜberprüfen Sie den Benutzer eines laufenden Prozesses
ps -eo user,pid,cmd | grep nginxps -p <PID> -o user,group,cmd> Wichtig: Linux erlaubt es nicht, den Benutzer eines bereits laufenden Prozesses an Ort und Stelle zu ändern. Sie müssen den Prozess neu starten (oder den Service-Manager so konfigurieren, dass er ihn unter dem richtigen Benutzer startet), damit die Änderung wirksam wird.
Dateieigentum mit chown ändern
Dateieigentum ist ein Kernbestandteil von Linux’ Berechtigungsmodell. Nach Migrationen, Bereitstellungen, Sicherungen oder Wiederherstellungen kann das Eigentum dem falschen Benutzer zugewiesen werden — was zu Berechtigungsverweigerungsfehlern, defekten Webanwendungen oder unzugänglichen Daten führt. Das Kommando chown ist Ihr primäres Werkzeug zur Behebung dieses Problems.
Dies ist eine häufige Aufgabe beim Einrichten von Shared Web Hosting-Umgebungen oder beim Bereitstellen von Webanwendungen auf einem VPS.
Den Eigentümer einer Datei ändern
sudo chown username file.txtSowohl Eigentümer als auch Gruppe ändern
sudo chown username:groupname file.txtRekursive Eigentumsänderung (Mit Vorsicht verwenden)
sudo chown -R username:groupname /var/www/siteDas Flag -R wendet die Änderung rekursiv auf alle Dateien und Unterverzeichnisse an. Verwenden Sie dies sorgfältig — das Anwenden auf den falschen Pfad (z. B. / oder /etc) kann Ihr gesamtes System beschädigen.
Symbolische Links bewahren
sudo chown -h username:groupname symlinkOhne -h folgt chown symbolischen Links und ändert das Eigentum der Ziel-Datei, nicht des symbolischen Links selbst. Verwenden Sie -h, wenn Sie speziell das Eigentum von symbolischen Links ändern möchten.
Eigentum vor Änderungen in der Vorschau anzeigen
Für große Verzeichnisbäume sollten Sie immer vor dem Anwenden eines rekursiven chown eine Vorschau anzeigen:
find /path -maxdepth 2 -printf '%u:%g %pn' | headDies zeigt den aktuellen Eigentümer und die Gruppe für die oberen zwei Ebenen des Verzeichnisbaums an, sodass Sie den Umfang der Änderung bestätigen können, bevor Sie sie durchführen.
Ihre aktuelle Identität bestätigen
Überprüfen Sie immer, wer Sie sind und in welchem Kontext Sie arbeiten, bevor Sie Änderungen vornehmen. Dies verhindert versehentliche Änderungen unter dem falschen Konto.
Überprüfen Sie Ihren aktuellen Benutzer
whoamiVollständige Identitätsinformationen abrufen (Benutzer, Gruppen, UIDs)
idBeispielausgabe:
uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)Sehen Sie, wer im System angemeldet ist
whowÜberprüfen Sie den ursprünglichen Benutzer bei Verwendung von sudo
Wenn Sie mit sudo eskalieren, sind zwei Umgebungsvariablen relevant:
echo $USER # The current effective user (root)
echo $SUDO_USER # The original user who invoked sudo (e.g., alice)Diese Unterscheidung ist in Skripten wichtig — $SUDO_USER sagt Ihnen, wer das Kommando tatsächlich ausgeführt hat.
Benutzerkontoattribute ändern
Manchmal bedeutet „Benutzer ändern” das Ändern des Kontos selbst: Umbenennung, Änderung seiner UID oder Anpassung von Gruppenmitgliedschaften. Dies sind permanente, systemweite Änderungen, die Anmeldungen, Dateiberechtigungen und Service-Zugriff beeinflussen können.
> Best Practice: Stellen Sie vor Kontoänderungen sicher, dass der Benutzer abgemeldet ist und keine Prozesse unter diesem Konto laufen.
Einen Benutzer umbenennen (Benutzernamen ändern)
sudo usermod -l newname oldnameDies ändert den Anmeldenamen, benennt aber das Home-Verzeichnis nicht automatisch um. Um auch das Home-Verzeichnis zu verschieben und umzubenennen:
sudo usermod -d /home/newname -m newnameWenn der Benutzer eine primäre Gruppe mit dem gleichen Namen wie sein alter Benutzername hat (was auf den meisten Distributionen der Standard ist), aktualisieren Sie auch den Gruppennamen:
sudo groupmod -n newname oldnameDie UID eines Benutzers ändern
sudo usermod -u 2001 username> Kritisch: Nach dem Ändern einer UID werden alle Dateien, die zuvor der alten UID gehörten, als einer unbekannten numerischen ID gehörend angezeigt. Sie müssen dies sofort beheben:
sudo find / -user oldUID -exec chown -h username {} ;Ersetzen Sie oldUID durch die vorherige numerische UID. Dieses Kommando durchsucht das gesamte Dateisystem nach Dateien mit der alten UID und weist sie dem neuen Benutzernamen neu zu.
Einen Benutzer zu einer Gruppe hinzufügen
Der häufigste Anwendungsfall ist die Gewährung von sudo-Zugriff für einen Benutzer:
Debian/Ubuntu:
sudo usermod -aG sudo usernameRHEL / AlmaLinux / Rocky Linux:
sudo usermod -aG wheel usernameDas Flag -a ist kritisch — es fügt den Benutzer zur Gruppe hinzu, ohne ihn aus bestehenden Gruppen zu entfernen. Das Weglassen von -a ersetzt alle Gruppenmitgliedschaften durch nur die angegebene Gruppe.
Überprüfen Sie die Gruppenmitgliedschaft
id usernameSchnellreferenz-Spickzettel
Hier ist eine konsolidierte Referenz für alle Benutzer-Wechsel- und Verwaltungsoperationen, die in diesem Leitfaden behandelt werden:
| Aufgabe | Kommando |
|---|---|
| Zu einem anderen Benutzer wechseln (Login-Shell) | su - username |
| Zu einem anderen Benutzer über sudo wechseln | sudo -iu username |
| Eine Root-Shell öffnen | sudo -i |
