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+,也是同样处理