当我们执行ls -l
命令列出目录中的文件时,/etc/passwd
文件是否被访问。请解释 ??如果是,我该如何验证?
问问题
879 次
3 回答
5
是的。/etc/passwd
用于将用户 ID 映射到用户名。我们可以使用 关闭-n
它,它将显示数字用户 ID 和组 ID(uids、gids):
$ ls -l
total 0
-rw-rw-r-- 1 thomas thomas 0 Sep 30 10:54 bar
$ ls -n
total 0
-rw-rw-r-- 1 1000 1000 0 Sep 30 10:54 bar
终极证明:
$ strace ls -l 2>&1 | grep /etc/passwd
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4
$ strace ls -n 2>&1 | grep /etc/passwd
# no output
于 2012-09-30T09:56:17.060 回答
2
我向 Thomas 添加了 +1,但我想指出该文件可能会被访问,也可能不会。这取决于“/etc/nsswitch.conf”的内容。
在这种情况下
$ grep passwd /etc/nsswitch.conf
passwd: compat
该文件将被访问,在这种情况下
$ grep passwd /etc/nsswitch.conf
passwd: ldap
它不会。
于 2012-09-30T10:15:33.523 回答
1
"ls -l" 打印有关文件和目录(元数据)的信息,例如:访问权限、大小等。它不读取任何文件或目录的内容。即使您对文件没有任何访问权限,您仍然可以读取其元数据(例如:访问权限、大小)。这同样适用于目录(例外:如果您无法读取目录,则无法列出其内容,如果无法“执行”目录,则无法将其用作路径的组件来访问其中的内容)。
大多数现代 Linux 系统都配置为使用“影子密码”,这意味着/etc/passwd不包含密码哈希(读取:敏感数据)。密码哈希存储在/etc/shadow中。这就是为什么/etc/passwd对所有人都可读(仅包含有关用户的元数据:他们的姓名、ID、shell、组等),但/etc/shadow只能由 root 读取的原因。
于 2012-09-30T10:05:26.257 回答