免密使用sudo
我们常使用Linux的sudo命令暂时获取root权限。但这条命令需要输入密码,可能让人觉得不方便。
这里介绍一个免密使用sudo的方法。
住:操作有危险,请谨慎操作!
一、 编辑sudoers文件
以我的登录账号bzj为例。
-
打开
sudoers文件打开
Linux终端,发出如下命令:sudo visudo这条命令会打开
/etc/sudoers这个文件。 或者,也可以用这种方式打开:cd /etc sudo vim sudoers -
添加项目
在打开的文件中,找到如下一行:
root ALL=(ALL:ALL) ALL在其下添加一行:
bzj ALL=(ALL:ALL) NOPASSWD:ALL -
修改项目
再在找到这一行:
%sudo ALL=(ALL:ALL) ALL将这一行改成这样:
%sudo ALL=(ALL:ALL) NOPASSWD:ALL -
保存
用
sudo visudo打开的,按CTRL+O;用sudo vim sudoers打开的,先按ESC,再按:,输入wq!即可。
请在操作时一定小心,不要输错了!
此后再使用sudo时就不会被要求输入密码了。
二、 我踩过的坑
这几天我新装了台电脑。在完成WSL中的Linux安装后修改了sudoers文件,结果不小心输错了,导致在使用sudo时出现这样的错误:
>>> /etc/sudoers: syntax error near line 27 <<<
sudo: parse error in /etc/sudoers near line 27
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
这个错误造成了死循环:要使用sudo,必须要用到sudoers;要修改sudoers,必须使用sudo!
我尝试使用
su -
试图进入root账号也不行,提示授权失败!
赶紧上网查如何修复,结果方案不是不适用,就是不管用!
这下给我整傻眼了,该不会要重装WSL吧:(
静下心了,终于想到了一个办法:
-
将
WSL的默认用户切换为root关闭
WSL终端,打开Powershell,输入:ubuntu2004 config --default-user root如果你的Ubuntu是18.04,那么请用ubuntu1804替换ubuntu2004。以下同。
-
启动
WSL此时可以使用前面提到的两条命令打开
sudoers并修改为正确。 -
将
WSL的默认用户切换回bzj关闭
WSL终端,打开Powershell,输入:ubuntu2004 config --default-user bzj -
再次启动
WSL成功了!
如果你使用的是独立Linux或者在虚拟机中使用Linux,并且不小心犯了和我相似的错误,那么建议上网去查如何修复sudoers。