我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

mac环境,为了解决sudo识别自定义命令的问题,按着网上的错误教程,苏南大叔错误地修改了sudo的配置文件/etc/sudoers。结果,悲剧就这么发生了,再使用sudo命令的话,命令行报错。而修复文件/etc/sudoers文件,又必须使用sudo,基本上就是陷入死循环了。

苏南大叔:sudo 命令报错,如何修复 /etc/sudoers 文件? - sudo-repair
sudo 命令报错,如何修复 /etc/sudoers 文件?(图4-1)

本文描述的是:/etc/sudoers这个文件的修复过程。测试环境是mac,其它的类linux系统也是有参考意义的。

正常的sudo命令界面

正常情况下,sudo命令界面如下:

苏南大叔:sudo 命令报错,如何修复 /etc/sudoers 文件? - 被修复的sudo
sudo 命令报错,如何修复 /etc/sudoers 文件?(图4-2)

如果您看到的界面不是类似这样的界面的话,就可能需要进行修复。请参考接下来的修复方案内容。

修改/etc/sudoers的过程

苏南大叔,在这里并不推荐您修改这个/etc/sudoers文件,因为这是非常危险的行为。如果您执意要修改这个文件,那么在修改之前,请注意备份相关文件。

文件备份命令:

cp /etc/sudoers /etc/sudoers_bak

正确的修改方式:

sudo visudo

错误的修改方式:

!!!这个修改方式是错误的修改方式!!!千万不要修改/etc/sudoers的文件权限,改不回去!!!

chmod 777 /etc/sudoers 
vi /etc/sudoers
chmod 440 /etc/sudoers

可能遇到的报错信息

苏南大叔再次警告您,这么做是十分危险的!修改之前,请做好思想准备!

错误地修改了文件内容,报错如下:

>>> /etc/sudoers: syntax error near line 46 <<<
sudo: parse error in /etc/sudoers near line 46
sudo: no valid sudoers sources found, quitting

错误地修改了文件权限,报错如下:

sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

苏南大叔:sudo 命令报错,如何修复 /etc/sudoers 文件? - sudo错误提示信息
sudo 命令报错,如何修复 /etc/sudoers 文件?(图4-3)

sudo命令修复方案

要修复 /etc/sudoers 文件,必须使用 sudo 命令。要使用 sudo 命令,/etc/sudoers 文件就不能出错。先有鸡还是先有蛋?这是个悖论!

/etc/sudoers 文件搞坏掉之后,唯一的修复方案,就是:单用户模式。

第一步,进入单用户模式

进入单用户模式,操作过程是这样的:

seosn.com:这里是【评论】可见内容

然后会进入一个字体特别小的命令行界面,几千行指令从眼前瞬间飞过。

苏南大叔:sudo 命令报错,如何修复 /etc/sudoers 文件? - 修复过程
sudo 命令报错,如何修复 /etc/sudoers 文件?(图4-4)

第二步,检测硬盘(可选)

有的教程会提示说,要执行硬盘检测命令。但是,这个命令可以跳过的。大家可以试试不执行这个问题。

/sbin/fsck -fy

回车后检测硬盘,要等待几分钟的样子。检测过程,大概会分为十个步骤操作。命令结束后,会有滴的声音提醒。

第三步,改为可写状态(必选)

这条命令是必须执行的,否则修改/etc/sudoers文件的时候,会有read only之类的错误提示。

/sbin/mount -uw /

这个时候,单用户模式已经获取到了可写权限,可以继续修复sudo的配置文件/etc/sudoers了。

第四步,具体修复过程

如果您的错误是:syntax error near line。那么您需要修改/etc/sudoers文件。

vi /etc/sudoers

如果您的错误是:/etc/sudoers is world writable。那么您需要修改文件权限。

chmod 440 /etc/sudoers

第五步,重启生效

修改好之后,重启电脑即可。

reboot

总结

这个/etc/sudoers文件是千万不能乱动的,它就是和selinux一样,动了就很有可能会出各种各样的问题,修复的话,就会异常麻烦了。所以,大家请千万小心操作,如果您确定知道自己在做什么,那么再来操作这个/etc/sudoers文件。

更多mac经验技巧,请关注苏南大叔的博客文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   mac    sudo