Linux 操作系统中 /etc/shadow 文件的用途是什么?另外,对于 SUSE 客户端是否相同?有一个影子缓存文件被维护那是什么目的?
Dav*_*man 16
从一开始,Unix 和 Unix 风格的操作系统(包括 Linux)总是将密码存储为加密哈希 (1)。这些散列最初存储在 中/etc/passwd,但该文件需要是世界可读的,以便将信息用于其他目的——即使是简单的ls -l读取/etc/passwd,以便将每个文件所有者的数字用户 ID 转换为他们的用户名以供显示。但是,将散列密码放在一个世界可读的文件中,恶意用户可以轻松获取这些散列值,并尝试为其他用户的帐户生成可用的密码 (2)。
为了防止这种情况,散列密码最终被移动到一个只能由 root 用户(有时还有特权管理员组)读取的文件中/etc/shadow。这对系统的普通用户隐藏了哈希值,同时保持它们可用于用户身份验证。
注意事项:
迂腐,我知道,但存储的密码没有加密。它们使用加密安全(至少在编写时)散列算法进行散列。这里相关的主要区别是散列是固定长度的(加密文本的长度根据加密文本的长度而变化)和不可逆的(加密文本可以解密;散列文本不能)。
因为散列是固定长度的,所以有无数个输入可以匹配任何给定的散列表示。因此,攻击者可以找到一个工作密码,该密码不一定与拥有用户的密码相同——尽管鉴于现代加密哈希的大小,这不太可能。
该/etc/shadow文件是出于安全原因创建的,并保存每个用户的加密密码。
最初,加密的密码存储在/etc/passwd. /etc/passwd必须是全局可读的,以便系统可以将用户 ID 映射到用户名,并且用户可以找到彼此的信息,例如其他用户的主目录或他们的电话号码,这些信息传统上存储在“gecos”字段中并由“手指”实用程序显示。
但后来人们意识到这是一个安全问题。任何有足够时间的人都可以通过为每个可能的密码以编程方式生成加密密码来进行所谓的暴力攻击。如果攻击者在没有实际尝试通过telnet或登录的情况下执行此操作ssh,则系统无法知道它正在受到攻击。
所以加密后的密码被移到了新创建的 中/etc/shadow,只有 root 才能读取。
它还包含/etc/passwd文件不支持的与用户帐户和密码相关的其他信息,例如密码上次更改时间和到期时间。
有关文件格式的完整详细信息,请参阅man 5 shadow(网络版)。
在不知道您处理的是哪个版本的 SUSE 的情况下,我无法说 SUSE 是否相同。例如,您的 SUSE 系统可能使用 Blowfish 而不是 MD5。
您还暗示您将您的/etc/shadow文件与运行不同 Linux 发行版的系统混合,但没有说明其他发行版是什么。
例如,请参见将影子文件从 SuSE 9.3 迁移到 Ubuntu Server x86_64的问题。
要尝试弄清楚,请打开/etc/shadow并查看加密的密码字段是否以$1$或开头$2$。如果它包含$1$,则它是 MD5,并且与大多数其他发行版兼容。如果它包含$2$,那么根据Debian 上的 Blowfish 影子文件,它可能是 Blowfish 。
如果您使用的是 Ubuntu,那么搜索 Ubuntu 河豚的第一个 Google 搜索结果可能是一个不错的起点。
| 归档时间: |
|
| 查看次数: |
6775 次 |
| 最近记录: |