无法修改linux/ubuntu密码(Authentication token manipulation error )问题解决过程

Vmware虚拟机里的ubunut系统长期不用,密码忘记了,无奈只能通过slax liveCD启动,使用root权限将/etc/passwd ,/etc/shadow中root账户和本地账户的密码去掉。重启进入原来的系统,选择修复模式,企图通过root模式命令为本地账户重设密码。但是当输入passwd MYHOST ,然后输入两次密码之后,却提示passwd: Authentication token manipulation error.密码修改失败。

下面是网上比较完整的解决方案,但是在我这并未奏效。后面我会说我的解决过程。

==============================================================================================

修改linux密码时出现错误passwd: Authentication token manipulation error

发生该错误原因是:
1、分区没有空间导致。
2、/etc/passwd 和/etc/shadow不同步
但是这次上面两条却行不通,通过df查看根分区还有40%剩余。
 
1、尝试修改密码,出现错误
# passwd
Changing password for user root.
New UNIX password: 
BAD PASSWORD: it is WAY too short
Retype new UNIX password: 
passwd: Authentication token manipulation error
2、同步/etc/passwd 和/etc/shadow出错
 #pwconv
pwconv: can't lock passwd file
3、看权限没有异常,也没有进程锁定该文件
# ll /etc/passwd
-rwxr--r--  1 root root 2752 Dec 31 17:29 /etc/passwd
# fuser -u /etc/passwd
# lsof |grep passwd
4、cp lock文件出错,提示空间不足
# cp /tmp/.pwd.lock /etc/
cp: cannot create regular file `/etc/.pwd.lock': No space left on device
5、上面的错误惊醒了我,查看确实是inode满了,删除无用的文件
#df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda5            2562240 2562240       0  100% /
/dev/sda1              50200      47   50153    1% /boot
/dev/sda2            51300000      12 51299988    1% /data/cache1
/dev/sdb1            51300000 7080311 44219689   14% /data/cache2
/dev/sdb2            9863168      11 9863157    1% /data/proclog
none                  215907       1  215906    1% /dev/shm
/dev/sda3            3842720  305795 3536925    8% /usr
/dev/sda7            3162112    7893 3154219    1% /var
6、再次修改密码仍然出错,于是尝试修改/etc/passwd也出现错误
# chmod 777 /etc/passwd
chmod: changing permissions of `/etc/passwd': Operation not permitted
7、执行chattr 
#chattr -i  /etc/passwd
# lsattr -v /etc/passwd 
2095582053 ------------- /etc/passwd
# chattr -i  /etc/shadow
8、同步文件
pwconv
9、成功修改密码
passwd 
Changing password for user root.
New UNIX password: 
BAD PASSWORD: it is WAY too short
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

=======================================================================================

经过以上解决步骤之后,可以确定,我的passwd,shadow未被任何进程占用,分区空间足够。在执行pwconv命令时,依然提示:cannot lock "/etc/passwd" .......

转而搜索“cannot lock file”问题。以下是网上的解决方法:

第一种情况 这个 passwd文件正在被 其他程序访问,所以此时 是 锁定状态,知道那个使用它的程序 释放 这个文件的 使用权。
第二种情况 就是 确实有 .lock文件存在 楼主在 etc下试下  rm -rf  *.lock  看执行完这个 行不(root权限执行) 这个文件是 处理异常情况的 归档,和VIM的 那个缓存有些类似,在一致性没有回复之前 这个文件一直存在的(维护系统的一致性) 
为了在/etc下的茫茫文件中寻找那些lock文件,我企图ls >> zzz.txt  (因为find命令不太熟悉,囧~~),这里竟然创建文件失败,提示Read-only file system.......

转而搜索“Read-only file system”问题,以下是网上的说法:

这种情况通常都是由于系统发现磁盘硬件故障或文件系统中文件被损坏之后而采取的保护机制导致的。为了保护数据不破坏分区中已有内容,Linux在挂载文件系统时就只用read-only只读方式加载了。至于挂载的文件系统为什么会莫名地变成以只读方式挂载的具体原因,这就不知道了。可能的原因有:
系统文件损坏;  磁盘有坏道;  fstab文件配置错误,如分区格式错误错误(将ntfs写成了fat)、配置指令拼写错误等。
如果能够确认数据和系统的文件没有被损坏,修复fstab文件配置后只要重新R/W加载或reboot就能够恢复正常。


因此怀疑可能是我在liveCD中修改文件导致系统重启之后发现数据被破坏,所以给Read-Only了。于是使用mount命令重新挂载成读写模式,命令如下:

#mount -o remount rw /

再次执行同步命令:#pwconv,没有提示错误。然后顺利使用#passwd MYHOST命令为账户MYHOST 设置密码,#init 6 命令重启,登陆成功!






你可能感兴趣的:(linux,密码,Linux)