免密使用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。