Richtige Art und Weise der Änderung des Benutzernamens in Ubuntu oder einem Linux


26

Ich benutze Ubuntu 12.04 und habe einige Anpassungen vorgenommen. Ich werde es auch zu einer neuen ISO machen, die Ubuntu angepasst ist.

Ich möchte fragen, wie ich meinen Benutzernamen ändern kann. In meinem aktuellen Home-Ordner befinden sich viele Einstellungen. Ich möchte mich also nicht mit dem Ändern des Benutzernamens anlegen.

Gibt es dafür eine bewährte Methode oder einen Workflow?


Ihr Ausgangsverzeichnis wird häufig mit Ihrem Benutzernamen erstellt. Sie können den Benutzernamen jedoch ändern, ohne das Ausgangsverzeichnis zu ändern, indem Sie die ersten Elemente der Einträge in / etc / passwd und / etc / shadow ändern. Stellen Sie sicher, dass Sie sich als root anmelden können (nicht nur als sudo aus Ihrem Benutzer-Login), falls Sie einen Fehler machen.
Anthon

Was ist, wenn ich den Namen des Home-Verzeichnisses ändern möchte? und was genau ist mit sayin first elements gemeint?
CorpusCallosum

Antworten:


28

Der wirklich richtige Weg? Angenommen, Sie möchten den Benutzer 'peter' in 'paul' ändern.

groupadd paul
usermod -d /home/paul -m -g paul -l paul peter

Dies ändert den Namen, die Gruppe, das Ausgangsverzeichnis und den Besitz und die Gruppe dieses Verzeichnisses in die neuen zusammen mit allen Dateien. Am Ende haben Sie einen Benutzer, der nicht von der ursprünglichen Erstellung als 'paul' zu unterscheiden ist.

Eine andere Möglichkeit wäre, die ersten Felder der Peter-Einträge in den /etc/passwdund /etc/shadow-Dateien zu bearbeiten . Ändern Sie dann jedes Vorkommen von "Peter" in "Paul" /etc/group. Benennen Sie anschließend das Basisverzeichnis von /home/peterin um /home/paul. Und dann chown -R paul /home/peter, um die Eigentümer und Gruppen des Verzeichnisses und alle Dateien und Verzeichnisse darunter zu bekommen, um die neuen zu haben.


3
Das Chown wird nicht benötigt, wenn Sie / etc / {passwd, shadow, group} bearbeitet haben - die Inode speichert Eigentümer und Gruppen numerisch
Graham Nicholls

5

Ich würde empfehlen, nicht zu versuchen, den Namen eines Benutzers zu ändern. Dies ist im Allgemeinen mit Problemen behaftet, wenn der Name des Benutzers in Konfigurationsdateien in Form des Basisverzeichnisses des Benutzers statisch referenziert wird /home/<username>. Diese werden so gut wie nie generisch geschrieben. Daher ist es normalerweise am besten, einen neuen Benutzernamen zu erstellen und die Dateien und Daten des Benutzers auf das neue Konto zu migrieren.


1
Danke für den Kommentar. Ich habe einen neuen Benutzer erstellt und die Benutzer-ID / Gruppe und das Ausgangsverzeichnis in Bezug auf den alten geändert. anscheinend funktioniert alles cool. Denken Sie, dass diese Methode auch Probleme verursachen kann?
CorpusCallosum

3

Probieren Sie den Befehl usermod aus .

exec sudo su
usermod --login newname oldname

Mach einfach 'sudo was auch immer du machen wolltest'. Wenn Sie sudo su ausführen, werden die Befehle nicht ordnungsgemäß protokolliert.
Keith Twombley

3

Du kannst es ändern; siehe Wie ändere ich meinen Benutzernamen? auf AskUbuntu. Diese Anweisungen funktionierten gut für mich. Um Ihre Konfiguration beizubehalten, erstellen Sie einfach einen Symlink für Ihr altes Basisverzeichnis, wie in den Antworten auf diese Frage beschrieben.


3

Usermod , um die Änderung Benutzernamen und Home - Verzeichnis . Benutzer peter zu paul ändern:

usermod -l paul peter
grep paul /etc/passwd /etc/shadow       # check

ändere das Home-Verzeichnis und verschiebe alles dorthin (falls nötig erstellt)

usermod -m -d /home/paul paul
grep paul /etc/passwd               # check

Ändern Sie den Gruppennamen , aber verwenden Sie nicht usermod, da Sie zuerst eine andere Gruppe erstellen müssen (z. B. GID 1001), und obwohl die GID für alles im $ HOME-Verzeichnis aktualisiert wird, müssen Sie die suchen und ändern Dateien und Verzeichnisse an anderer Stelle mit dem alten Gruppeneigentum. Ändern Sie stattdessen einfach den Gruppennamen manuell.

nano /etc/group

und ändern

peter:x:1000:

zu

paul:x:1000:

Sie müssen die von cron, at und anderen Diensten verwendeten Dateinamen ändern , die den Benutzernamen anstelle der UID verwenden. Verwenden

find /var -name "*peter*"

um diese Dateien zu finden.

Sie müssen auch die Konfigurationsdateien ändern, die von einigen Diensten verwendet werden, z.

Schließlich müssen Skripte mit "/ home / peter /" bearbeitet werden. Ändern Sie das Vorkommen von "/ home / peter /" in "$ HOME".

Das Ändern der Benutzeridentitäten ist nicht viel Arbeit, Sie müssen nur gründlich vorgehen.


Upvoted, weil dies der gleiche Ansatz ist, den ich verwende (aus den gleichen Gründen in Bezug auf die Erhaltung der GID). Übrigens können Sie die beiden usermodBefehle tatsächlich zu einem kombinieren, und Sie sollten auch daran denken, sie /etc/gshadowzusammen mit zu bearbeiten /etc/group. Die beiden können mit GNU sed geändert werden: sudo sed -i 's/oldname/newname/g' /etc/{group,gshadow}- oder noch besser mit sudo groupmod -n newname oldname. Gut gemacht, um einige der anderen Fallstricke hervorzuheben, z. B. den Namen der Crontab des Benutzers manuell ändern zu müssen (falls vorhanden).
Anthony G - Gerechtigkeit für Monica

Schneller Nachtrag dazu ... Sie können sich dabei nicht einloggen. Erstellen Sie einen neuen temporären Benutzer, der Teil der Gruppe sudoers ist, melden Sie sich damit an, nehmen Sie die Änderungen vor, melden Sie sich von einem neuen temporären Konto ab, melden Sie sich bei dem umbenannten an und löschen Sie das temporäre Konto.
Janus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.