Ubuntu设置完成root密码,后期因为忘记root密码(或者其他原因),在ubuntu操作系统无法切换到root权限。尝试使用命令:sudo passwd root
,修改root密码收到这个报错:Authentication token manipulation error。
网上有很多的解决方法,但是鉴于本人并不是对Ubuntu很熟悉,在修复报错中走了很多哦弯路,但是幸好在几天的问题查找过程中还是解决了这个问题,下面会分享一下解决问题的过程。
有助于解决我的问题的2篇文章,贴出来供大家参考:
文章一:
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.
pwconv
功能说明:开启用户的投影密码。
语 法:pwconv
补充说明:Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文 件中,这两个文件位于/etc目录下。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的 shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为”x”字符,有效的强化了系统的安全性。
pwconv:开启用户的shadow口令.
一般来用pwconv来同步口令,下面来说一下,它的工作流程:
pwconv依赖于passwd中的密码区’x’来同步/etc/passwd与/etc/shadow这两个文件;以/etc/passwd为主来控制/etc/shadow中的各项:
A:若/etc/shadow不存在,则pwconv将用/etc/passwd来建立
B:若/etc/shadow已存在,则:
1.若条目在passwd中已存在,而不在shadow中,则在shadow中添加相关条目
2.若条目在shadow中已存在,而不在passwd中,则从shadow中删除相关条目
文章二:
方法一:
如果用户具有sudo权限,那么直接可以运行如下命令:
#sudo su root
#passwd
#更改密码
或者直接运行sudo passwd root命令就可以直接更改root密码。
有关sudo su的区别:
1.共同点:都是root用户的权限;
2.不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。
![Ubuntu 14.04中root 密码忘记解决方法](https://www.linuxidc.com/upload/2016_05/16051120357028.png)
www.linuxidc.com@linuxidc:~$ sudo su root
[sudo] password for www.linuxidc.com:
root@linuxidc:/home/www.linuxidc.com# passwd
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
root@linuxidc:/home/www.linuxidc.com#
方法二:
如果用户不具备sudo权限,则方法一不能用,并需进入GRUB修改kernel镜像启动参数。本文使用的Ubuntu版本为14.04.4,具体过程如下为:
1、重启电脑长按shift键直到进入下图进入GRUB引导模式,选择第二行Ubuntu 高级选项, 选中直接回车 ,如下图:(无论你是虚拟机还是单独的服务器都是长按shift键进入如下界面)
![GRUB引导模式](https://www.louishe.com/wp-content/uploads/2020/08/ubuntu-root-passwd-change-1.png)
2、进入如下画面,看到里面有一些选项,这时千万不要按回车键,按e进入(recovery mode) 编译kernel进行启动参数
![recovery mode](https://www.louishe.com/wp-content/uploads/2020/08/ubuntu-root-passwd-change-2.png)
3、关键的时候到了, 倒数第四行,会看到一行Linux /boot/vmlnuz-4.2.0-27-generic …….ro recovery nomodeset,
删除 recovery nomodeset
![删除 recovery nomodeset](https://www.louishe.com/wp-content/uploads/2020/08/ubuntu-root-passwd-change-3.png)
3、然后再刚才删除的后面添加 quiet splash rw init=/bin/bash。然后按F10, 启动。
![修改](https://www.louishe.com/wp-content/uploads/2020/08/ubuntu-root-passwd-change-4.png)
4 如果一切争取,运行后系统直接进入root mode,输入:passwd,系统会提示你输入新的密码,结束。
![重置root密码](https://www.louishe.com/wp-content/uploads/2020/08/ubuntu-root-passwd-change-5.png)
有人说,ubuntu 18.04要输入passwd root再修改密码,但是都试了还是没用,所以这个解决方法不适合我。
以上两篇文章第一篇比较适合我,下面开始我的解决:
首先使用普通用户进入ubuntu操作系统,主要使用两个命令:sudo lsattr /etc/passwd
,这个命令是查看passwd文件权限!sudo chattr -e /etc/passwd
,这个命令是修改文件的权限。例如下面的第三行代码,查看到有个“e”,(根据我小白的经验这个“e”是不能有的,应该显示“----------------- /etc/passwd
”这样才可以正常的root密码修改),所以要用“chattr”删除这个“e”。
louis@isp:~$ sudo lsattr /etc/passwd
[sudo] password for louis:
--------------e--- /etc/passwd
louis@isp:~$ su root
Password:
su: Authentication failure
louis@isp:~$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 244888 492 244396 1% /dev
tmpfs 250863 1031 249832 1% /run
/dev/sda1 2334720 387551 1947169 17% /
tmpfs 250863 1 250862 1% /dev/shm
tmpfs 250863 7 250856 1% /run/lock
tmpfs 250863 18 250845 1% /sys/fs/cgroup
/dev/loop0 355 355 0 100% /snap/gnome-logs/100
/dev/loop1 1598 1598 0 100% /snap/gnome-characters/139
/dev/loop2 12816 12816 0 100% /snap/core/6350
/dev/loop3 10756 10756 0 100% /snap/core18/1880
/dev/loop4 230 230 0 100% /snap/gnome-characters/550
/dev/loop5 27345 27345 0 100% /snap/gtk-common-themes/818
/dev/loop6 12862 12862 0 100% /snap/core/9665
/dev/loop7 747 747 0 100% /snap/gnome-system-monitor/57
/dev/loop8 62342 62342 0 100% /snap/gtk-common-themes/1506
/dev/loop9 27631 27631 0 100% /snap/gnome-3-26-1604/74
/dev/loop10 784 784 0 100% /snap/gnome-system-monitor/148
/dev/loop11 1269 1269 0 100% /snap/gnome-calculator/260
/dev/loop12 1720 1720 0 100% /snap/gnome-logs/45
/dev/loop13 1351 1351 0 100% /snap/gnome-calculator/748
/dev/loop14 24339 24339 0 100% /snap/gnome-3-34-1804/36
/dev/loop15 27624 27624 0 100% /snap/gnome-3-26-1604/100
tmpfs 250863 27 250836 1% /run/user/121
tmpfs 250863 31 250832 1% /run/user/1000
/dev/sr0 0 0 0 - /media/louis/CDROM
/dev/sr1 0 0 0 - /media/louis/Ubuntu 18.04.2 LTS amd64
louis@isp:~$ sudo lsattr -v /etc/passwd
3826254676 --------------e--- /etc/passwd
louis@isp:~$ chattr -e /etc/passwd
chattr: Permission denied while setting flags on /etc/passwd
louis@isp:~$ sudo chattr -e /etc/passwd
louis@isp:~$ sudo lsattr -v /etc/passwd
3826254676 ------------------ /etc/passwd
louis@isp:~$ sudo chattr -e /etc/shadow
louis@isp:~$ sudo lsattr -v /etc/shadow
2390448963 -----a------------ /etc/shadow
louis@isp:~$ sudo chattr -a /etc/shadow
louis@isp:~$ sudo lsattr -v /etc/shadow
2390448963 ------------------ /etc/shadow
louis@isp:~$ pwconv
pwconv: Permission denied.
pwconv: cannot lock /etc/passwd; try again later.
louis@isp:~$ sudo pwconv
louis@isp:~$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
山路十八弯,最终还是解决了!