首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么是konsole /etc/passwd?

为什么是konsole /etc/passwd?
EN

Unix & Linux用户
提问于 2014-04-19 02:44:54
回答 2查看 1.4K关注 0票数 8

关于这一问题:

在观察胖子的行为时,我注意到一些与我有关的事情。以下是命令“验证码”的前几行输出:

代码语言:javascript
复制
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不被任何进程打开。

你知道是怎么回事吗?

EN

回答 2

Unix & Linux用户

发布于 2014-04-19 03:19:33

你可以读源代码,说到.我是为您这么做的;它看起来像是来自ProcessInfo.cpp文件。它得到了用户名。不仅/etc/passwd不是你关心的问题,任何人都可以阅读它。不过,如果它试图阅读/etc/shadow,你可能会担心。

票数 9
EN

Unix & Linux用户

发布于 2014-04-19 05:38:20

出于同样的原因,ls -l读取/etc/passwd,是将UID与名称关联的数据。当ls对文件调用stat(2)时,它会为文件的所有者获得一个数值UID。为了将其显示为人类可读的名称,它需要在唯一有这些关联的地方查找它,即/etc/passwd。例如,/etc/passwd中典型的第一行是

代码语言:javascript
复制
root:x:0:0:root:/root:/bin/bash

ls -l /etc/hosts需要产生输出时

代码语言:javascript
复制
-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,它不是任何密码的有效散列。

票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/125500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档