Wie kann ich einen Unix-Benutzer umbenennen?

89

Ich habe einen Benutzer namens hedgehogund möchte, dass er benannt wird squirrel, aber ich möchte seine numerische Benutzer-ID nicht ändern.
Wie kann ich das erreichen?

Szymon Jeż
quelle
2
Wahrscheinlich, weil das Umbenennen eines Benutzers nicht gerade eine Aufgabe ist, mit der eine professionelle SA zu kämpfen hätte. (Für die Frage Downvotes.)
HopelessN00b
2
@Jeznet Ich habe die Bewertung abgelehnt, da dies nicht nur eine unglaublich einfache Aufgabe ist, die durch Eingabe Ihres Titels in Google gelöst werden könnte, sondern Sie auch Ihre eigene Frage beantwortet haben, sobald Sie sie gestellt haben. Schien Zeitverschwendung.
Boburob
10
@boburob "Sie haben auch Ihre eigene Frage beantwortet, sobald Sie sie gestellt haben. Es schien Zeitverschwendung zu sein", siehe: blog.stackoverflow.com/2011/07/…
Szymon Jeż
10
@boburob Hast du das Kontrollkästchen gesehen, in dem steht, Answer your own question – share your knowledge, Q&A-stylewann du eine Frage gestellt hast? Es ist aus einem bestimmten Grund da und würde nicht da sein, wenn sie nicht wollten, dass es benutzt wird. (Idealerweise bei besseren Fragen, aber trotzdem ist es eine schlechte Form, jemanden für die Beantwortung seiner eigenen Frage abzustimmen.)
HopelessN00b
1
Ja, ich habe auch meine eigene Frage schon einmal beantwortet, aber für mich ist es eine Zeitverschwendung, eine Frage zu stellen und das Google-Ergebnis in derselben Minute
einzufügen

Antworten:

133

Unter Linux usermodändert der Befehl die Benutzernamen. Es ändert die Systemkontodateien, um die in der Befehlszeile angegebenen Änderungen widerzuspiegeln.

So ändern Sie nur den Benutzernamen:

usermod --login new_username old_username

So ändern Sie den Benutzernamen und den Namen des Basisverzeichnisses:

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

Möglicherweise möchten Sie auch den Namen der Gruppe ändern, die dem Benutzer zugeordnet ist:

groupmod --new-name new_username old_username
Szymon Jeż
quelle
12
Sie können usermod verwenden, um das Ganze zu erledigen. Usermod -l neuer-Benutzername -m -d / neu / home / dir alter-Benutzername
user9517
5
Beachten Sie auch, dass die Gruppe ebenfalls nicht geändert wird. Wenn Sie die old-user-nameGruppe ebenfalls umbenennen müssen , verwenden Sie # groupmod -n new-user-name old-user-name.
Alxs
1
Für Systeme mit autofssollten Sie auch aktualisieren /etc/auto.home. Ich bin nur darauf gestoßen.
Steven C. Howell
2
Möglicherweise muss visudo erneut ausgeführt werden, um den neuen Benutzernamen in die Liste der Sudoer aufzunehmen.
Nagev
2
Sie müssen auch die Crontab-Datei umbenennen, die sich in /var/spool/cron/crontabs/(wenn Sie Jobs installiert haben) befindet
Daniel F
12

HINWEIS: Versuchen Sie dies nicht, wenn Ihr Verzeichnis verschlüsselt ist! Wenn dies der Fall ist, sollten Sie zunächst Folgendes überprüfen: https://askubuntu.com/questions/107410/can-you-unencrypt-remove-encryption-from-a-user-home-folder

Der direkte Weg, dies zu tun, ist:

  1. Erstellen Sie ein neues temporäres Konto mit Sudo-Rechten:

    sudo adduser temp
    sudo adduser temp sudo
    
  2. Melden Sie sich von Ihrem aktuellen Konto ab und wieder mit dem temporären Konto an.

  3. Benennen Sie Ihren Benutzernamen und Ihr Verzeichnis um:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. Benennen Sie die Standardgruppe Ihres Benutzernamens um:

    sudo groupmod -n new-username old-username
    
  5. Melden Sie sich von Ihrem temporären Konto ab und mit neuem Benutzernamen wieder bei Ihrem Konto an.

  6. Temporäres Konto entfernen:

    sudo userdel -r temp
    

Andernfalls erstellen Sie nur (1) einen neuen Benutzer und (2) rsyncden alten Benutzer-Basisordner für den neuen und dann (3) den neuen Benutzer chown.

mimoralea
quelle
In CentOS musste ich auch "passwd temp" und "usermod -aG wheel temp" eingeben.
Brian Z
4

Im Allgemeinen können Sie einen Benutzer umbenennen, indem Sie seinen Benutzernamen in den Dateien /etc/passwd(und /etc/shadowgegebenenfalls) ändern . Auf den meisten Unix-Systemen werden vipwdiese Dateien mit dem Befehl bearbeitet (und auf vielen Systemen gibt es einige Sicherheitsvorkehrungen, um sicherzustellen, dass Sie die Dinge nicht zu sehr durcheinander bringen).
Siehe den Manpages passwd(5), shadow(5)und vipw(8)für weitere Informationen.

Beachten Sie, dass die obige Methode andere Dinge, die möglicherweise den ursprünglichen Benutzernamen tragen, nicht umbenennt (Home-Verzeichnisse sind das beste Beispiel, persönliche Gruppen pro Benutzer (auf Systemen, die sie verwenden) sind andere). Möglicherweise möchten Sie auch diese aus Konsistenzgründen bereinigen, indem Sie die entsprechenden Felder in der passwd-Datei ändern und die Verzeichnisse umbenennen.


Verschiedene Betriebssysteme bieten eine systemspezifische Möglichkeit, Benutzer umzubenennen. Beispielsweise enthalten viele Linux-Systeme den usermod(8)Befehl, und unter AIX können Sie Kontonamensmitty mit SMIT (oder in einem Terminal) ändern .
Diese Befehle verarbeiten die Bereinigungselemente häufig wie das Umbenennen von Basisverzeichnissen, wenn Sie dazu aufgefordert werden.

voretaq7
quelle