Ist es möglich, ein Unix-Benutzerkonto umzubenennen?

48

Ich habe Ubuntu auf einem Computer installiert, der jetzt von jemand anderem verwendet wird. Ich habe das Konto mit ihrem Namen umbenannt, aber es ändert nur den vollständigen Namen, nicht den Benutzernamen, der immer noch oben rechts (im fast-user-switch-applet) angezeigt wird . Gibt es einen Befehl zum Umbenennen eines Unix-Benutzerkontos?

Ich habe darüber nachgedacht, ein neues Benutzerkonto mit dem neuen Namen zu erstellen und dann alles im "alten" Haus in das Haus des neuen Kontos zu kopieren. Wäre es genug? Aber dann denke ich, dass die Dateien den Besitzer der Berechtigungen des alten Kontos haben würden? Also soll ich tun chown -R newuser ~?

Gibt es einen einfacheren / empfohlenen Weg, dies zu tun?

Yann Dìnendal
quelle

Antworten:

52

Versuchen

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

Die --move-homeOption verschiebt den Inhalt des alten Basisverzeichnisses in den neuen Inhalt, der durch die --homeOption angegeben wird, die erstellt wird, wenn sie noch nicht vorhanden ist.

Wenn die primäre Benutzergruppe mit der übereinstimmen soll new-login-name, fügen Sie --gid <new-login-name>sie dem obigen Befehl hinzu, die Gruppe muss jedoch bereits vorhanden sein.

Weitere Informationen finden Sie in der Manpage:

man usermod
gvkv
quelle
Vielen Dank! Ich wusste nichts von diesem Befehl. :) Dies ist jedoch das einzige Konto auf diesem Computer, und der Mann sagt Folgendes: «Sie müssen sicherstellen, dass der angegebene Benutzer keine Prozesse ausführt, wenn dieser Befehl ausgeführt wird, wenn die numerische Benutzer-ID des Benutzers, der Benutzername oder der Name des Benutzers Das Home-Verzeichnis des Benutzers wird geändert. usermod überprüft dies unter Linux, überprüft jedoch nur, ob der Benutzer gemäß utmp auf anderen Architekturen angemeldet ist. »Würden Sie vorschlagen, hierfür eine Live-CD zu verwenden oder ein temporäres Konto zu erstellen, das ich löschen werde, sobald es fertig ist?
Yann Dìnendal
2
Da Sie Ubuntu verwenden und sich nicht als root anmelden können, würde ich ein anderes Konto mit dem Namen admin erstellen, das Sie nur für diese Art von Aufgaben verwenden. Ein temporäres Konto funktioniert genauso gut, aber Sie können es genauso gut behalten, da Sie in Zukunft ähnliche Dinge tun könnten.
gvkv
3
Beachten Sie, dass usermod --homeder vollständige Pfad angegeben werden muss, z. B. /home/user.name- andernfalls wird das neue Basisverzeichnis im aktuellen Arbeitsverzeichnis erstellt.
Feeela
Das wird die Gruppe nicht ändern!
Heanz
22

Es ist zwar möglich, einen Benutzer umzubenennen und usermodeinige Aufgaben zu erledigen , dies kann jedoch Probleme verursachen. Hier ist eine Liste der Stellen, an denen der Benutzername angezeigt werden kann. Ich behaupte nicht, dass diese Liste vollständig ist.

  • Der Benutzereintrag in /etc/passwdund die zugehörigen Dateien (zB /etc/shadow, /etc/master.passwd).
  • Gruppeneinträge in /etc/group(und /etc/gshadow).
  • Möglicherweise Einträge in /etc/sudoers.
  • Das Systempostfach, normalerweise /var/mail/$USERoder /var/spool/mail/$USER.
  • Typischerweise die Crontab /var/spool/cron/crontabs/$USER
  • In atJobs ( /var/spool/cron/atjobs/*)

Das Basisverzeichnis wird wahrscheinlich an noch mehr Stellen angezeigt. Viele Anwendungen schreiben absolute Pfade in verschiedene Punktdateien. Wenn Sie sich entscheiden , als auch das Home - Verzeichnis umbenennen (während es nicht erforderlich ist , dass der Benutzer alice‚Home - Verzeichnis sein /home/alice, es werden mit /home/bobwürde verwirrend sein), müssen Sie kümmern sich um diejenigen zu nehmen. Ein globaler Ersatz wird für die meisten Anwendungen funktionieren, aber ich mache keine Zusagen. Behalten Sie nach Möglichkeit den alten Namen des Basisverzeichnisses als symbolischen Link zum umbenannten Verzeichnis bei.

Gilles 'SO - hör auf böse zu sein'
quelle
4

Hier ist eine Zusammenfassung der Befehle, die ich auf einem Debian-System verwendet habe:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

Die letzten beiden Befehle erstellen eine symbolische Verknüpfung zwischen dem Namen des alten Basisverzeichnisses ( / home / OLD ) und dem Namen des neuen ( / home / NEW ).

Soul Singin
quelle
Wofür ist das groupadd?
Yann Dìnendal
2
Anstatt groupadd, denke ich, ist es vielleicht besser groupmod -n NEW OLDzu vermeiden, das Gid zu ändern. Zumindest unter Ubuntu ist standardmäßig eine Gruppe mit demselben Namen wie der Benutzer eingerichtet, daher möchte man diesen Namen auch ändern.
Jamadagni
1

Alle oben genannten Methoden sind elegant, aber warum nicht einfach einen neuen Benutzer erstellen, den gesamten Heiminhalt vom ersten kopieren und fertig? Wenn es sich um ein Dienstkonto (Anwendungskonto) handelt, ist dies möglicherweise nicht die beste Vorgehensweise

AdrianP
quelle
3
Es scheint, als wäre dies eher ein Kommentar als ein vollständiger Antwortbeitrag, der so gut wie nichts hinzufügt, als eine Lösung zu erwähnen, die bereits im OP erwähnt wurde. Sie sollten erwägen, einige Informationen hinzuzufügen, warum diese Lösung Ihrer Meinung nach besser oder sogar akzeptabel ist.
HalosGhost