我们在使用ubuntu时,经常会使用sudo命令,但是使用ubuntu用户登录,使用sudo命令时,经常会要求输入密码,为了方便,我们可能会修改root用户下 /etc/sudoers 文件,使sudo命令不需要输入密码,这个时候就不可避免的会输入错误,导致sudo命令无法使用,出现类似如下错误
>>> /etc/sudoers: syntax error near line 22 <<<
sudo: parse error in /etc/sudoers near line 22
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
捉急,怎么办,sudo运行不了,ubuntu下一般都不设置root密码,根本进入不了root用户。
这个时候常规的做法就是重启系统,进入grub界面,再进入recovery模式,修改sudoers文件,重启系统。
但是有时候,主机并不是自己控制的,自己只有ssh登录系统的使用权限。
这个时候下面这种方法就是救世主了:
使用下面的命令来编辑sudoers文件
pkexec visudo
但是却报如下错误:
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: ubuntu,,, (ubuntu)
Password:
polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.
怎么办?这是什么问题?其实我也不知道。正确的打开方式如下:
1、打开两个ssh终端,都是用ubuntu用户登录
2、在第一个终端输入以下命令,获取pid
echo $$
3、在第二个终端,输入:
pkttyagent --process {pid}
这里的{pid}就是第二部获取的pid值(PS:记得去掉{})
4、这个时候,第二个终端会卡住,在第一个终端输入:
pkexec visudo
5、然后,第二个终端也卡主,回到第一个终端,会提示输入当前用户密码,输入
6、好吧,输入完密码,第一个终端卡主了,回到第二个终端,会发现,出现了sudoers的内容,编辑出错的地方,保存即可。
7、完成任务,修改完成,发现就可以继续使用sudo命令了,over
PS:这里用的编辑器是nano,以下是nano简单的保存方式:
linux下在编辑状态下退出请按Ctrl+X,会有两种情形:
①、如果文件未修改,直接退出;
②、如果修改了文件,下面会询问是否需要保存修改。输入Y确认保存,输入N不保存,按Ctrl+C取消返回。如果输入了Y,下一步会提示输入想要保存的文件名。如果不需要修改文件名直接回车就行;若想要保存成别的名字(也就是另存为)则输入新名称然后确定,这个时候也可用Ctrl+C来取消返回。
————————————————
版权声明:本文为CSDN博主「Dr_C」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/caijiapeng0102/article/details/8484873