其他分享
首页 > 其他分享> > 记一次自己挖的坑

记一次自己挖的坑

作者:互联网

在ubuntu中如果以一个普通用户的身份以sudo命令修改了/etc/sudoers文件的所属人所属组或者权限导致sudo命令不能使用,会出现报错

sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

这个时候就会形成一种死循环,想把sudoers文件的权限更改回来,就得使用sudo命令,但是sudo命令使用又会报错,怎么办??
解决办法
首先需要开两个终端
在第一个终端上

echo $$

这里就会输出一个PID
然后在第二个终端

pkttyagent --process PID

这里的PID是第一个终端输出的PID,回车之后第二个终端就会卡在那,之后在第一个终端

pkexec visudo

这时候第一个终端也会卡住,但是第二个终端就会弹出让输入用户密码验证,输入当前用户的密码,回车之后,第一个终端就打开了visudo的文件,CTRL+x退出,然后在第一个终端sudo命令就可以使用了。

{在此说明,我挖这个坑是因为ansible使用sudo,但是如果ansible想使用sudo成功就必须修改visudo,使普通用户在使用sudo的时候不需要输密码,这样才能成功,我懒省事写了一个sudoers文件用ansible直接分发到其他机器的普通用户家目录下,之后再mv到/etc下,但是这时候的sudoers文件的所属人和所属组都不再是root,也就导致了上面的问题,当然,如果开启了允许root登录的话,直接登录root修改即可}

嗯,希望不要有人像我一样做这么蠢的事情 /doge

标签:一次,sudoers,sudo,PID,自己,visudo,etc,终端
来源: https://blog.csdn.net/professorman/article/details/110289019