Comment puis-je changer mon propre identifiant?


49

Il n'y a qu'un seul utilisateur sur mon système. Comment puis-je changer son identifiant d'utilisateur par défaut de 1000?

Si des étapes supplémentaires sont nécessaires pour éviter de rompre le processus de connexion sur une installation de bureau typique, elles doivent être incluses dans la réponse.


5
Par curiosité, quelles sont les raisons pour changer un identifiant?
Olivier Lalonde

14
Si vous échangez couramment des données avec d'autres systèmes via NFS ou simplement avec une méthode de copie préservant l'UID, il sera utile d'utiliser le même UID pour le même nom d'utilisateur sur tous les systèmes.
João Pinto

João a bien compris. En particulier, j'espère faire correspondre les UID avec les utilisateurs de Mac OS X pour qu'un système de fichiers partagé porte les autorisations prévues sur tous les systèmes d'exploitation.
ændrük

1
La version actuelle de Nethack (3.6.0) enregistre les jeux, y compris l'identifiant utilisateur actuel dans le nom du fichier. Si vous souhaitez synchroniser une sauvegarde entre des machines, vous devez faire correspondre les UID. (utiliser un lien symbolique n'est pas pratique)
Jonathan Hartley

Réponses:


27

Le problème est que, comme vous l'avez mentionné, vous ne pouvez pas modifier l'UID de votre utilisateur lorsqu'il est enregistré dans une session. Vous devez utiliser un autre compte d'utilisateur pour continuer.

Mais vous n'avez pas besoin de créer un nouveau compte d'utilisateur, de le promouvoir en tant qu'administrateur, de vous déconnecter, de vous connecter au nouveau compte d'administrateur, de modifier l'UID de votre compte principal, de vous déconnecter, de vous connecter à votre compte principal, puis de supprimer le nouvel utilisateur d'administrateur. il suffit de changer votre UID. ;)

