Quando abro o Terminal, recebo o prompt "Não tenho nome!"


40

De repente, nesta manhã, abro uma janela do Terminal e recebo o seguinte:

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

** Eu não sou um número! Eu sou um ser humano! **

O que da? Alguém sabe o que eu preciso fazer para recuperar meu nome?

Suponho que há dois problemas aqui, um é que meu nome de host não está definido, o outro é que whoami relata meu nome como um número.


2
BTW - para os interessados, efetuei logout (command-shift-Q) e, após efetuar login novamente e reiniciar o terminal, o problema desapareceu! Ainda interessado no que pode ter causado isso, se não por outro motivo, a não ser para avançar no estado do meu McKnowledge.
Ipd

Você está perguntando por que o nome do host do computador é exibido no prompt ou está perguntando por que o computador se chama “Não tenho nome!”?
Chris Page

Estou perguntando por que, de repente, meu prompt do bash exibe "Não tenho nome!" em vez de um nome de host. Talvez seja apenas uma coincidência que whoamitambém esteja relatando meu número e não meu nome.
Ipd

1
O que fazer hostnamee id -pretornar?
CajunLuke

meu sistema voltou ao normal. Boa sugestão, porém, se acontecer de novo, vou ver os dois!
Ipd

Respostas:


25

Algo na memória foi corrompido e o mapeamento entre o ID do usuário (502) e o nome do usuário (ipd) foi perdido. Eu já vi isso acontecer (geralmente quando matei manualmente os processos do sistema travados), embora não tenha certeza do que exatamente o causa. launchdtalvez?

Como esse mapeamento está perdido, whoaminão é possível converter seu ID em um nome de usuário, portanto, ele retorna o ID e seu prompt é padronizado como "Não tenho nome!" mensagem porque você efetivamente não tem um nome.

O logoff e o logon novamente podem ser fixos, mas reiniciar é a melhor maneira (como você descobriu).

Basicamente, é um sintoma de outro problema, e não um problema por si só.


1
Eu gostaria de poder explicar como esse mapeamento se perde, mas nunca me aprofundou o suficiente para descobrir isso.
27412 Bobson

Isso só aconteceu comigo de novo. Eu tinha matado launchd, e estava agora 501, o que me impediu de usar sudo. Ainda não sei se o sistema launchdserá reiniciado ou o que mais não funcionará.
Bobson

Pelo que vale, eu acabei de encontrar isso em uma máquina Linux, então acho que a causa raiz é algo no bash. strings /bin/bash | grep "I have"
Digital Trauma

Isso também acontece em caixas de areia, onde é comum não ter whoami ou mesmo suas dependências, tentar which whoamiver onde está; no meu caso, fiz ldd /usr/bin/whoamipara encontrar dependências, ver se você as possui e / ou se estão danificadas.
RomuloPBenedetti 12/01

12

Vejo que é um thread antigo, mas aqui está a solução para esse problema (sem reiniciar o computador inteiro).

O problema está no opendirectoryddaemon e os primeiros relatórios datam do início de 2011. A reinicialização do daemon (alternando usuários com um administrador via Fast User Switching) corrige o problema.

Enquanto escrevia esta resposta, encontrei uma pergunta semelhante no Serverfault aqui , que também cobre minha resposta.


Isso não funcionou para mim. Meus sintomas são talvez um pouco diferentes. Eu tenho várias janelas de terminal abertas e todas as janelas de terminal existentes perderam o mapeamento de nome de usuário, mas cada nova janela parece tê-lo sem problemas. Matar (também conhecido como reiniciar) opendirectoryd não ajudou. Nos terminais "com falha", também estou faltando o mapeamento de grupo para com.apple.sharepoint.group.2e access_bpf, mas não os grupos listados em /etc/group. Parece-me que os processos antigos do terminal (e quem sabe o que mais) perderam o acesso ao opendirectoryd, não que o próprio opendirectoryd tenha falhado.
ghoti 8/09/17

3

Isso acontece aleatoriamente quando eu retiro do modo de espera (ou seja, abrindo meu laptop). Um logout ou reinicialização é a única maneira de corrigi-lo. Não sei exatamente o que causa isso. Enquanto digito, está acontecendo agora. Como o comentário no post original perguntou, eu corri id -pe ele travou. (Relatório de falha: http://pastebin.com/nmFFQELq )

Comandos do console:

whoami - retorna 501

id -p - falhas

cat /etc/passwd - meu usuário não está no documento.

Qualquer tentativa ssh falha com o erro:

Você não existe, vá embora!

Também verifiquei o console, ao acordar, um monte de erros aleatórios "Soquete não conectado" aparecem (o que eu acho que pode ser normal, pois a conexão sem fio não se conecta imediatamente) de programas como o Dropbox. Um erro interessante é exibido:

4/12/12 8: 37: 09.045 PM coreservicesd: _scserver_ServerCheckin: falha na validação do uid do cliente; getpwuid (501) == NULL

4/12/12 8: 37: 09.400 PM coreservicesd: _scserver_ServerCheckin: falha na validação do uid do cliente; getpwuid (501) == NULL

Ainda não tenho certeza do que está causando isso, mas pensei em compartilhar esses diagnósticos.

Estou em um MacBook Pro de meados de 2009 com 10.7.3 instalado.


1

Veja se as permissões do arquivo /etc/passwdestão configuradas assim:

-rwxr--r--

porque lê o nome de usuário do passwdarquivo.


Era 644, não 744. A configuração para 744 não ajudou.
ejmin

0

Resolvi o problema usando iterm => preferências => URL_handler e conectando whoami ao meu nome de usuário .. após reiniciar no iterm, o problema não era mais


0

Eu tive esse mesmo problema desconcertante hoje (Lion 10.7.5) e o corrigi dscacheutil -flushcachepara mim, como sugerido em um comentário em algum blog .


-1

Meu problema é a permissão no arquivo passwd, a permissão antiga é -rw ------- 1 raiz raiz 1280 jun 9 15:41 passwd Eu usei o comando "chmod a + r / etc / passwd" e agora todos os usuários pode ler este arquivo. -rw-r - r-- 1 raiz raiz 1280 jun 9 15:41 passwd Efetue logout do usuário e tente. =)


-2

Vá para a pasta pessoal no Terminal e execute . ~/.bashrc.

Funciona!!


5
Eu não acho que re-sourcing .bashrc resolva o problema aqui ...
nohillside
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.