Comment changer mon nom d'utilisateur?

325

Il y a quelque temps, lorsque j'ai installé Ubuntu, j'ai choisi un nom d'utilisateur plutôt stupide pour mon compte que je ne souhaite plus utiliser.

Comment changer cela (y compris le nom de mon répertoire personnel et le nom du terminal) sans perdre les paramètres des applications?
Comment conserver les autorisations et mes clés pour diverses authentifications (par exemple, courrier électronique, SSH, GPG, etc.)?
Quels paramètres pourraient éventuellement être perdus si je changeais de nom d'utilisateur?

Takkat
la source
Pourquoi ne pouvons-nous pas naviguer vers /usr/share/applications/users.desktop >> Cliquez sur l'utilisateur pour lequel le nom doit être changé. >> Cliquez sur Modifier le nom d'utilisateur >> Modifier le nom >> Cliquez sur OK. Je pense que ce serait le moyen le plus simple de changer le nom d'utilisateur, n'est-ce pas?
Anand

Réponses:

325

Les systèmes d'exploitation de type Unix dissocient le nom d'utilisateur de l'identité de l'utilisateur. Vous pouvez donc modifier le nom en toute sécurité sans affecter l'ID. Toutes les autorisations, fichiers, etc. sont liés à votre identité (uid), pas à votre nom d'utilisateur.

Pour gérer tous les aspects de la base de données d'utilisateurs, vous utilisez l' usermodoutil.

Pour changer de nom d'utilisateur (il est probablement préférable de le faire sans être connecté):

sudo usermod -l newUsername oldUsername

Cela ne renomme toutefois pas le dossier de base.

Pour changer le dossier de départ, utilisez

sudo usermod -d /home/newHomeDir -m newUsername

après avoir changé le nom d'utilisateur.

Par exemple, vous pouvez vous déconnecter, accéder à une console ( Ctrl+ Alt+ F1) et sudo su -devenir une vraie racine (par opposition à sudo -s, où $ HOME est toujours / home / votrenom.) Peut-être devez-vous aussi tuer certains processus en cours d'exécution de cet utilisateur première. Pour ce faire, entrez ps -u username, recherchez le PID correspondant et éliminez-le par kill PID-number.

Mise à jour: comme indiqué, certains fichiers peuvent faire référence à votre ancien répertoire de base. Vous pouvez soit conserver un lien symbolique pour la compatibilité ascendante, par exemple, ln -s /home/newname /home/oldnamesoit modifier le contenu du fichier avec. sed -i.bak 's/*oldname*/*newname*/g' *list of files*Il crée une sauvegarde pour chaque fichier avec une extension .bak.

