10.13 High Sierra Compte Admin disparu et récupération des données

galérien1000

Membre confirmé
4 Août 2019
12
0
29
Bonjour à tous,

Comme apparemment beaucoup sur High Sierra, je suis passé par la mésaventure de la disparition du compte administrateur (très étrange: j'ai simplement fermé la session, et il n'y avait alors plus que le compte invité qui apparaissait à l'écran... Et celui ci demandait un mot de passe?!).

Quoi qu'il en soit, j'ai suivi la procédure expliquée sur un autre topic, et j'ai donc recrée un compte admin via Recovery.

Le problème étant que lorsque je crée un nouveau compte avec l'ancien nom d'utilisateur, il ne me propose pas de récupérer les données (il est possible ici que je me sois trompé sur le nom d'utilisateur exact, est-il possible de le vérifier via terminal?)

Je viens de vérifier avec DiskDrill, il semble en tous cas que les données soient toujours bien présentes sur l'ordinateur... Je n'ai simplement aucune idée sur la manière d'y accéder.

Je vous avoue que je suis assez embêté... Je garde les chats d'un collègue et j'aimerais bien lui rendre son ordinateur en état. :sorry:

vous auriez des pistes pour restaurer les données ?

Merci d'avance!
 
Si ça peut aider, le diskutil list:


Tetyanas-iMac:~ toto$ diskutil cs list

CoreStorage logical volume groups (1 found)

|

+-- Logical Volume Group 9ABD3913-2F79-4ABA-AA39-7F358888A894

=========================================================

Name: Macintosh HD

Status: Online

Size: 1026896293888 B (1.0 TB)

Free Space: 20480 B (20.5 KB)

|

+-< Physical Volume 59B0A343-98AF-4AB3-AB8D-CC1A64421D92

| ----------------------------------------------------

| Index: 0

| Disk: disk1s2

| Status: Online

| Size: 27551166464 B (27.6 GB)

|

+-< Physical Volume DEBDB815-ADF1-45C3-807C-DA725C485376

| ----------------------------------------------------

| Index: 1

| Disk: disk0s2

| Status: Online

| Size: 999345127424 B (999.3 GB)

|

+-> Logical Volume Family A41AC882-F1A7-4800-89FE-E70C584C751E

----------------------------------------------------------

Encryption Type: None

|

+-> Logical Volume 0EC5F2C1-EB3A-4AFD-8143-EDC4EFD7A563

---------------------------------------------------

Disk: disk2

Status: Online

Size (Total): 1025980628992 B (1.0 TB)

Revertible: No

LV Name: Macintosh HD

Volume Name: Macintosh HD

Content Hint: Apple_HFS

LVG Type: Fusion, Sparse

Tetyanas-iMac:~ toto$ diskutil list

/dev/disk0 (internal, physical):

#: TYPE NAME SIZE IDENTIFIER

0: GUID_partition_scheme *1.0 TB disk0

1: EFI EFI 209.7 MB disk0s1

2: Apple_CoreStorage Macintosh HD 999.3 GB disk0s2

3: Apple_Boot Recovery HD 650.0 MB disk0s3


/dev/disk1 (internal):

#: TYPE NAME SIZE IDENTIFIER

0: GUID_partition_scheme 28.0 GB disk1

1: EFI EFI 314.6 MB disk1s1

2: Apple_CoreStorage Macintosh HD 27.6 GB disk1s2

3: Apple_Boot Boot OS X 134.2 MB disk1s3


/dev/disk2 (internal, virtual):

#: TYPE NAME SIZE IDENTIFIER

0: Apple_HFS Macintosh HD +1.0 TB disk2

Logical Volume on disk1s2, disk0s2

0EC5F2C1-EB3A-4AFD-8143-EDC4EFD7A563

Unencrypted Fusion Drive


/dev/disk3 (disk image):

#: TYPE NAME SIZE IDENTIFIER

0: Apple_partition_scheme +100.7 MB disk3

1: Apple_partition_map 32.3 KB disk3s1

2: Apple_HFS DiskDrill 100.7 MB disk3s2





et le diskutil cs list:

Tetyanas-iMac:~ toto$ diskutil cs list

CoreStorage logical volume groups (1 found)

|

+-- Logical Volume Group 9ABD3913-2F79-4ABA-AA39-7F358888A894

=========================================================

Name: Macintosh HD

Status: Online

Size: 1026896293888 B (1.0 TB)

Free Space: 20480 B (20.5 KB)

|

+-< Physical Volume 59B0A343-98AF-4AB3-AB8D-CC1A64421D92

| ----------------------------------------------------

| Index: 0

| Disk: disk1s2

| Status: Online

| Size: 27551166464 B (27.6 GB)

|

+-< Physical Volume DEBDB815-ADF1-45C3-807C-DA725C485376

| ----------------------------------------------------

| Index: 1

| Disk: disk0s2

| Status: Online

| Size: 999345127424 B (999.3 GB)

|

+-> Logical Volume Family A41AC882-F1A7-4800-89FE-E70C584C751E

----------------------------------------------------------

Encryption Type: None

|

+-> Logical Volume 0EC5F2C1-EB3A-4AFD-8143-EDC4EFD7A563

---------------------------------------------------

Disk: disk2

Status: Online

Size (Total): 1025980628992 B (1.0 TB)

Revertible: No

LV Name: Macintosh HD

Volume Name: Macintosh HD

Content Hint: Apple_HFS

LVG Type: Fusion, Sparse

Tetyanas-iMac:~ toto$
 
Bonjour galérien

D'importants bogues de programmation affectent le Service d'Annuaire (= Open Directory - gestionnaire des Utilisateurs & des groupes) dans High Sierra. Jamais corrigés au fil des mises-à-jour de cet OS -->

- a) un des ces bogues fait que : si l'utilisateur Admin tente de modifier en mode "live" (sa session ouvrerte) son nomcourt d'utilisateur => alors : 1) ce changement nominal avorte > mais 2) s'ensuit une révocation du statut Admin de l'utiilsateur et sa rétrogradation au statut Standard.​

