执行 sudo curl -o- https://xxx/install.sh | bash报错 sudo: /etc/sudoers is world……

472 阅读3分钟

Solution

Mac执行sudo curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh> | bash报错,如下所示:

sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit

这段错误信息的意思是,系统尝试使用sudo命令时,发现/etc/sudoers文件设置了可写权限,并且没有找到有效的sudoers源文件。这可能导致无法使用sudo命令进行特权操作

其中,第一个错误sudo: /etc/sudoers is world writable

/etc/sudoers文件设置了可写权限,可能导致未经授权的用户对文件修改。在Unix和类Unix系统,文件的权限通常包括所有者、组和其他用户的读、写和执行权限。

第二个错误提示sudo: no valid sudoers sources found, quitting

系统没有找到有效的sudoers源文件。Unix和类Unix系统中,sudoers文件用于配置sudo命令的访问权限。如果该文件不存在/无效,sudo命令无法正常工作。

第三个错误提示sudo: error initializing audit plugin sudoers_audit

系统在初始化审计插件sudoers_audit时发生了错误。审计插件用于监视和记录系统活动

所以是系统存在安全问题,要我们检查/etc/sudoers文件的权限设置

Task

权限出了问题,误操作修改了/etc/sudoers的权限,将它的权限改成了 777,导致执行所有 sudo 的命令都报错

所以想办法怎么把权限给改回去,利用搜索引擎找到解决办法:

Action

  1. 在Mac中启动root 账户

Finder 中按组合键“shift + command + G”直接前往文件夹 /System/Library/CoreServices,找到“目录实用工具”开启 Root 账户

启用之后,可以注销系统然后用刚刚开启的 Root 帐号登录 Mac OS

image.png

image.png Root 账户的权限是系统中最高级别,为了避免发生各种安全问题,建议在用 Root 账户解决完问题后关闭 Root 账户。关闭的步骤跟上面差不多,只是在打开“目录实用工具”后,点击“编辑”菜单里的“停用 Root 用户”即可 2. 切换到root用户,修改 /etc/sudoers 权限

# 不能使用chmod修改权限
# 列出`/etc/sudoers`文件详细信息:文件权限、所有者、组、大小、创建时间、修改时间等
jiujiu@jiujiudeMacBook-Pro ~ % ls -la /etc/sudoers
-rwxrwxrwx  1 root  wheel  1563  3 18 11:34 /etc/sudoers

# 修改权限,文件所有者具有读和执行权限,所在组和其他用户只有读权限
jiujiu@jiujiudeMacBook-Pro ~ % chmod 440 /etc/sudoers
chmod: Unable to change file mode on /etc/sudoers: Operation not permitted

# 切换到root用户
jiujiu@jiujiudeMacBook-Pro ~ % su
Password: 
# 自己设置的密码
sh-3.2# ls -l /etc/sudoers
-rwxrwxrwx  1 root  wheel  1563  3 18 11:34 /etc/sudoers

# 将文件的用户和群组权限设置为只读,而其他用户权限则被设置为无
sh-3.2# chmod 0440 /etc/sudoers
sh-3.2# ls -l /etc/sudoers
-r--r-----  1 root  wheel  1563  3 18 11:34 /etc/sudoers
sh-3.2# exit
exit
jiujiu@jiujiudeMacBook-Pro ~ %

Result

操作完成之后,再重新执行你的指令即可~