6.6. Linux 密码和影子文件格式

传统的 Unix 系统将用户账户信息(包括单向加密的密码)保存在一个名为 ``/etc/passwd'' 的文本文件中。 由于许多工具(例如 ``ls``)使用此文件通过将用户 ID 号与用户名匹配来显示文件所有权等信息,因此该文件需要是全局可读的。因此,这可能存在一定的安全风险。

另一种存储账户信息的方法(我一直使用的方法)是使用影子密码格式。与传统方法一样,此方法以兼容的格式将账户信息存储在 /etc/passwd 文件中。但是,密码存储为单个 "x" 字符(即实际上并未存储在此文件中)。第二个文件,名为 ``/etc/shadow'', 包含加密密码以及其他信息,例如账户或密码过期值等。/etc/shadow 文件仅可由 root 账户读取,因此安全风险较低。

虽然其他一些 Linux 发行版强制您安装 Shadow Password Suite 才能使用影子格式,但 Red Hat 使其变得简单。要在两种格式之间切换,请键入(以 root 身份)

  /usr/sbin/pwconv	To convert to the shadow format
  /usr/sbin/pwunconv	To convert back to the traditional format

使用影子密码,``/etc/passwd'' 文件包含账户信息,看起来像这样

smithj:x:561:561:Joe Smith:/home/smithj:/bin/bash

passwd 条目中的每个字段都用 ":" 冒号字符分隔,如下所示

也许您不希望为您的用户提供 shell 账户。您可以创建一个名为 ``/bin/sorrysh'' 的脚本文件,例如,它可以显示某种错误消息并注销用户,然后将此脚本设置为他们的默认 shell。

注意:注意:如果账户需要提供 "FTP" 传输来更新网页等,则 shell 账户需要设置为 ``/bin/bash'' -- 然后需要在用户的 home 目录中设置特殊权限以防止 shell 登录。有关详细信息,请参阅 第 7.1 节

``/etc/shadow'' 文件包含用户的密码和账户过期信息,看起来像这样

smithj:Ep6mckrOLChF.:10063:0:99999:7:::

与 passwd 文件一样,shadow 文件中的每个字段也用 ":" 冒号字符分隔,如下所示