2 votes

Par erreur, j'ai créé un utilisateur avec un UID en double. Comment réparer?

J'ai accidentellement créé un utilisateur avec un UID en double. J'ai besoin de conseils sur la façon de résoudre ce problème.

Comme vous pouvez le voir, en exécutant dscl, deux utilisateurs avec le même uid s'affichent :

dscl . -list /Users uid | sort -nrk 2
jenkins                 9999
original-user           9999

Cela s'est produit parce que je modifiais un script d'installation de packages et j'ai attribué à tort un UniqueId existant lors de la création d'un nouvel utilisateur. Cet UniqueId correspond à l'uid de mon propre compte. Maintenant, lorsque je me connecte à OSX (avec mon propre compte), OSX a perdu tous mes paramètres de profil (par exemple, Finder affiche le dossier personnel du nouvel utilisateur au lieu du mien, le navigateur a perdu mon historique, etc.)

Bien qu'OSX affiche le profil du nouvel utilisateur, Terminal reconnaît correctement l'utilisateur avec lequel je me suis connecté. Par conséquent, je peux confirmer que mes anciens fichiers (par exemple, Documents, Téléchargements) existent toujours intactes.

Voici ce que j'ai exécuté pour me retrouver dans cette situation :

uid=9999
gid=$uid
while dscl -search /Groups gid $gid | grep -q $gid; do
    echo "gid $gid is not free, trying next"
    gid=$(($gid + 1))
done
echo "Using gid $gid for jenkins"

dscl . -create /Groups/jenkins PrimaryGroupID $gid

dscl . -create /Users/jenkins UserShell /bin/bash
dscl . -create /Users/jenkins Password '*'
dscl . -create /Users/jenkins UniqueID $uid
dscl . -create /Users/jenkins PrimaryGroupID $gid
dscl . -create /Users/jenkins NFSHomeDirectory "$JENKINS_HOMEDIR"

dscl . -append /Groups/jenkins GroupMembership jenkins

Comment puis-je récupérer ?

2voto

Phoenix Points 1415

Sous Mac OS X, vous pouvez changer un UID d'un utilisateur local en utilisant Préférences Système > Utilisateurs et Groupes.

Ouvrez le cadenas pour permettre les modifications à être effectuées, puis faites un clic droit sur l'utilisateur que vous souhaitez changer.

REMARQUE : Vous ne devez pas être connecté à ce compte au moment où vous effectuez le changement.

Aussi, les permissions POSIX suivront l'UID, donc après l'avoir modifié, vous devrez peut-être modifier la propriété de l'utilisateur pour ce dossier personnel sinon vous risquez de ne pas pouvoir vous connecter au compte modifié.

La commande pour changer la propriété serait :

sudo chown -R  /chemin/vers/dossierutilisateur

1voto

D.W. Points 3678

Je peux voir deux options :

  1. Supprimez l'utilisateur jenkins, recréez-le (avec un UID unique cette fois), puis répétez toutes les commandes que vous avez utilisées pour créer ses fichiers. C'est probablement la meilleure option si vous n'avez pas créé de données supplémentaires ou de personnalisation depuis la création de jenkins. Faites attention en supprimant l'utilisateur jenkins pour vous assurer de ne pas supprimer original-user.

  2. Plus compliqué : changez l'UID de l'un des utilisateurs en éditant manuellement /etc/passwd, puis utilisez chown -R pour changer correctement la propriété des fichiers de cet utilisateur. C'est compliqué et cela pourrait fonctionner mais pourrait aussi ne pas fonctionner.

Personnellement, je choisirais l'option n°1.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X