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