突然,今天早上,我打开一个终端窗口,并得到以下信息:
I have no name!@macbook:~$ whoami
502
**我不是数字!我是人类!**
是什么赋予了?有人知道我需要做些什么才能找回我的名字吗?
我想这里有两个问题,一个是我的主机名未定义,另一个是whoami将我的名字报告为数字。
whoami
也在报告我的电话号码而不是我的名字。
hostname
又id -p
返回?
突然,今天早上,我打开一个终端窗口,并得到以下信息:
I have no name!@macbook:~$ whoami
502
**我不是数字!我是人类!**
是什么赋予了?有人知道我需要做些什么才能找回我的名字吗?
我想这里有两个问题,一个是我的主机名未定义,另一个是whoami将我的名字报告为数字。
whoami
也在报告我的电话号码而不是我的名字。
hostname
又id -p
返回?
Answers:
内存中的某些内容已损坏,并且您的用户ID(502)和用户名(ipd)之间的映射丢失了。我已经看到了这种情况的发生(通常是当我手动杀死挂起的系统进程时),尽管我不确定是什么原因造成的。 launchd
也许?
由于该映射丢失,whoami
因此无法将您的ID转换为用户名,因此返回ID,并且您的提示默认为“我没有名字!” 消息,因为您实际上没有名字。
注销并重新登录可能会解决,但重新启动是最好的方法(如您所发现的)。
基本上,这是另一个问题的征兆,而不是其本身的问题。
launchd
我,现在却如此501
,这阻止了我的使用sudo
。我仍然不知道是否launchd
会重新启动自身,或者不运行会影响什么。
strings /bin/bash | grep "I have"
which whoami
查看它在哪里,在我的情况下,我确实ldd /usr/bin/whoami
找到了依赖项,看看是否有依赖项,或者它们是否损坏。
我看到它是一个旧线程,但这是解决此问题的方法(无需重新启动整个计算机)。
问题出在opendirectoryd
守护程序中,最早的报告日期是2011年年初。重新启动守护程序(通过“快速用户切换”以管理员身份切换用户)可以解决此问题。
在编写此答案时,我在Serverfault的此处找到了类似的问题,该问题也涵盖了我的答案。
com.apple.sharepoint.group.2
和access_bpf
,但不是在上市集团/etc/group
。在我看来,旧的终端进程(还有谁知道其他什么)已经失去了对opendirectory的访问权限,而不是opendirectoryed本身已经失败。
当我从待机状态恢复时(即打开笔记本电脑),这会随机发生在我身上。注销或重新引导是我修复它的唯一方法。我不知道是什么原因造成的。当我输入时,它正在发生。当原始帖子中的评论问到时,我跑了id -p
下来,然后崩溃了。(崩溃报告:http : //pastebin.com/nmFFQELq)
控制台命令:
whoami
-返回501
id -p
—崩溃
cat /etc/passwd
-我的用户不在文档中。
任何ssh尝试都会失败,并显示以下错误:
你不存在,走开!
我还检查了控制台,从唤醒中,从Dropbox之类的程序中出现了一堆随机的“套接字未连接”错误(我认为这可能是正常的,因为无线无法立即连接)。出现一个有趣的错误:
12/4/12 8:37:09.045 PM coreservicesd:_scserver_ServerCheckin:客户端uid验证失败;getpwuid(501)== NULL
12/4/12 8:37:09.400 PM coreservicesd:_scserver_ServerCheckin:客户端uid验证失败;getpwuid(501)== NULL
仍然不确定是什么原因造成的,但我想我会分享这些诊断信息。
我使用的是2009年中安装的10.7.3 MacBook Pro。
我的问题是passwd存档中的权限,旧的权限是-rw ------- 1 root root 1280 Jun 9 15:41 passwd我使用了命令“ chmod a + r / etc / passwd”,现在所有用户可以读取此存档。-rw-r--r-- 1 root root 1280 Jun 9 15:41 passwd注销用户并尝试。=)