Kiedy otwieram Terminal, pojawia się monit „Nie mam nazwy!”

39

Nagle dziś rano otwieram okno terminalu i otrzymuję:

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

** Nie jestem numerem! Jestem istotą ludzką! **

Co daje? Czy ktoś wie, co muszę zrobić, aby odzyskać moje imię?

Przypuszczam, że są tutaj dwa problemy, jeden polega na tym, że moja nazwa hosta jest niezdefiniowana, a drugi polega na tym, że whoami zgłasza moje imię jako liczbę.

ipd
źródło
2
BTW - dla zainteresowanych wylogowałem się (polecenie-shift-Q), a po ponownym zalogowaniu i ponownym uruchomieniu terminala problem zniknął! Nadal jestem zainteresowany tym, co mogło to spowodować, choćby z jakiegokolwiek innego powodu niż ulepszenie stanu mojej McKnowledge.
ipd
Czy pytasz, dlaczego nazwa hosta komputera jest wyświetlana w wierszu polecenia, czy pytasz, dlaczego komputer ma nazwę „Nie mam nazwy!”?
Chris Page
Pytam, dlaczego nagle mój komunikat zachęty wyświetla komunikat „Nie mam imienia!” zamiast nazwy hosta. Być może to tylko zbieg okoliczności, który whoamipodaje także mój numer, a nie moje imię.
ipd
1
Co zrobić hostnamei id -pzwrócić?
CajunLuke
mój system powrócił do normy. Dobra sugestia, jeśli to się powtórzy, sprawdzę je oba!
ipd

Odpowiedzi:

24

Coś w pamięci uległo uszkodzeniu, a mapowanie między identyfikatorem użytkownika (502) a nazwą użytkownika (ipd) zostało utracone. Widziałem, jak to się dzieje (zwykle kiedy ręcznie zabiłem zawieszone procesy systemowe), chociaż nie jestem pewien, co dokładnie to powoduje. launchdmoże?

Ponieważ mapowanie zostało utracone, whoaminie można przekonwertować identyfikatora na nazwę użytkownika, dlatego zwraca identyfikator, a monit domyślnie brzmi „Nie mam nazwy!” wiadomość, ponieważ faktycznie nie masz nazwy.

Wylogowanie i ponowne zalogowanie może być naprawione, ale ponowne uruchomienie jest najlepszym sposobem (jak odkryłeś).

Zasadniczo jest to objaw innego problemu, a nie sam w sobie problem.

Bobson
źródło
1
Chciałbym móc wyjaśnić, w jaki sposób gubi się to mapowanie, ale nigdy nie kopałem wystarczająco głęboko, aby to rozgryźć.
Bobson
Znowu mi się to przytrafiło. Zabiłem launchd, a teraz byłem 501, co uniemożliwiło mi użycie sudo. Nadal nie wiem, czy launchdzrestartuje się samo, czy to, co jeszcze nie wpłynie na jego uruchomienie.
Bobson,
Jeśli chodzi o jego wartość, właśnie natknąłem się na to na maszynie z systemem Linux, więc zgaduję, że główną przyczyną jest bash. strings /bin/bash | grep "I have"
Cyfrowy uraz
Dzieje się tak również w przypadku piaskownic, w których często nie ma whoami ani nawet jego zależności, spróbuj which whoamizobaczyć, gdzie to jest, w moim przypadku szukałem ldd /usr/bin/whoamizależności, czy je masz i czy są uszkodzone.
RomuloPBenedetti
11

Widzę, że to stary wątek, ale oto rozwiązanie tego problemu (bez ponownego uruchamiania całego komputera).

Problem tkwi w opendirectoryddemonie, a najwcześniejsze raporty pochodzą z początku 2011 r. Ponowne uruchomienie demona (przełączanie użytkowników z administracyjnym za pomocą szybkiego przełączania użytkowników) rozwiązuje problem.

