/etc/passwd、/etc/passwd+、/etc/passwd- 文件介绍

busybox下修改密码或创建用户的时候,有时候操作会失败,此时 /etc 目录可能出现 passwd+passwd- 两个文件。

当出现 /etc/passwd+ 文件时,修改密码会耗时几秒钟然后报错:

# passwd root
Changing password for root
New password: 123456

Retype password: 123456

passwd: can't create '/etc/passwd+': File exists
passwd: can't update password file /etc/passwd
# 

根据 update_passwd.c 可以获得以下信息

  • /etc/passwd 用户帐号配置文件
  • /etc/passwd+ 更新过程中的临时文件
  • /etc/passwd- 用户帐号配置文件的备份

更新密码逻辑:

  • 创建 /etc/passwd+ 文件

    如果 /etc/passwd+ 文件存在,则会返回错误.

  • 备份 /etc/passwd 文件到 /etc/passwd-
  • 更新后的帐号配置写到 /etc/passwd+ 文件
  • /etc/passwd+ 文件重命名为 /etc/passwd

经验法则

  • /etc/passwd 文件损坏时,使用备份文件 /etc/passwd- 还原
  • /etc/passwd+ 文件存在导致无法更新帐号信息,直接删除 /etc/passwd+ 文件即可
  • 还会存在 /etc/shadow /etc/shadow- /etc/shadow+ ,也是同样处理

linux