关于这一问题:
在观察胖子的行为时,我注意到一些与我有关的事情。以下是命令“验证码”的前几行输出:
konsole(4112): O /etc/passwd
konsole(4112): CO /etc/passwd
konsole(4112): C /etc/passwd
konsole(4112): O /etc/passwd
konsole(4112): C /etc/passwd
konsole(4112): O /etc/passwd
konsole(4112): C /etc/passwd
konsole(4112): O /etc/passwd
konsole(4112): C /etc/passwd
konsole(4112): O /etc/passwd
konsole(4112): C /etc/passwd
konsole(4112): O /etc/passwd
konsole(4112): C /etc/passwd
konsole(4112): O /etc/passwd
konsole(4112): C /etc/passwd
konsole(4112): O /etc/passwd
...问题是lsof\grep passwd表明passwd不被任何进程打开。
你知道是怎么回事吗?
发布于 2014-04-19 03:19:33
你可以读源代码,说到.我是为您这么做的;它看起来像是来自ProcessInfo.cpp文件。它得到了用户名。不仅/etc/passwd不是你关心的问题,任何人都可以阅读它。不过,如果它试图阅读/etc/shadow,你可能会担心。
发布于 2014-04-19 05:38:20
出于同样的原因,ls -l读取/etc/passwd,是将UID与名称关联的数据。当ls对文件调用stat(2)时,它会为文件的所有者获得一个数值UID。为了将其显示为人类可读的名称,它需要在唯一有这些关联的地方查找它,即/etc/passwd。例如,/etc/passwd中典型的第一行是
root:x:0:0:root:/root:/bin/bash当ls -l /etc/hosts需要产生输出时
-rw-r--r-- 1 root root 222 Jan 14 2013 /etc/hosts它需要将UID 0转换为"root“,因此它调用像getpwuid这样的库例程,该例程读取/etc/passwd来提供翻译。这是/etc/passwd存在的很大一部分原因:为了完全平庸的目的提供这样的翻译。
查找用户名并不比调用局部时间更多的是安全问题,这样ls就可以告诉您文件的修改时间为“2013年1月14日”。正如可持续土地管理所指出的,没有理由让文件保持打开状态,因此一旦读取其内容,它就会被关闭。
/etc/passwd文件最初在更简单的时候包含哈希密码。密码哈希被移动到/etc/shadow,普通用户无法读取,因为它是一个安全漏洞。名称/etc/passwd保持不变,但现在在以前的密码哈希字段中包含了x,它不是任何密码的有效散列。
https://unix.stackexchange.com/questions/125500
复制相似问题