Pisząc tę ​​odpowiedź, znalazłem podobne pytanie w Serverfault tutaj , które obejmuje również moją odpowiedź.

mspasov
źródło
To mi nie zadziałało. Moje symptomy są chyba trochę inne. Mam otwartych wiele okien terminali i każde istniejące okno terminala utraciło mapowanie nazwy użytkownika, ale wydaje się , że każde nowe okno ma je bez problemów. Killing (aka restarting) opendirectoryd nie pomógł. W „nieudanych” terminalach brakuje mi również mapowania grup dla com.apple.sharepoint.group.2i access_bpf, ale nie grup wymienionych w /etc/group. Wydaje mi się, że stare procesy terminalowe (i kto wie, co jeszcze) straciły dostęp do opendirectoryd, a nie, że sam opendirectoryd zawiódł.
ghoti
3

Zdarza mi się to losowo po wznowieniu pracy z trybu gotowości (tj. Po otwarciu laptopa). Wylogowanie lub ponowne uruchomienie to jedyny sposób, aby to naprawić. Nie wiem dokładnie, co to powoduje. Kiedy piszę, dzieje się teraz. Jak powiedział komentarz w oryginalnym poście, pobiegłem id -pi się zawiesił. (Raport o awarii: http://pastebin.com/nmFFQELq )

Polecenia konsoli:

whoami - zwraca 501

id -p - awarie

cat /etc/passwd - mojego użytkownika nie ma w dokumencie.

Każda próba ssh kończy się niepowodzeniem z błędem:

Nie istniejesz, odejdź!

Sprawdziłem także konsolę, po przebudzeniu pojawia się losowy błąd „Socket not connected” (co moim zdaniem może być normalne, ponieważ sieć bezprzewodowa nie łączy się natychmiast) z programów takich jak Dropbox. Pojawia się jednak interesujący błąd:

12.04.12 8: 37: 09.045 PM coreservicesd: _scserver_ServerCheckin: błąd sprawdzania poprawności UID klienta; getpwuid (501) == NULL

4/12/12 8: 37: 09.400 PM coreservicesd: _scserver_ServerCheckin: błąd weryfikacji UID klienta; getpwuid (501) == NULL

Nadal nie jestem pewien, co go powoduje, ale pomyślałem, że podzielę się tymi informacjami diagnostycznymi.

Jestem na MacBooku Pro z połowy 2009 roku z zainstalowanym 10.7.3.

Austin
źródło
1

Sprawdź, czy uprawnienia do pliku /etc/passwdsą skonfigurowane w następujący sposób:

-rwxr--r--

ponieważ odczytuje nazwę użytkownika z passwdpliku.

Christian Leggiero
źródło
Było 644, a nie 744. Ustawienie 744 nie pomogło.
ejmin
0

Rozwiązałem problem, używając iterm => preferencje => moduł obsługi adresów URL i łącząc whoami z moją nazwą użytkownika .. po ponownym uruchomieniu na iterm problem nie był już

vrwired
źródło
0

Miałem dzisiaj ten sam zdumiewający problem (Lion 10.7.5) i dscacheutil -flushcachenaprawiłem go, jak zasugerowano w komentarzu na blogu .

lhf
źródło
-1

Moim problemem jest pozwolenie w archiwum passwd, stare uprawnienie to -rw ------- 1 root root 1280 Jun 9 15:41 passwd Użyłem polecenia „chmod a + r / etc / passwd” i teraz wszyscy użytkownicy mogę przeczytać to archiwum. -rw-r - r-- 1 root root 1280 Jun 9 15:41 passwd Wyloguj użytkownika i spróbuj. =)

Luiz Oliveira
źródło
-2

Przejdź do folderu domowego w terminalu i uruchom . ~/.bashrc.

To działa!!

VRS
źródło
5
Nie sądzę, aby ponowne zaopatrzenie .bashrc rozwiązało problem tutaj ...
nohillside