我有个问题:
我的 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 的建议启动到单用户模式来修复它:
重启,按住 Command-S 进入单用户模式。请注意,如果你使用的是蓝牙键盘,则需要在启动时按下此键逐渐减弱。如果按得太早,蓝牙无线电会重置,键盘会失去连接,无法传达按键信息。如果按得太晚,启动过程将进入多用户启动。
按照屏幕上的说明重新挂载根驱动器以读写。
fsck
如果您正常重启,则可以跳过此步骤。因此,您可能只需输入:mount -uw /
修复 上的权限
/etc/sudoers
。请注意,root
当您处于单用户模式时,您已经是 ,因此不需要这样做sudo
。chmod 0440 /etc/sudoers
重新启动即可退出单用户模式,只需输入:
reboot
答案2
另一种方法是使用Automator.app
创建一个包含以下内容的新工作流:
do shell script "chmod 0440 /etc/sudoers" with administrator privileges
当您运行它时,它会要求您输入密码并且(假设您是管理员)它会修复它。
如果您搞乱了父目录的权限(例如,将 / 设置为 755 以外的值),这也会起作用。