Lorsque j'ouvre un terminal, je reçois une invite «Je n'ai pas de nom!»

40

Soudain, ce matin, j'ouvre une fenêtre de terminal et je reçois ceci:

I have no name!@macbook:~$ whoami
502

** Je ne suis pas un nombre! Je suis un être humain! **

Ce qui donne? Quelqu'un sait ce que je dois faire pour retrouver mon nom?

Je suppose qu'il y a deux problèmes ici, l'un est que mon nom d'hôte n'est pas défini, l'autre est que whoami signale mon nom sous forme de numéro.

ipd
la source
2
BTW - pour ceux qui sont intéressés, je me suis déconnecté (commande-shift-Q) et après la connexion et le redémarrage du terminal, le problème a disparu! Je suis toujours intéressé par ce qui pourrait avoir causé cela, ne serait-ce que pour faire avancer l'état de mes connaissances.
ipd
Demandez-vous pourquoi le nom d’hôte de l’ordinateur est affiché dans l’invite ou pourquoi l’ordinateur est nommé «Je n’ai pas de nom!»?
Chris Page
Je demande pourquoi, tout à coup, mon invite bash affiche "Je n'ai pas de nom!" plutôt qu'un nom d'hôte. Peut-être est-ce juste une coïncidence qui whoamisignale également mon numéro plutôt que mon nom.
ipd
1
Que font hostnameet id -previennent?
CajunLuke
mon système est revenu à la normale. Bonne suggestion cependant, si cela se reproduit, je les vérifierai tous les deux!
ipd

Réponses:

25

Un élément de la mémoire a été corrompu et le mappage entre votre ID utilisateur (502) et votre nom d'utilisateur (ipd) a été perdu. Je l'ai vu se produire (généralement lorsque j'ai tué manuellement des processus système bloqués), bien que je ne sois pas sûr de ce qui le cause. launchdpeut être?

Comme ce mappage est perdu, whoamivous ne pouvez pas convertir votre ID en un nom d'utilisateur. L'ID est donc renvoyé. Par défaut, votre invite affiche "Je n'ai pas de nom!". message parce que vous n'avez effectivement pas de nom.

La déconnexion et le retour peuvent résoudre ce problème, mais le redémarrage est la meilleure solution (comme vous l'avez découvert).

Fondamentalement, c'est un symptôme d'un autre problème, et non un problème en soi.

Bobson
la source
1
J'aimerais pouvoir expliquer à quel point cette cartographie est perdue, mais je n'ai jamais creusé assez profondément pour la comprendre.
Bobson
Cela m'est encore arrivé. J'avais tué launchd, et j'étais maintenant 501, ce qui m'empêchait d'utiliser sudo. Je ne sais toujours pas si launchdva redémarrer tout seul, ou quoi d'autre ne pas l'avoir en cours d'exécution va affecter.
Bobson
Pour ce que ça vaut, je viens de le rencontrer sur une machine Linux, alors je suppose que la cause fondamentale est quelque chose dans bash. strings /bin/bash | grep "I have"
Traumatismes numériques
Cela se produit également sur les bacs à sable, où il est fréquent de ne pas avoir whoami ou même ses dépendances, essayez which whoamide voir où il se trouve, dans mon cas je l'ai fait ldd /usr/bin/whoamipour trouver des dépendances, voir si vous les avez et / ou si elles sont endommagées.
RomuloPBenedetti
12

Je vois que c'est un vieux fil, mais voici la solution à ce problème (sans redémarrer tout l'ordinateur).

Le problème provient du opendirectoryddémon et les premiers rapports datent du début de 2011. Le redémarrage du démon (le changement d'utilisateur avec un administrateur via le changement rapide d'utilisateur) résout le problème.

En écrivant cette réponse, j'ai trouvé une question similaire dans Serverfault ici , qui couvre également ma réponse.

Mspasov
la source
Cela n'a pas fonctionné pour moi. Mes symptômes sont peut-être un peu différents. Un certain nombre de fenêtres de terminal sont ouvertes et chaque fenêtre de terminal existante a perdu sa correspondance de nom d'utilisateur, mais chaque nouvelle fenêtre semble l'avoir sans problèmes. Tuer (aka redémarrer) opendirectoryd n'a pas aidé. Dans les terminaux "en échec", il me manque également la cartographie de groupe pour com.apple.sharepoint.group.2et access_bpf, mais pas les groupes répertoriés dans /etc/group. Il me semble que les anciens processus de terminal (et qui sait quoi d'autre) ont perdu l'accès à opendirectoryd, et non qu'opendirectoryd a échoué.
Ghoti
3

Cela m’arrive au hasard lorsque je quitte le mode veille (c’est-à-dire en ouvrant mon ordinateur portable). La déconnexion ou le redémarrage est le seul moyen pour moi de le réparer. Je ne sais pas exactement ce qui le cause. Comme je tape, cela se passe en ce moment. Comme demandé dans le commentaire d'origine, j'ai couru id -pet il s'est écrasé. (Rapport d' incident : http://pastebin.com/nmFFQELq )

Commandes de la console:

whoami - renvoie 501

id -p - accidents

cat /etc/passwd - mon utilisateur n'est pas dans le document.

Toute tentative ssh échoue avec l'erreur suivante:

Vous n'existez pas, partez!

J'ai également vérifié la console, au réveil, une série d'erreurs aléatoires "Socket not connected" (Socket non connecté) apparaît (ce qui pourrait être normal, à mon avis, étant donné que le sans fil ne se connecte pas immédiatement) à partir de programmes tels que Dropbox. Une erreur intéressante apparaît cependant:

4/12/12 8: 37: 09.045 PM coreservicesd: _scserver_ServerCheckin: échec de la validation de l'identifiant utilisateur du client; getpwuid (501) == NULL

4/12/12 8: 37: 09.400 PM coreservicesd: _scserver_ServerCheckin: échec de la validation de l'identifiant utilisateur du client; getpwuid (501) == NULL

Toujours pas sûr de ce qui le cause, mais je pensais partager ces diagnostics.

Je suis sur un MacBook Pro mi-2009 avec 10.7.3 installé.

Austin
la source
1

Voir si les permissions du fichier /etc/passwdsont configurées comme ceci:

-rwxr--r--

car il lit le nom d'utilisateur à partir du passwdfichier.

Christian Leggiero
la source
C'était 644, pas 744. Mettre à 744 n'a pas aidé.
ejmin
0

J'ai résolu le problème en utilisant iterm => preferences => URL_handler et en connectant whoami à mon nom d'utilisateur .. après le redémarrage sur iterm, le problème n'était plus

vrwired
la source
0

J'ai eu ce même problème déconcertant aujourd'hui (Lion 10.7.5) et dscacheutil -flushcacheje l'ai corrigé pour moi, comme suggéré dans un commentaire sur un blog .

lhf
la source
-1

Mon problème est la permission dans l'archive passwd, L'ancienne permission est -rw ------- 1 racine racine 1280 9 juin 9 15h41 passwd J'ai utilisé la commande "chmod a + r / etc / passwd" et maintenant tous les utilisateurs peut lire cette archive. -rw-r - r-- 1 racine racine 1280 9 juin 9 15h41 passwd Déconnectez l'utilisateur et essayez. =)

Luiz Oliveira
la source
-2

Allez dans le dossier personnel du terminal et lancez . ~/.bashrc .

Ça marche!!

VRS
la source
5
Je ne pense pas que le ré-sourcing .bashrc résout le problème ici ...
nohillside