![此特定场景中目录和文件权限之间的差异](https://linux22.com/image/121182/%E6%AD%A4%E7%89%B9%E5%AE%9A%E5%9C%BA%E6%99%AF%E4%B8%AD%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%E4%B9%8B%E9%97%B4%E7%9A%84%E5%B7%AE%E5%BC%82.png)
最近我正在学习基于 SSH 的身份验证来连接到 Web 服务器。该帖子推荐了某些文件权限。本地计算机的 .ssh 文件夹必须具有 700 的目录权限,其中的内容(例如密钥必须具有 640 的文件权限) 。
没有意义的是,如果我为所有者设置 rwx 权限,而为该目录的组和其他人设置任何权限,则意味着该组和其他人无法列出或 cd 到该目录。那么进一步的意义何在为其中的文件设置 640 的权限(即该组的 rw,其他人没有权限)?该组或其他人首先无法读取或移动到该目录。
答案1
您是正确的,内部权限在功能上与给定的目录结构和权限无关,但您缺少一件事。硬链接共享权限。
在上面的示例中,如果您创建指向其他位置的硬链接(不是符号链接)~/.ssh/id_rsa
,则生成的文件将镜像 的权限~/.ssh/id_rsa
,因此,如果他们的用户可以通过您的访问权限访问它,那么人们将能够访问它主目录,或者通过新位置。
因此,SSH 要求实际上没有技术上应有的严格(理想情况下,该目录中的私钥需要具有 0600,而不是 0640 的权限),但大多数人不再了解或关心硬链接(与符号链接(可以跨越文件系统边界)或引用链接(当链接之一被写入时,它将在所有情况下正确分割链接)相比,它们并不是很有用。
至于其他的文件,还是有一定的安全要求的。尤其:
- 该
.ssh/authorized_keys
文件包含有关您还可以访问的其他公钥的信息。 - 该
.ssh/known_hosts
文件包含有关您已连接到哪些系统的信息(OpenSSH 实际上提供了在没有权限的情况下使用主机名和 IP 地址上的单向哈希来保护此系统的功能)。 - 密钥的公共部分可用于与
.ssh/authorized_keys
其他系统进行匹配以关联帐户,或者理论上可以攻击您的私钥(尽管第二种情况主要是理论上的,除非您面对的是政府级别的对手)。
所有这些文件都可用于找出窃取您信息的其他潜在位置,因此最好受到保护。