ubuntu 权限修改错误深坑

使用vim 修改了/etc/sudoers 下的sudoers,导致无法鉴权。

这两天在嵌入式linux上搞网络编程,发现ubuntu设置的防火墙把端口屏蔽了,想手动打开,普通用户提权的时候不小心用vim修改了

1
/etc/sudoers

文件,导致内核解析的时候出错了:

这时候出现了一个悖论:

  1. 我想把sudoers修改回去,但是需要sudo权限
  2. sudoers解析错误,没办法sudo

造成了死锁…. 于是求助广大网友,万能网友一个骚操作成功化解,其原理至今未解:

  1. 使用ctrl+alt+F2 打开另外一个tty

  2. 在第一个tty执行

    1
    echo $$

    获取tty的pid

  3. 在第二个tty执行

    1
    pkttyagent --process {pid} 

    这时第二个会卡住

  4. 返回第一个执行

    1
    pkexec visudo
  5. 然后,第二个终端也卡主,回到第一个终端,会提示输入当前用户密码

  6. 输入完密码,第一个终端卡主了,回到第二个终端,会发现,出现了sudoers的内容,编辑出错的地方,保存即可。

  7. 完成任务,修改完成,发现就可以继续使用sudo命令了,over

循环登录

在嵌入式linux系统里面又遇到下面这种情况:输入密码进入ubuntu后不一会闪退,需要重新输入密码,然后陷入循环…

试了很久,猜想系统扫描某些配置文件需要sudo权限,而普通用户无权限:

  1. 使用ctrl + alt + F1进入命令行界面
  2. 进入/etc/passwd 文件修改用户组为0:0,提升到root权限
  3. 重新登录神奇的好了,但是登录需要选择用户了(以前直接默认普通用户登录,现在可以直接root登录)