Wie man den Benutzer in Linux ändert: 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 - Einen einzelnen Befehl als ein anderer Benutzer ausführen, ohne vollständig die Sitzung 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 es sicher macht und welche Fehler zu vermeiden sind — damit Sie Linux-Benutzer sicher verwalten können, ohne Berechtigungen, Services oder Zugriff zu beschädigen.
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 Dienstkonto — bietet Linux zwei primäre Tools: su und sudo.
Verwendung von su (Benutzer wechseln)
Der Befehl 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-Profils 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 Diensten.
Um direkt zu root zu wechseln:
su -> Sicherheitshinweis: Bei vielen modernen Linux-Distributionen ist das Root-Kontokennwort standardmäßig deaktiviert (besonders bei Ubuntu-basierten Systemen). In diesen Fällen schlägt su zu root fehl, und sudo ist der richtige Ansatz.
Verwendung von sudo -i (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-Kennwort zu benötigen. Dies ist der empfohlene Ansatz bei den meisten modernen Distributionen, da:
- Es vermeidet, das Root-Kennwort freigeben oder kennen zu müssen
- Alle Aktionen über die sudo-Audit-Spur protokolliert werden
- Es Ihre sudoers-Konfiguration und Einschränkungen respektiert
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 Kennwort dieses Benutzers zu benötigen.
Einen einzelnen Befehl als anderer Benutzer ausführen
Oft benötigen Sie keine vollständige interaktive Sitzung — Sie müssen nur einen Befehl mit einer anderen Identität ausführen. Dies ist das häufigste und sicherste Muster für Privilege Escalation.
Verwendung von sudo -u
sudo -u username whoamisudo -u postgres psqlDas zweite Beispiel ist in der Datenbankadministration äußerst verbreitet — Wechsel zum postgres Systembenutzer, um auf PostgreSQL ohne Passwortauthentifizierung zuzugreifen.
Einen Befehl mit einer sauberen Login-Umgebung ausführen
sudo -iu username command_hereDies stellt sicher, dass der Befehl mit der vollständigen Umgebung des Zielbenutzers ausgeführt wird, nicht mit den Variablen Ihrer aktuellen Sitzung.
Einen Befehl als Root ausführen
sudo systemctl restart nginxDies ist das Standardmuster für administrative Aufgaben: Führen Sie einen einzelnen privilegierten Befehl aus, ohne eine Root-Shell zu öffnen.
Benutzer ändern, unter dem ein Dienst ausgeführt wird (systemd)
Auf praktisch allen modernen Linux-Distributionen verwaltet systemd Dienste. Aus Sicherheitsgründen sollte jeder Dienst unter einem dedizierten, nicht privilegierten Benutzerkonto ausgeführt werden, anstatt als root. Das Ausführen von Diensten als root ist ein erhebliches Sicherheitsrisiko — wenn der Dienst kompromittiert wird, erhält der Angreifer root-Zugriff auf das gesamte System.
Dies ist besonders wichtig auf Dedicated Servers und produktiven VPS-Umgebungen, in denen mehrere Dienste gleichzeitig ausgeführt werden können.
Aktuelle Dienstkonfiguration überprüfen
systemctl cat myservice.serviceSuchen Sie nach den Direktiven User= und Group= im Abschnitt [Service]:
[Service]
User=www-data
Group=www-dataDienst-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 Folgendes 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, ob der Dienst unter dem richtigen Benutzer ausgeführt wird
systemctl status myservice.serviceps -eo user,pid,cmd | grep myserviceBenutzer eines beliebigen laufenden Prozesses überprüfen
ps -eo user,pid,cmd | grep nginxps -p <PID> -o user,group,cmd> Wichtig: Linux erlaubt es nicht, den Benutzer eines bereits laufenden Prozesses direkt 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.
Dateieigentümer mit chown ändern
Dateieigentümerschaft ist ein Kernbestandteil von Linuxs Berechtigungsmodell. Nach Migrationen, Bereitstellungen, Sicherungen oder Wiederherstellungen kann die Eigentümerschaft dem falschen Benutzer zugewiesen werden – was zu Berechtigungsverweigerungsfehlern, fehlerhaften Webanwendungen oder unzugänglichen Daten führt. Der chown Befehl ist dein 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.
Eigentümer einer Datei ändern
sudo chown username file.txtEigentümer und Gruppe ändern
sudo chown username:groupname file.txtRekursive Eigentümeränderung (Mit Vorsicht verwenden)
sudo chown -R username:groupname /var/www/siteDas -R Flag wendet die Änderung rekursiv auf alle Dateien und Unterverzeichnisse an. Verwende dies mit Vorsicht – wenn du es auf den falschen Pfad anwendest (z. B. / oder /etc), kann dein gesamtes System beschädigt werden.
Symbolische Links beibehalten
sudo chown -h username:groupname symlinkOhne -h folgt chown symbolischen Links und ändert die Eigentümerschaft der Zieldatei, nicht des symbolischen Links selbst. Verwende -h, wenn du speziell die Eigentümerschaft des symbolischen Links ändern möchtest.
Eigentümerschaft vor Änderungen in der Vorschau anzeigen
Zeige für große Verzeichnisbäume immer eine Vorschau an, bevor du eine rekursive chown anwendest:
find /path -maxdepth 2 -printf '%u:%g %pn' | headDies zeigt den aktuellen Eigentümer und die Gruppe für die obersten zwei Ebenen des Verzeichnisbaums an, sodass du den Umfang der Änderung bestätigen kannst, bevor du sie durchführst.
Bestätigen Sie Ihre aktuelle Identität
Überprüfen Sie vor Änderungen immer, wer Sie sind und in welchem Kontext Sie arbeiten. 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 zeigt Ihnen, wer den Befehl tatsächlich ausgeführt hat.
Benutzerkontoattribute ändern
Manchmal bedeutet „Benutzer ändern” das Ändern des Kontos selbst: Umbenennung, Änderung der UID oder Anpassung der Gruppenmitgliedschaften. Dies sind permanente, systemweite Änderungen, die sich auf Anmeldungen, Dateiberechtigungen und Dienstzugriff auswirken können.
> Best Practice: Stellen Sie vor Kontoänderungen sicher, dass der Benutzer abgemeldet ist und keine Prozesse unter diesem Konto ausgeführt werden.
Benutzer umbenennen (Benutzernamen ändern)
sudo usermod -l newname oldnameDies ändert den Anmeldenamen, benennt aber das Home-Verzeichnis nicht automatisch um. Um das Home-Verzeichnis auch 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 Standard ist), aktualisieren Sie auch den Gruppennamen:
sudo groupmod -n newname oldnameUID 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 Eigentum einer unbekannten numerischen ID angezeigt. Sie müssen dies sofort beheben:
sudo find / -user oldUID -exec chown -h username {} ;Ersetzen Sie oldUID durch die vorherige numerische UID. Dieser Befehl durchsucht das gesamte Dateisystem nach Dateien mit der alten UID und weist sie dem neuen Benutzernamen zu.
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.
Gruppenmitgliedschaft überprüfen
id usernameSchnellreferenz-Spickzettel
Hier ist eine konsolidierte Referenz für alle in diesem Leitfaden behandelten Benutzer-Wechsel- und Verwaltungsvorgänge:
| Aufgabe | Befehl | |
|---|---|---|
| Zu anderem Benutzer wechseln (Login-Shell) | su - username | |
| Zu anderem Benutzer via sudo wechseln | sudo -iu username | |
| Root-Shell öffnen | sudo -i | |
| Befehl als anderer Benutzer ausführen | sudo -u username command | |
| Befehl als postgres ausführen | sudo -u postgres psql | |
| Aktuellen Benutzer prüfen | whoami | |
| Vollständige Identität und Gruppen prüfen | id | |
| Ursprünglichen sudo-Aufrufer prüfen | echo $SUDO_USER | |
| Dateieigentümer ändern | sudo chown username file | |
| Dateieigentümer und Gruppe ändern | sudo chown username:group file | |
| Rekursive Eigentumsänderung | sudo chown -R username:group /path | |
| Verzeichniseigentum in der Vorschau anzeigen | find /path -maxdepth 2 -printf '%u:%g %pn' | |
| Service-Benutzer ändern (systemd) | sudo systemctl edit myservice.service | |
| systemd nach Änderungen neu laden | sudo systemctl daemon-reload | |
| Prozessbenutzer überprüfen | `ps -eo user,pid,cmd | grep service` |
| Benutzer umbenennen | sudo usermod -l newname oldname | |
| Home-Verzeichnis verschieben | sudo usermod -d /home/newname -m newname | |
| UID ändern | sudo usermod -u 2001 username | |
| Eigentum nach UID-Änderung reparieren | sudo find / -user oldUID -exec chown -h username {} ; | |
| Benutzer zur sudo-Gruppe hinzufügen | sudo usermod -aG sudo username | |
| Gruppenmitgliedschaft überprüfen | id username |
Zusammenfassung
Die Verwaltung von Benutzern in Linux ist keine einzelne Operation — es ist eine Familie von verwandten Aufgaben, jede mit ihren eigenen Tools und Auswirkungen:
- Verwenden Sie
sudo -iu usernamefür interaktive Sitzungen als anderer Benutzer (bevorzugt gegenübersuauf modernen Systemen) - Verwenden Sie
sudo -u username commandzum Ausführen einzelner Befehle mit einer anderen Identität - Verwenden Sie
systemctl editum sicher zu ändern, welcher Benutzer einen systemd-Dienst ausführt - Verwenden Sie
chownum Dateieigentümerschaft nach Bereitstellungen, Migrationen oder Berechtigungsproblemen zu beheben - Verwenden Sie
usermodfür permanente Kontoänderungen — Umbenennung, UID-Änderungen und Gruppenverwaltung
Das Verständnis dieser Unterscheidungen hilft Ihnen, häufige Fehler wie das Unterbrechen von Dienstberechtigungen, das Sperren von Dateien oder das versehentliche Gewähren übermäßiger Berechtigungen zu vermeiden.
Wenn Sie eine Linux-basierte Infrastruktur betreiben — ob es sich um einen Webserver, eine Datenbank oder einen benutzerdefinierten Anwendungsstapel handelt — macht eine ordnungsgemäß konfigurierte Hosting-Umgebung die Benutzerverwaltung erheblich einfacher. AlexHost bietet flexible VPS Control Panels und VPS mit cPanel Optionen, die Ihnen vollständigen Root-Zugriff zusammen mit intuitiven Verwaltungsschnittstellen geben, damit Sie alles in diesem Leitfaden mit Zuversicht anwenden können.
bei allen Hosting-Diensten