Vous pouvez démarrer en mode de récupération (c'est une option qui apparaît lorsque vous démarrez votre ordinateur ou maintenez la touche Maj enfoncée juste après la fin des messages du BIOS; utilisez cette option ESCsur des ordinateurs Dell exécutant OEM-Ubuntu). Cela vous connectera dans une session root. En étant connecté à la racine et non à votre compte utilisateur habituel , vous pourrez modifier votre UID.

Le mode de récupération ne fonctionnant que dans l'interface de ligne de commande, une fois connecté à une session root, vous devrez:

  1. Utilisez les instructions BubbaJ pour remonter le système de fichiers racine en mode lecture-écriture : mount -o remount,rw /.

  2. Utilisez la commande de Luis Alvarado : usermod -u NEW_UID your_username.

  3. Suivez les instructions de ddeimeke pour mettre à jour les autorisations de fichiers.
  4. Ensuite, redémarrez votre ordinateur ( reboot) pour pouvoir démarrer en mode normal.

1
Ne fonctionne pas pour Ubuntu 14.04. Après avoir fait usermod -u NEW_UID your_usernameet find / -uid 1000 -exec chown -h 5000 '{}' \+, le redémarrage mène à une connexion à l’interface utilisateur graphique avec une conjecture uniquement.
Kay

Peut-être que les fichiers cachés à la maison ne sont pas modifiés correctement? Utilisez-vous le cryptage pour votre maison?
maths le

Vous voudrez peut-être vérifier vos fichiers /etc/login.defset /etc/adduser.confsi vous avez modifié votre identifiant d'utilisateur en dehors des règles fournies dans ces fichiers de configuration. Les utilisateurs situés en dehors des limites de la stratégie ne sont pas affichés dans la boucle de connexion, mais vous pouvez modifier la stratégie. Voir cette réponse
K Markey

usermod: user user_name is currently used by process 1118 @Alexandre P.
alper

54

Vous pouvez le modifier dans /etc/passwd, /etc/groupet /etc/shadowou vous utilisez l' un des possibilties préférés ci - dessus. Mais - le plus important - vous devez changer la propriété de tous les fichiers appartenant à l'utilisateur.

Par exemple, si l'ancien utilisateur est 1000 et le nouveau 5000:

find / -uid 1000 -exec chown -h 5000 {} +

Et la même chose pour l'identifiant du groupe (si vous le changez aussi).

find / -gid 1000 -exec chgrp -h 5000 {} +

8
C'est un point vraiment important. Beaucoup de choses vont casser si vous suivez les techniques données dans les autres réponses sans le faire aussi.
poolie

4
Je viens d'apprendre que l'on devrait mieux utiliser sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+, sinon on inclurait des données montées (in /mnt, ce qui est peut-être indésirable) et des fichiers qu'il vaut mieux ne pas déconner avec /procet /dev. Voir cet article
Sebastian

2
Ce n'est pas une bonne idée. Etant donné que / home est sur un système de fichiers différent, vous ne changerez même pas la propriété de vos propres fichiers.
Ddeimeke

Sur cette réponse, vous devez modifier les autorisations de groupe et d'utilisateur, avant de modifier les fichiers dans / etc, n'est-ce pas?
MrDaniel

Peu importe ce que vous faites en premier.
ddeimeke

25

Solution complète basée sur @AlexandreP. et @ddeimeke + documentation officielle. Aucun redémarrage nécessaire.

La politique Debian / Ubuntu stipule que s’il ya un utilisateur jimavec un ID utilisateur 1001, il existe également un groupe jimavec un ID de groupe 1001. Cette solution met également à jour ces identifiants de groupe.

  1. Activer le compte root :

    sudo passwd root
    
  2. Si l'utilisateur est connecté, déconnectez-vous (également sur les terminaux virtuels)
  3. Allez à VT1: Ctrl-Alt-F1
  4. Connectez-vous en tant que root et lancez-le avec le nom d'utilisateur et l'ancien / le nouveau UID fourni:

    # put the information we need in variables
    username=...
    old_uid=`id -u $username`  # looks up current (old) uid
    new_uid=...
    
    # update the user ID and group ID for $username
    usermod -u $new_uid $username
    groupmod -g $new_uid $username
    
    # update the file ownerships
    # NB: you cannot combine the next two chowns, or files where 
    # only the uid xor the gid matches won't be updated  
    chown -Rhc --from=$old_uid $new_uid /    # change the user IDs
    chown -Rhc --from=:$old_uid :$new_uid /  # change the group IDs
    
  5. Se déconnecter
  6. Se connecter en tant que $username
  7. Désactiver le compte root :

    sudo passwd -dl root
    

L'activation du compte root ne devrait pas être nécessaire; utilisez simplement le mode de récupération .
ændrük

2
Cela devrait être plus rapide que le redémarrage, c'est pourquoi je l'ai posté.
l0b0

3
Dans Ubuntu 14.04 et 14.10, vous devez également corriger les autorisations ACL étendues dans / media, sinon le montage automatique (dans Nautilus / Nemo) est interrompu lorsque l'ancien UID est conservé. sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
richud.com

Cela a fonctionné comme un charme pour moi. Seulement eu à changer le uid, cependant.
chmike

l'activation du compte root me semble plus facile (et moins effrayante) que d'utiliser le mode de récupération.
Jonathan Hartley

7

Si vous allez sur console et tapez: usermod --helpvous obtiendrez l'un des paramètres disant:

-u, --uid UID nouvel UID pour le compte d'utilisateur

donc si vous voulez changer l'UID de l'utilisateur cyrex, alors:

usermod -u 1000 cyrex

cela changerait le uid pour cyrex de toute valeur qu'il avait avant à 1000

Si vous voulez le faire visuellement alors faites ceci:

Aller à

SYSTEM -> ADMINISTRATION -> UTILISATEURS ET GROUPES

Sélectionnez-vous dans la liste et cliquez sur PARAMÈTRES AVANCÉS.

L'UID est à la fin de cette fenêtre.


1
J'ai essayé la méthode graphique que vous avez suggérée, mais il y a un message disant "Vous ne pouvez pas changer d'identifiant si l'utilisateur est connecté." Avez-vous testé cette méthode?
ændrük

2
Hé hé bien c'est vrai. J'ai essayé avec un autre compte. Vous devez vous connecter via root ou tout autre compte administrateur. Ensuite, faites la manière graphique. Désolé.
Luis Alvarado

2
  • Aller au système >> Administration >> Utilisateurs et groupes

texte alternatif

  • Cliquez sur Paramètres avancés et allez dans l'onglet Avancé. En bas, vous verrez votre identifiant d'utilisateur.
  • Changez-le et cliquez sur ok.
    texte alternatif

1
Devrais-je simplement ignorer l'avertissement de votre capture d'écran, "Vous ne pouvez pas modifier l'ID utilisateur tant que l'utilisateur est connecté."?
ændrük

Vous devez le changer d'un autre compte d'utilisateur pour vous débarrasser de cet avertissement.
karthick87

7
Ma question est "Comment puis-je changer mon propre identifiant?". Si vous souhaitez que votre réponse soit que je crée un nouvel utilisateur juste pour éditer cette valeur, vous devez éditer votre réponse pour l'indiquer.
ændrük

0

Avec KDE: Dans le menu Modifier les paramètres utilisateur avancés:

La modification à partir d'un autre utilisateur ne fonctionne pas pour 1000, qui est l'utilisateur par défaut.

vous devez le faire manuellement - mon expérience


0

Tout d'abord, vous devez vous connecter en tant que root, au moins pendant un certain temps, alors rendons cela possible:

sudo passwd root

Redémarrez, ctrl + alt + f1 pour passer à la console, connectez-vous en tant que root, procédez comme suit (la propriété dans le répertoire personnel sera automatiquement prise en charge):

groupmod --gid NEWGID username
usermod  --uid NEWUID username 

Pour vos fichiers dans des endroits autres que votre répertoire personnel, à ceci:

sudo chown -R username:username /path/to/files

Supprimez et verrouillez le mot de passe root si vous le souhaitez. (J'ai tendance à le garder):

passwd -dl root

0

J'ai suivi les instructions de ddeimeke avec les modifications suivantes:

  1. Je ne me suis pas déconnecté et à la place sudo su
  2. Je n'ai pas touché /etc/shadow

Je l’ai vu mentionner dans les autres réponses que vous devriez soit démarrer à la récupération ou vous connecter en tant que root. La mienne étant une nouvelle installation d’Ubuntu 14, j’ai voulu tester si cela fonctionnerait sans se connecter en tant que root. De plus, je le faisais sur une instance EC2 via SSH.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.