如何在 OSX High Sierra 上修复 /etc/sudoers

如何在 OSX High Sierra 上修复 /etc/sudoers

我是如何来到这里的

我在备份数据后安装了 SSD 驱动器。我安装了 OSX Maverick(因为我的笔记本电脑大约是 2014 年的),然后开始将我的数据从用户 2 复制到用户 1(因为安装操作系统后我的用户与在备份数据中保存数据的同名用户不匹配)。

然后我开始修复文件的所有权,但我做了一件非常糟糕的事情:我跑sudo chmod -R user-1:staff进去/etc更改了的所有权/etc/sudoers。文件所有权被破坏后,您无法将其改回。

我尝试过的方法

我已经完成单用户模式启动,发现文件系统以只读方式挂载。

我已启动恢复模式,发现 OSX磁盘工具中不再提供“修复磁盘权限”

我已启动恢复模式,发现我无法从 Time Machine 备份中恢复单个文件因为恢复模式只允许用您的所有 Time Machine 数据覆盖您的机器。

我尝试进行普通启动,但这需要 30 分钟,尽管进度条显示已完成,但操作系统再也没有出现。

问题

那么,我该怎么做

  1. 在可写文件系统上获取用户提示,以便我可以设置所有权/etc/sudoers
  2. 到达Finder 修复所有权

也许能够再次启动我的笔记本电脑?

遗憾的是,我无法以 root 身份登录此漏洞因为我无法获得登录对话框提示。


稍后 2018-01-21

我碰到这个问题并成功了mount -uw / && chmod 0 /etc/sudoers,但我仍然无法启动。这可能是由 引起的其他问题chown -R

后来:当我以详细模式(Command-V)启动时,我收到无限滚动的错误消息“进程 X 崩溃:opendirectoryd。正在创建太多尸体。”这看起来是致命的。我可能不得不重新安装操作系统和备份。

答案1

有办法(感谢https://astrails.com/blog/2009/09/29/how-to-fix-a-hosed-etc-sudoers-file-on-mac-osx):

  • 使用具有管理员权限的帐户登录
  • 在终端中,运行open etc/Finder 查看该目录
  • 选择文件sudoers
  • 获取其信息 ( Cmd+ I)
  • 单击+添加权限
  • 授予您的帐户读写权限
  • vi /etc/sudoers解决你的困境
  • :w!保存(因为它仍然是“只读”)
  • 然后运行sudo visudo以恢复此文件的正确权限。

答案2

您需要将整个 /etc 层次结构恢复为其正确的所有权。它主要是 root:wheel,但也有一些例外。您可以在重新安装根卷以获得写访问权后在单用户模式下修复它:

mount -uw /
chown -R root:wheel /etc
chown -R root:_lp /etc/cups
chown _lp:admin /etc/cups/certs
chown root:admin /etc/cups/certs/*
chown root:operator /etc/dumpdates    # It's ok if this file doesn't exist

请注意,执行顺序很重要,因为后者chown会覆盖前者的执行顺序。

答案3

因此,经过 2 个小时的绞尽脑汁并阅读了 100 篇不同的文章后,我终于设法完成了。

  1. 使用 Finder 更改 sudoers 文件的权限。右键单击>获取信息>共享和权限。将其更改为所有方(包括“所有人”)都可以读取和写入。但不确定这一步是否必要。
  2. 使用 finder 从 /etc/ 复制 sudoers 文件并删除它。
  3. 将新的 sudoers 文件移回 /etc/
  4. 使用此命令恢复您的 sudoers 文件https://apple.stackexchange.com/a/394943

相关内容