无法执行 sudo:“/etc/sudoers 模式为 0740,应为 0440”

无法执行 sudo:“/etc/sudoers 模式为 0740,应为 0440”

我有个问题:

我的 Mac 上没有 root 密码。我只有一个管理员帐户,可以使用 执行操作sudo。现在,我想将我的普通用户/etc/sudoers也添加到该文件中。由于它不允许我写入该文件(即使使用 sudo 写入),我执行了以下操作:

sudo chmod u+w /etc/sudoers

这有效。但从那时起,我无法sudo再在系统上执行任何命令。它抱怨/etc/sudoers模式错误:

$ sudo touch /etc/sudoers 
sudo: /etc/sudoers is mode 0740, should be 0440
Segmentation fault

这听起来像是一个糟糕的笑话,因为现在我甚至无法将模式改回0440

$ sudo chmod 0440 /etc/sudoers 
sudo: /etc/sudoers is mode 0740, should be 0440
Segmentation fault

有什么办法可以解决这种情况吗?我需要恢复我的sudo能力。

答案1

这可能是少数需要从磁盘工具运行“修复磁盘权限”的情况之一。

如果这不起作用,请按照@slhck 的建议启动到单用户模式来修复它:

  1. 重启,按住 Command-S 进入单用户模式。请注意,如果你使用的是蓝牙键盘,则需要在启动时按下此键逐渐减弱。如果按得太早,蓝牙无线电会重置,键盘会失去连接,无法传达按键信息。如果按得太晚,启动过程将进入多用户启动。

  2. 按照屏幕上的说明重新挂载根驱动器以读写。fsck如果您正常重启,则可以跳过此步骤。因此,您可能只需输入:

    mount -uw /

  3. 修复 上的权限/etc/sudoers。请注意,root当您处于单用户模式时,您已经是 ,因此不需要这样做sudo

    chmod 0440 /etc/sudoers

  4. 重新启动即可退出单用户模式,只需输入:

    reboot

答案2

另一种方法是使用Automator.app

创建一个包含以下内容的新工作流:

do shell script "chmod 0440 /etc/sudoers" with administrator privileges

当您运行它时,它会要求您输入密码并且(假设您是管理员)它会修复它。

如果您搞乱了父目录的权限(例如,将 / 设置为 755 以外的值),这也会起作用。

相关内容