>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
这个错误其实是挺棘手的,一般来说我们有一个能够使用 sudo 获取超级权限的用户是相当方便的,不需要去启用 root 用户。而且现在的 Ubuntu 中也是默认不启用 SuperUser 的,在官网上也列出了好几个不错的优点,转而让普通用户通过 sudo 来获取对应的权限。
今天想通过添加用户命令添加了一个用户,有这样的提示:
edgarzeng@iZ23tenxmebZ:~$ sudo apt-get update
[sudo] password for edgarzeng:
edgarzeng is not in the sudoers file. This incident will be reported.
完了,咱这个新用户没这么受欢迎,还不让用 sudo 了。不过,其实人家已经说的比较清楚了,泥小子不在 sudoers 里边哦。好吧,这么客气,我们就给个申请进去不就好了么。
edgarzeng ALL = (ALL) ALl
以上这句话我们需要添加到一个任意命名的文件中,置于/etc/sudoers.d/之下,我将这个文件就命名为 edgarzeng,呵呵,不错。完了有件事可别忘了:
sudo chmod 0440 edgarzeng
edgarzeng@iZ23tenxmebZ:/etc/sudoers.d$ sudo apt-get update
sudo: /etc/sudoers.d/edgarzeng is mode 0644, should be 0440
[sudo] password for edgarzeng:
就在我要使用的时候就有这玩意儿提示我了。最终,也是 sudo 无法使用。
好了,其实如果一切顺利的话就会如上一样,轻轻松松搞定了。
可是,不知道是否有注意到我 edgarzeng 文件中的语法是问题的呢?这直接就导致了 sudo 直接无法使用了,错误即开篇提到的那个。哎,悲催。请注意 最后一个 ALl ,二笔般的就给把 L 小写了,这就是传说中的 syntax error。
然后我开始满大街的找方案,又见识了满大街都是一家人的网络,一律都是暴力方式啊,这里我就不举出是什么方案了,有兴趣自己百度(不推荐使用,但是这种方案也就只有百度能给出了)
那既然我们是把语法给搞错了么,就把它搞正确不就好了么,介绍个其实和 sudo 有异曲同工的 命令 pkexec,而且官方推荐在运行具有 gui 的程序时最好用后者的:
pkexec visudo -f /etc/sudoers.d/edgar
然后,就可以编辑那个错误的东东。ok,搞定。