- b) un autre de ces bogues fait que : sans qu'aucune action de l'utilisateur n'en soit le déclencheur => son fichier identitaire (qui définit son existence d'utilisateur pour le Système et notamment pour le Servide d'Annuaire) > se trouve corrompu par ce même service. Soit partiellement dans ses écritures > soit totalement (fichier devenu blanc d'écriture) > soit radicalement (fichier supprimé carrément). Il en résulte que l'utilisateur Admin originel --> n'a plus d'existence logique pour le Système & donc ne peut plus ouvrir sa session > son Nom complet d'utilisateur n'étant plus affiché à l'écran de connexion.​

=> d'après ton compte-rendu de ton problème > tu te trouves dans le cas de figure b). Avec cet avantage notable que tu as déjà agi pour recréer un second compte d'utilisateur Admin auxiliaire = toto. Donc je te l'annonce d'avance : ton cas de figure b) (suppression d'existence de l'utilisateur Admin principal dans High Sierra par corruption du fichier identitaire) --> est également bien connu et une solution du problème existe qui te permettra de ré-exister pour le Système et de ré-ouvrir ton ancienne session intacte.

----------

Je vois d'après ce que tu as posté que tu es actuellement dans la session toto du nouvel utilisateur Admin auxiliaire.

Passe la commande :
Bloc de code:
csrutil status

  • la commande affiche le statut du SIP (protocole de sécurisation)

Poste le retour. Mais ne fais pas ton coller en mode brut > fais-le dans une fenêtre de code par le procédé suivant -->
  • dans cette page de MacGé > presse le bouton
    1555929346-524315-original.png
    ici :
    1555929346-521520-original.png

    menu  : </> Code > par ⌘V colle dans la fenêtre Code > presse le bouton Insérer (ce procédé permet un affichage fenêtré qui économise l'espace de page en respectant la mise en forme des tableaux du «Terminal» --> d'où une plus grande lisibilité)

=> cela servira pour des tableaux plus conséquents qui viendront après.

Note : l'activation du SIP est susceptible de bloquer l'accès en lecture d'une commande à la base de données users du Service d'Annuaire (qui recèle les fichiers identitaires des utilisateurs) --> voilà la raison de cette commande préliminaire.
 
Merci beaucoup pour ta réponse claire macomaniac! Cet OS a l'air bien optimisé en tous cas :D

