在仅含标准用户的Mac上恢复管理员权限的技术指南

本文详细介绍当Mac上的所有账户均被移出管理员组,导致系统无管理员账户时,如何在Apple Silicon Mac的恢复环境中,通过配置sudoers文件并使用dseditgroup命令,重新为指定标准用户账户赋予管理员权限。

在仅含标准用户账户的Mac上授予本地用户账户管理员权限

我最近在LinkedIn上看到一篇帖子,发帖人显然从macOS上名为admin的本地组中移除了所有被分配了管理员权限的账户,随后难以从此状态中恢复。

在macOS上,admin组的成员身份是授予管理员权限的关键,这意味着现在这台Mac只剩下拥有标准用户权限的账户。

过去,存在从恢复环境中修复此问题的方法,这些方法使用恢复环境中的chroot命令行工具,将活动文件系统从恢复环境切换到Mac的常规启动磁盘,然后运行dseditgroup命令行工具,将一个或多个本地用户账户重新添加到启动磁盘的admin组中。

然而,看起来chroot命令目前在Apple Silicon Mac的macOS Tahoe可用的恢复环境中不起作用。启动时,它会报告错误然后退出。

随着chroot命令行工具在恢复环境中不再工作,这似乎关闭了为运行macOS Tahoe的Apple Silicon Mac重新将用户添加到admin组的大部分途径。但是,经过一些研究,我发现了一种使用sudo命令行工具的替代方法。更多详情,请见下文。

此方法利用了macOS上sudo命令行工具的一项能力,即使用为sudo工具正确格式化的配置文件,这些配置文件以纯文本文件的形式存储在/private/etc/sudoers.d目录中。以下过程将创建一个sudo配置,该配置存储在一个名为fixadmin的纯文本文件中,该文件将从恢复环境中创建并存储在Mac启动磁盘可写部分的/private/etc/sudoers.d目录中。

该配置文件的作用是允许一个原本只有标准用户权限的用户账户,以root权限运行dseditgroup命令行工具,从而使得该用户账户能够使用dseditgroup命令行工具将自己(或另一个账户)添加到名为admin的本地组中。此过程的最终结果是,被添加到admin组的账户将获得管理员权限。

先决条件:

  • 对相关Mac的物理访问。
  • 用于以root权限运行dseditgroup命令行工具的账户的短名称。
  • 如果Mac使用FileVault加密,您将需要FileVault恢复密钥以及一个启用了FileVault的账户的密码。

一旦满足先决条件,请使用以下过程为sudo命令行工具创建配置文件:

  1. 启动到恢复环境。
  2. 如果需要,输入FileVault恢复密钥以访问恢复环境。
  3. 如果您需要使用FileVault恢复密钥解锁,解锁后选择“退出到恢复”选项。
  4. 在恢复窗口中,点击“磁盘工具”。
  5. 验证“数据”卷是否已挂载。
    • 如果“数据”卷未挂载,请在磁盘工具中点击“挂载”按钮进行挂载。
    • 如果启用了FileVault,您需要输入一个启用了FileVault的账户的密码来挂载数据卷。
  6. 退出磁盘工具。
  7. 通过“实用工具”菜单打开“终端”。
  8. 运行以下命令,在/Volumes/Data/private/etc/sudoers.d目录中创建一个名为fixadmin的文件:
    1
    
    touch /Volumes/Data/private/etc/sudoers.d/fixadmin
    
  9. 运行以下命令,使用nano命令行文本编辑器编辑/Volumes/Data/private/etc/sudoers.d/fixadmin文件:
    1
    
    /Volumes/Macintosh\ HD/usr/bin/nano /Volumes/Data/private/etc/sudoers.d/fixadmin
    
  10. 将以下行添加到fixadmin文件中:
    1
    
    username_goes_here          ALL = (ALL) /usr/sbin/dseditgroup
    
    此文件应按以下方式格式化: A. 输入您希望授予权限以使用sudo运行dseditgroup命令行工具的用户账户的账户短名称。 B. 按Tab键创建一个制表符空格。 C. 输入该行的其余部分:ALL = (ALL) /usr/sbin/dseditgroup 例如,如果相关用户账户的账户短名称是username,则条目应如下所示:
    1
    
    username          ALL = (ALL) /usr/sbin/dseditgroup
    
  11. 验证该行格式是否正确。
  12. 要保存更改,请同时按下键盘上的Control键和X键 (Control + X)。
  13. 系统将提示您保存未保存的更改。出现提示时,保存更改。
  14. 重新启动进入macOS。
  15. 以您授予了使用sudo运行dseditgroup命令行工具权限的账户登录。
  16. 打开“终端”并运行以下命令,为指定用户账户授予管理员权限:
    1
    
    sudo dseditgroup -o edit -a username_goes_here -t user admin
    
    例如,如果相关用户账户的账户短名称是username,则该命令应如下所示:
    1
    
    sudo dseditgroup -o edit -a username -t user admin
    
  17. 验证所需账户现在是否拥有管理员权限。
  18. 通过运行以下命令,从/private/etc/sudoers.d目录中删除fixadmin文件:
    1
    
    sudo rm /private/etc/sudoers.d/fixadmin
    
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计