ubuntu 12.04.1 普通用户丢失sudo权限 root没有密码 解决办法

时间:2022-10-30 14:20:33

起因是这样:
本来是想体验一下acl,创建了两个用户,一个用户组,并把原来的用户一起加入到这个用户组里

$ usermod +G acluser jck   <= 没有加-a

悲剧就此发生了,usermod如果不加-a,是会把原来的附加组信息都擦掉重写的
原来jck的附加组里面有samba,sudo等一系列用户组,都没有了,只有jck和acluser了
而且ubuntu默认是不设置root密码的,至此,root权限和这台机器说拜拜了

解决办法:

1.按照网上所说可以进recovery模式,不需要root密码即可获得root权限的shell,然后可以设置密码

走一个:

ubuntu 12.04.1 普通用户丢失sudo权限 root没有密码 解决办法

重启后(因为没有root权限,所以是暴利的...),在grub选项(“如果GRUB菜单隐藏,可以按Esc调出,如果设置了GRUB密码,按p来解锁”,据说啊据说)选择recovery mode,一般会是第二个,然后就出现上图的内容,选择root......那一项,会看到地下黑框框里的内容,输入密码或者按Ctrl+D。

到这里你会发现不行的(至少我是这样),我没有root密码,Ctrl+D会返回到刚进入这个界面的情况...

难道改版本了?真是太不科学了,我放弃了这个方法。

2.修改grub启动项的内容,进入单人维护模式

重启,看到grub选项时,在正常进系统那个选项(通常是第一个)按“e”编辑,会看到如下内容,我的是这样的

ubuntu 12.04.1 普通用户丢失sudo权限 root没有密码 解决办法

 

在光标所在一行(linux...那一行)添加如下内容

ro quiet splash rw single init=/bin/bash

将会变成下面这样

ubuntu 12.04.1 普通用户丢失sudo权限 root没有密码 解决办法

然后Ctrl+x启动,两三秒中就会进入到一个root权限的shell里了,图我忘了截了

然后你可以为所欲为,当然这里给root加个密码就得了

# passwd root

设置完密码系统会有提示,重启(命令都是不好用的,直接Ctrl+Alt+DEL)

进入系统后,切换到root,找到这个文件“/etc/sudoers”,查看一下权限内容

# ll /etc/sudoers
-r--r----- 1 root root 745 Jan 17 17:03 /etc/sudoers

你懂得,把他改成可写的

# chmod 640 /etc/sudoers
# ll /etc/sudoers
-rw-r----- 1 root root 745 Jan 17 17:03 /etc/sudoers

打开,找到“root    ALL=(ALL:ALL) ALL”,在下面添一行一模一样的,用户名换成你的

root    ALL=(ALL:ALL) ALL
cec     ALL=(ALL:ALL) ALL

保存退出,然后再把权限改回来就成了,在把root密码注释掉,我的系统就变成原来的样子了

但是sudo的用户组好想还没加进来呀...不管了 :-)