![像“passwd”这样的文件怎么会包含shell呢?](https://linux22.com/image/1445666/%E5%83%8F%E2%80%9Cpasswd%E2%80%9D%E8%BF%99%E6%A0%B7%E7%9A%84%E6%96%87%E4%BB%B6%E6%80%8E%E4%B9%88%E4%BC%9A%E5%8C%85%E5%90%ABshell%E5%91%A2%EF%BC%9F.png)
我当时正在读一些书,在 Jon Erickson 的《黑客,第二版:漏洞利用的艺术》在第 89 页我读到:
passwd 文件包含系统上每个用户的帐户信息,包括每个用户的默认登录 shell
某物怎么会包含 shell?我以为那或多或少是你用来与系统交互的东西,而不是像文件那样被包含的东西?那么 shell 到底是什么?
答案1
很简单,当您以用户身份“登录”时,将执行用户的默认 shell。文件passwd
包含此信息(即/bin/csh
、/bin/bash
或类似信息)。它是文件中要使用的字段之一。以下是示例条目:
jsmith:x:1001:1000:Joe Smith,Room 1007,(234)555-8910,(234)555-0044,email:/home/jsmith:/bin/sh
注意最后一个字段包含/bin/sh
。当此用户登录时,这是为用户交互而执行的默认“shell”。
我认为你误解了它的意思。它实际上并不“包含”用户的 shell,因为它出现在这个文件“内部”。它只为每个条目保留一个字段,指示在用户通过身份验证后将默认执行哪个“shell”二进制文件以供用户交互。