Quelques informations supplémentaires pour des utilisateurs moins expérimentés comme moi:
Comme je n’ai qu’UN compte utilisateur (administrateur), cela ne me permet pas de changer le nom d’utilisateur ("vous êtes déjà connecté", telle était la réponse dans TTY1 ( Ctrl+ Alt+ F1). autour de ceci:

  1. Connectez-vous avec vos anciennes informations d'identification et ajoutez un nouvel utilisateur, par exemple "temporaire" dans TTY1:

    sudo adduser temporary
    

    définir le mot de passe.

  2. Autorisez l'utilisateur temporaire à exécuter sudo en l'ajoutant au groupe sudo:

    sudo adduser temporary sudo
    
  3. Déconnectez-vous avec la commande exit.
  4. Revenir à tty1: Connectez-vous avec le compte utilisateur et le mot de passe 'temporaires'. Changez votre nom d'utilisateur et dossier comme mentionné ci-dessus. exit(jusqu'à ce que vous obteniez l'invite de connexion)
  5. Retournez à TTY7 ( Ctrl+ Alt+ F7) pour vous connecter sur l'écran GUI / normal du bureau et voir si cela fonctionne.
  6. Supprimer un utilisateur et un dossier temporaires:

    sudo deluser temporary
    sudo rm -r /home/temporary
    
Egil
la source
11
Ceci n’est malheureusement pas vrai pour différents fichiers de configuration sous $ HOME. Essayez d’exécuter quelque chose comme ceci grep -IRFl /home/username ~et vous verrez combien de références à votre répertoire personnel y sont stockées.
arranger le
1
C'était une solution simple - Il suffisait d'utiliser l'éditeur de comptes d'utilisateurs dans l'unité, suivi d'un redémarrage.
Steve Koch
6
Pour ceux qui possèdent un dossier personnel chiffré, vous devrez le modifier /home/.ecryptfs/oldusername/.ecryptfs/Private.mntpour qu'il pointe vers votre nouveau dossier personnel. Sinon, vous ne pourrez pas vous connecter via Unity.
Raphaël
2
sudo usermod -d /home/edge -m edgerendements: usermod: Directory /home/empedokles could not be renamed in /home/edgec'est -à- dire que l'étape 4 ne fonctionnera pas.
empedokles
2
@JTC jamais modifier sudoersavec plaine nano. Toujours utiliser visudo.
styrofoam fly
108

Pour tout mettre ensemble:

  1. À l'écran de démarrage, appuyez sur Ctrl+ Alt+ F1.
  2. Connectez-vous en utilisant votre nom d'utilisateur et mot de passe.
  3. Définissez un mot de passe pour le compte "root".

    sudo passwd root
    
  4. Se déconnecter.

    exit
    
  5. Connectez-vous en utilisant le compte "root" et le mot de passe que vous avez précédemment défini.

  6. Remplacez le nom d'utilisateur et le dossier de base par le nouveau nom souhaité.

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. Remplacez le nom du groupe par le nouveau nom souhaité.

    groupmod -n <newgroup> <oldgroup>
    
  8. Verrouillez le compte "root".

    passwd -l root
    
  9. Si vous utilisiez ecryptfs (répertoire de base chiffré). Montez votre répertoire crypté en utilisant ecryptfs-recover-privateet edit <mountpoint>/.ecryptfs/Private.mntpour refléter votre nouveau répertoire de base.

  10. Se déconnecter.

    exit
    
  11. Appuyez sur Ctrl+ Alt+ F7.

Et maintenant, vous pouvez vous connecter en utilisant votre nouveau nom d'utilisateur.

Valentin Uveges
la source
6
Si après avoir usermod -l obtenu un user <oldname> is currently used by process <processno>, vous pouvez trouver ce processus (probablement un démon ou tmux / screen) en utilisant ps aux | grep <processno>. Vous voudrez peut-être arrêter ce processus en douceur, sinon vous pourrez le faire kill <processno>.
RedPixel
1
Merci d'avoir mis ce commentaire ensemble. C'était très utile. Deux choses qui pourraient être mentionnées cependant. Après l’étape 4, j’ai redémarré pour ne pas recevoir de messages d’erreur à l’étape 6. De plus, une fois ce processus terminé, le fichier / etc / passwd aura un commentaire d’ID correspondant à l’ancien nom d’utilisateur. Cela entraînera l'affichage de l'ancien nom de connexion sur l'écran de connexion. Je ne pouvais pas trouver un moyen correct de le réparer à partir de la ligne de commande, mais je l'ai fait en me connectant au compte d'utilisateur, en accédant aux paramètres du compte et en remplaçant le "Nom de connexion" par le nom d'utilisateur. Ceci a mis à jour le fichier / etc / passwd et a résolu le problème.
Jibbers
1
C'est le moyen le plus facile et le plus simple de le faire. Il est préférable de redémarrer après l’étape 4, comme l’a suggéré @Jibbers.
Yerke
Je mentionnerais que les "signets dans les fenêtres du navigateur de fichiers" pointent maintenant vers les anciens dossiers, je dois donc les supprimer.
ollydbg23
Ne fonctionnera pas. Si vous appuyez sur Ctrl + Alt + F1 au début, vous essayez de vous connecter à l'utilisateur nouvellement créé, ce qu'il ne permet pas.
empedokles
27

Redémarrez en mode de récupération et accédez au shell d'invite racine (option "Passer à l'invite du shell root").

Remontez d'abord la racine

mount -o remount,rw /

Pour changer le nom d'utilisateur et le nom du dossier personnel,

usermod -l <newname> -d /home/<newname> -m <oldname>

Pour le nom du groupe,

groupmod -n <newgroup> <oldgroup>
karthick87
la source
1
quand j'utilise usermod -l <newname> -d /home/<newname> -m <oldname>cela me donne une erreur usermod: user oldusername is currently used by process 3170et si je tue toujours le processus, il me donne la même erreur. en utilisant ubuntu 13.10
Waqas
4
NE LE FAITES PAS SI VOTRE RÉPERTOIRE DE MAISON EST CRYPTÉ !!!! J'ai suivi cette procédure et il m'a envoyé pour une balade sauvage de 2 heures ... Le seul moyen de récupérer consiste à effectuer cette procédure à nouveau et à remettre le nom original (pas aimé). Le problème que vous aurez est "Ne peut pas chdir dans monture point "
Mike
Pourquoi ne pouvons-nous pas naviguer vers /usr/share/applications/users.desktop >> Cliquez sur l'utilisateur pour lequel le nom doit être changé. >> Cliquez sur Modifier le nom d'utilisateur >> Modifier le nom >> Cliquez sur OK. Je pense que ce serait le moyen le plus simple de changer le nom d'utilisateur, n'est-ce pas?
Anand
9

Sur Ubuntu 13.10, 14.04, 16.04:

  1. Cliquez sur l'icône "Paramètres système".
  2. Cliquez sur "Comptes d'utilisateurs".
  3. Votre compte administrateur devrait être affiché.
  4. Cliquez sur le bouton "Déverrouiller".
  5. Entrez votre mot de passe utilisateur comme demandé pour autoriser les modifications de votre compte.
  6. Une fois déverrouillé, vous pouvez cliquer sur votre ancien nom d'utilisateur que vous souhaitez modifier et taper un nouveau nom d'utilisateur pour le remplacer.
  7. Lorsque vous avez saisi le nouveau nom, cliquez sur le bouton "Verrouiller" pour rendre la modification permanente.
  8. Redémarrez Ubuntu.
Chicodoodoo
la source
3
Cela n'a pas changé le nom d'utilisateur pour moi, juste le nom. L'ancien nom d'utilisateur apparaît toujours dans le terminal, ainsi que dans le répertoire personnel et le groupe (même après le redémarrage).
DougC
3

Lors de la réception, usermod: can't change /etc/passwordexécutez les commandes suivantes:

Dans la console de récupération racine, exécutez:

mount -o remount,rw /

Puis relancez:

usermod -l <newname> -d /home/<newname> -m <oldname>
utilisateur1511576
la source
Pourquoi ne pouvons-nous pas naviguer vers /usr/share/applications/users.desktop >> Cliquez sur l'utilisateur pour lequel le nom doit être changé. >> Cliquez sur Modifier le nom d'utilisateur >> Modifier le nom >> Cliquez sur OK. Je pense que ce serait le moyen le plus simple de changer le nom d'utilisateur, n'est-ce pas?
Anand
1

La réponse indiquée ici par @ karthick87 fonctionne parfaitement, mais voici ce que je ferais pour être sûr et éviter tous les problèmes:

  1. Créez un compte / utilisateur distinct et assurez-vous que ce compte / utilisateur possède les capacités root ou connectez-vous en tant qu'utilisateur root.
  2. Déconnectez-vous avec le compte actuel, puis connectez-vous avec le compte mentionné à l'étape 1.
  3. Tuez tous les processus de l'utilisateur précédent.
  4. Suivez maintenant les étapes mentionnées par @ karthick87 et changez le nom d'utilisateur ainsi que le propriétaire du répertoire personnel.
  5. Suivez ensuite la réponse de @Sriraj Hebbar pour changer le nom du groupe.
  6. déconnectez-vous avec l'utilisateur de secours et connectez-vous avec votre utilisateur. Si vous avez créé un utilisateur supplémentaire, supprimez-le.
sandeep srivastav vaddiparthy
la source
0

lorsque vous le faites, usermod -l <newname> -d /home/<newname> -m <oldname>vous obtiendrez useradd: can't change /etc/passwdun message d'erreur pour éviter cela, ajoutez simplement sudo --à la commande ci-dessus comme

sudo -- usermod -l <newname> -d /home/<newname> -m <oldname>

et

sudo --  groupmod -n <newgroup> <oldgroup>
Sriraj Hebbar
la source
-3

Comme tous les PC ont l' usermodapplication , vous pouvez le faire manuellement. En tant que root ouvert /etc/passwdpour éditer:

sudo vim /etc/passwd

et changez le nom de l'utilisateur au début d'une ligne:

user:x:500:501:username:home/user:/bin/bash

à:

newuser:x:500:501:username:home/user:/bin/bash

Ensuite, si vous avez travaillé sur root, connectez-vous et si vous avez été connecté à user, déconnectez-vous et connectez-vous à nouveau.

Малъ Скрылевъ
la source
J'ai essayé de cette façon (avant de découvrir la usermodcommande) et le mot de passe de l'utilisateur n'est plus accepté.
Ben Voigt
@BenVoigt pas tous les pcs ont le usermod
Малъ Скрылевъ
3
C'est Ubuntu! Si ce n'est pas le cas, usermodvotre installation est interrompue car elle fait partie du passwdpaquet, ce qui est requis .
Auspex