Voici donc pour la commande demandée, c/c selon tes indications:

Bloc de code:
Tetyanas-iMac:~ toto$ csrutil status
System Integrity Protection status: enabled.
 
Le SIP est donc activé ("enabled").

----------

Pour désactiver le SIP > redémarre > les 2 touches ⌘R (cmd R) tenues pressées de l'écran noir => à la  = démarrage sur l'OS de secours. Tu obtiens un écran affichant une fenêtre de 4 Utilitaires macOS. Va à la barre de menus supérieure de l'écran > Menu Utilitaires > sous-menu : Terminal.

Lance-le et passe la commande :
Bloc de code:
csrutil disable

  • qui désactive le SIP

Cela fait > quitte le Terminal > va à : Menu  > Disque de démarrage > sélectionne Macintosh HD > redémarre dessus.

----------

Signale ici lorsque tu seras de retour dans la session toto -->

- je te passerai alors les commandes (informatives) => qui permettront d'avoir une idée complète de la sitiuation actuelle des comptes d'utilisateurs (donc le compte planté).​
 
Logé dans ta session toto > passe les commandes (copier-coller - une à la fois) :
Bloc de code:
sudo ls /private/var/db/dslocal/nodes/Default/users | sed '/^_/ d'
diskutil listUsers / | grep -v '.*[\^\_\].*'
dscl . -list /Users home | grep -v '.*[\^\_\].*'
sudo du -sh /Users/*

  • tu t'authentifies en aveugle avec le mot-de-passe toto après exécution de la 1ère et tu revalides (commande sudo). Pas besoin pour le 2è sudo.
  • la 1ère liste les fichiers identitaires d'utilisateurs à noms pleins
  • la 2è affiche en correspondance nomcourt (Short Name) / nom complet (Long Name) pour les mêmes
  • la 3è affiche en correspondance nomcourt / adresse au dossier d'ouverture de session pour les mêmes
  • la 4è liste & mesure les dossiers domiciles du répertoire des Utilisateurs
=> poste tous les affichages retournés dans une fenêtre de code.


Note
: malgré la désactivation du SIP > il n'est pas impossible que 1ère commande (listage des fichiers identitaires dans la base de données users du Service d'Annuaire) soit bloquée. Si c'est le cas > passe aux commandes suivantes > poste tous les retours obtenus et signale simplement l'échec de la 1ère.
 
sudo ls /private/var/db/dslocal/nodes/Default/users | sed '/^_/ d':

Bloc de code:
Password:
Guest.plist
daemon.plist
lupetti.plist
nobody.plist
root.plist
tetyanaskononenko.plist
toto.plist

diskutil listUsers / | grep -v '.*[\^\_\].*'

Bloc de code:
USERS
-----

Disk: disk2
Volume: Macintosh HD
Mountpoint: /

UID       Short Name                      Long Name
------------------------------------------------------------------------
1         daemon                          System Services
201       Guest                           Gastbenutzer
0         (null)                          (null)
-2        nobody                          Unprivileged User
0         root                            System Administrator
502       tetyanaskononenko               Tetyanas Kononenko
501       toto                            toto
Tetyanas-iMac:~ toto$



dscl . -list /Users home | grep -v '.*[\^\_\].*'

Bloc de code:
Disk: disk2
Volume: Macintosh HD
Mountpoint: /

UID       Short Name                      Long Name
------------------------------------------------------------------------
1         daemon                          System Services
201       Guest                           Gastbenutzer
0         (null)                          (null)
-2        nobody                          Unprivileged User
0         root                            System Administrator
502       tetyanaskononenko               Tetyanas Kononenko
501       toto                            toto
Tetyanas-iMac:~ toto$ dscl . -list /Users home | grep -v '.*[\^\_\].*'
daemon                  /var/root
Guest                   /Users/Guest
nobody                  /var/empty
root                    /var/root
tetyanaskononenko       /Users/tetyanaskononenko
toto                    /Users/toto

sudo du -sh /Users/*

Bloc de code:
5,1M    /Users/Shared
388G    /Users/lupetti
4,0K    /Users/tetyanaskononenko
404M    /Users/toto
 
Hé ! hé ! - tout est limpide comme l'eau de source en montagne -->

- le dernier tableau montre un dossier domiciliaire (dossier de compte contenant les données) d'un utilisateur lupetti > contenant 388 Gi = 417 Go. Un fameux paquet.​

- le 1er tableau montre aussi un fichier identitaire : lupetti.plist > censé définir l'identité d'un utilisateur lupetti (nomcourt agglutiné) pour le Service d'Annuaire et donc de faire exister le sus-dit pour le Système.​

- mais le poilant de l'affaire (où prend effet le bogue b) signalé de High Sierra) > c'est qu'aucun utilisateur lupetti n'est identifié comme utilisateur existant > et pas non plus comme ayant un chemin d'ouverture de session pointant au dossier lupetti des Utilisateurs. L'interprétation est aisée : le fichier identitaire lupetti.plist existe > mais il est corrompu dans ses écritures (peut-être bien même blanc d'écriture actuellement) --> ce qui empêche lupetti d'être reconnu par le Système.​

Note : un compte d'utilisateur associe un fichier identitaire (ex. lupetti.plist) définissant l'existence de l'utilisateur & un dossier domiciliaire (ex. lupetti) contenant ses données. Ici : le dossier lupetti est intact (ce qui est le plus important) > le fichier lupetti.plist est invalide.

----------

La technique de récupération consiste : a) à supprimer le fichier identitaire lupetti.plist invalide (ce qui ne touche pas le dossier lupetti contenant les données - les localisations sont disjointes) > b) recréer un fichier identitaire lupetti.plist valide > avec un chemin d'ouverture de session pointant au dossier lupetti contenant les données

- est-ce que mon analyse te paraît claire ? - et est-ce que tu es d'accord avec le procédé technique de résolution du problème décrit ?​
 
A) suppression du fichier lupetti.plist corrompu -->

- passe la commande (copier-coller) :
Bloc de code:
sudo rm /private/var/db/dslocal/nodes/Default/users/lupetti.plist

  • la commande supprime le fichier lupetti.plist de la base de données users du Service d'Annuaire. Elle passe sans retour déclaratif, si elle passe (réaffichage direct de l'invite de commande : Tetyanas-iMac:~ toto$).
  • si tel a bien été le cas > repasse alors la commande informative :
Bloc de code:
sudo ls /private/var/db/dslocal/nodes/Default/users | sed '/^_/ d'

  • qui liste les fichiers identitaires d'utilisateurs

Poste le tableau --> qu'on voie si le fichier corrompu lupetti.plist a bien disparu de l'affiche.
 
J'ai l'impression que ça a fonctionné! :

Bloc de code:
Tetyanas-iMac:~ toto$ sudo rm /private/var/db/dslocal/nodes/Default/users/lupetti.plist
Password:
Tetyanas-iMac:~ toto$ sudo ls /private/var/db/dslocal/nodes/Default/users | sed '/^_/ d'
Guest.plist
daemon.plist
nobody.plist
root.plist
tetyanaskononenko.plist
toto.plist
 
En effet : plus de fichier lupetti.plist corrompu.

----------

B) recréation d'un fichier lupetti.plist valide -->

- avant de te passer un tuto de recréation > j'ai besoin d'une information "nominale". Un utilisateur a 2 noms : le Nom complet (exemple Paul Durand) & le nomcourt agglutiné (exemple pauldurand).​

- dans le cas de l'utilisateur à recréer > je connais le nomcourt (le seul important) = lupetti. Mais je ne connais pas le Nom complet --> c'est celui que tu voyais affiché à l'écran de connexion (écran d'ouverture de session). Est-ce que c'était Lupetti (avec une majuscule initiale) ? Claudio Lupetti > Guido Lupetti > Antonio Lupetti [etc.] ?​

=> bref : est-ce que tu as enregistré le Nom long correspondant au nomcourt lupetti ? - si oui : c'est lequel ?

Question annexe : je suppose que tu te souviens du mot-de-passe de la session lupetti (mot-de-passe que je ne te demande pas) ?
 
Oui, je me souviens bien du mot de passe! Malheureusement, je ne me souviens pas du nom long.... De souvenir, ce n'était pas Lupetti qui, je pense, n'est qu'un pseudo, mais Tatiana Kononenko (le problème étant que je ne suis pas sûr de l'orthographe de Tatiana :()
 
D'accord : on va prendre Tatiana Kononenko comme Nom complet.

Va à : Menu  > Préférences Système > Utilisateurs & groupes > tu déverrouilles le cadenas avec le mot-de-passe toto > bouton + pour créer un nouvel utilisateur > et tu recrées ainsi l'identité de l'utilisateur -->

  • Nouveau compte = Administrateur > Nom complet = Tatiana Kononenko > Nom du compte = lupetti (attention ! décisif ! il faut absolument que ce soit cet intitulé ici. Ayant renseigné comme Nom complet : Tatiana Kononenko => le Système va automatiquement te proposer à la case : Nom du compte = nomcourt : tataniakononenko. Efface cet intitulé à la main dans cette case et remplace-le obligatoirement par : lupetti. Il faut absolument que ce soit le même intitulé que celui du dossier domiciliaire) > Mot de passe = le même qu'avant (important pour le Trousseau de session) > Confirmation : idem => Créer l'utilisateur
  • un panneau va déclarer qu'il existe déjà un dossier de ce nom (lupetti) dans les Utilisateurs et te demandant si tu veux l'utiliser comme dossier de départ de session ? => presse le bouton bleu : "Utiliser le dossier existant"

=> en conséquence > un fichier identitaire lupetti.plist va être recréé at: /private/var/db/dslocal/nodes/Default/users/ lupetti.plist > avec des écritures valides > dont à la clé home cette adresse : /Users/lupetti => qui va te permettre de réouvrir la session sur le dossier de compte lupetti plein de données.

Cela fait > vois-tu affiché l'utilisateur : Tatiana Kononenko, Admin dans la colonne de gauche des Utilisateurs & groupes ?

Note : un utilisateur peut parfaitement avoir un Nom complet (Tatiana Kononenko) et un Nom du compte = nomcourt (lupetti) complètement sans rapport. Ici : un vrai Nom complet (nom de famille) et un avatar en guise de Nom du compte (nomcourt).
 
Le fait que le nom complet soit possiblement différent ne risque pas d'impacter la récupération du compte? Je me dis qu'étant donné qu'on voit "Tetyanas iMac", c'est peut être Tetyana Kononenko? Si ça n'a pas d'importance, peu importe :)
 
Le Nom complet n'a aucune importante : c'est un affichage cosmétique. L'utilisatrice (Tatiana = féminin. Tetyanas est peut-être un masculin ?) pourra le modifier ensuite si elle/il le souhaite -->

- le seul nom important est le nomcourt (= Nom du compte) => càd. lupetti ici.​

Si tu veux > tu peux indiquer : Tetyanas Konokenko comme Nom complet > mais il faut lupetti absolument en Nom du compte.
 
Voilà qui est fait! Tetyana apparaît bien en admin dans la colonne utilisateurs! Je peux donc maintenant me reconnecter à la session (a priori sous un flot de données)?
 
En simple vérification (pour donner le feu vert) > repasse les 2 commandes informatives :
Bloc de code:
diskutil listUsers / | grep -v '.*[\^\_\].*'
dscl . -list /Users home | grep -v '.*[\^\_\].*'

  • qui affichent : nomcourt / nom long en correspondance > puis nomcourt / chemin d'ouverture de session en correspondance => pour les utilisateurs à noms pleins (étant donné qu'une ribambelle d'« utilisateurs-Système » existe > dont le nom est précédé par un underscore _ : ils sont échappés d'affichage ici)

Poste les 2 tableaux --> qu'on voie si tout est en place pour lupetti (alias Tetyanas Kononenko).
 
Voici:
Bloc de code:
USERS
-----

Disk: disk2
Volume: Macintosh HD
Mountpoint: /

UID       Short Name                      Long Name
------------------------------------------------------------------------
1         daemon                          System Services
201       Guest                           Gastbenutzer
502       lupetti                         Tetyana Kononenko
-2        nobody                          Unprivileged User
0         root                            System Administrator
501       toto                            toto
Tetyanas-iMac:~ toto$ dscl . -list /Users home | grep -v '.*[\^\_\].*'
daemon                  /var/root
Guest                   /Users/Guest
lupetti                 /Users/lupetti
nobody                  /var/empty
root                    /var/root
toto                    /Users/toto