zoukankan      html  css  js  c++  java
  • Mac账户修改用户名失去了管理员权限的解决办法

    网上至少有两种方法,本文介绍第三种方法(推荐第三种)。

    1. “resetpassword”法,它只适合于忘记密码的情形,不适合改权限  https://support.apple.com/zh-cn/HT202860
    2. “.AppleSetupDone”法,重建用户,相当于恢复出厂设置,慎用。https://blog.csdn.net/sevenzwx/article/details/93237692
    3. "groupmembers"法。因为都是命令行,对普通用户来说稍微复杂点。它也有自己的优点,比如直接添加管理员权限,重启后立刻生效。

    您肯定会想:是不是任何一个普通帐户都可以变成管理员啊?!但是,难道这不是一个安全漏洞吗?

    答案是:可以。不过本人不认为这是安全漏洞,这是系统的用户管理的一种方式而已。

    出于安全考虑,能否防止?
    答案是:可以。从安全的角度说,Mac电脑用户一定要打开两个安全选项:设置固件锁 1 和 全盘加密 2,否则的话,你的Mac就没有安全之说。这一点,切记切记 !!!

    注意,更改 macOS 用户帐户和个人文件夹的名称的操作只在Sierra及其之前的macOS/OS X系统中被支持3,新系统High Sierra和Mojave都会造成问题。

    搜集资料

    我的环境

    很简单,我们的目的就是把tonyliu这个账户变为管理员
    tonyliu是一个普通用户帐户:

    登录帐户名:tonyliu
    帐户的全名:Tony Liu

     

    获取帐户信息

    最关键的是获得用户的登录帐户名。

    命令行 

    有多种方式获得用户的帐户名。本人认为,从终端中获得当前用户的用户名最简单,就是下面的whoami命令输出的字符串tonyliu:

    $ whoami
    tonyiu


    图形界面 

    (估计自行修改帐户名的读者都这样操作过)在用户和群组的系统偏好中。解锁后,按住键盘的control键,鼠标点击用户名,松开control键,点击Advanced Options:


    点击Advanced Options, 就可以获得用户信息了,如图:

     

    用户UUID

    (这一步可以省略)上图中的UUID就是,或者运行dscl命令获得:

    $ dscl . read /users/TONYLIU GeneratedUID
    GeneratedUID: 1052FC1A-7595-4D06-816A-4AF79EE746AE

    注:把上面的TONYLIU换成你的帐户名

    好了,需要的都有了,下面是一步步操作了

    恢复启动Mac:

    要是不知道如何“恢复启动Mac”,就看看Apple的两个官方文档:关于 macOS 恢复功能 https://support.apple.com/zh-cn/HT201314 和 如何通过 macOS 恢复功能重新安装 macOS https://support.apple.com/zh-cn/HT204904

    进入Disk Utility

    确认你的内置盘的路径:如下图,在Mount Point后面的,高亮的"/Volumes/Macintosh HD"文字部分,就是我们需要的内置盘路径,记住它后,退出Disk Utility。

     

    操作过程中,遇到Mount Point 显示未装载情况, 需要先选中左面 Macintosh HD, 然后 界面上方 装载(Mount)进行装载, 然后再继续后面操作

    进入终端程序

    到macOS Utility的Utilities菜单中,选择Terminal

    输入命令

    现在是关键了。要仔细对照自己的系统,输入正确的命令和参数。
    下面是全部命令的截图,后面一一讲解:

      

    命令解释:

    1.  cd /Volumens/Macintosh HD/private/var/db/dslocal/nodes/default/
       把前面获得的内置盘路径中的/private/var/db//dslocal/nodes/default/目录作为当前路径。
    
    2.  命令:PATH=/usr/libexec:$PATH
       /usr/libexec目录里面包含着后面要用到的PlistBuddy命令。把这个目录添加到PATH环境中,省去以后每次都写全路径的麻烦。
       本例中,仅用 PATH=/usr/libexec 也可以。如果你的恢复系统不包括PlistBuddy,就用PATH=/Volumes/Macintosh HD/usr/libexec

    3.  命令:PlistBuddy -c “Print generateduid” ./usrs/tonyliu.plist
       -c 是PlistBuddy命令的选项,后面运行一个动作
       Print , 打印/显示输出
       generateduid:是定义用户Plist文件中的一个字段,它就是我们前面说的一个用户的UUID。
       ./users/tonyliu.plist:每个用户帐户都有一个位于users子目录中的唯一一个plist文件定义的,而且文件名就是用户的帐户名,里面保存着用户的帐户信息。
       输出的结果就是帐户tonyliu的UUID(这里可以拷贝下这个UUID, 后面会用到)。
    4.  命令:PlistBuddy -c “Print users” ./groups/admin.plist
       
       跟前一行类似,不同的是:    users:是定义群组中成员的字段,是字符串数组。    ./groups/admin.plist:是管理员群组的plist文件    输出的结果是个数组,是系统中所有管理员的帐户名。按照从前往后的顺序排列,数组序列号从数字0开始,所以上图的例子是:users[0]=root,users[1]=admin。后面我们要把tonyliu添加到最后,那么就是users[2]=tonyliu(如果运行这行命令,打印的结果只有1项,那么就是要设置users[1]='tongliu', 即Add users冒号后面的数字应该为1)
    5.  命令:PlistBuddy -c “Print groupmembers” ./groups/admin.plist
      
       跟前一行类似,不同的是:    groupmembers:是定义组成员UUID的数组的字段    输出的结果也是个数组,是系统中所有管理员的帐户名的UUID。顺序排列与前面的一致,数组序列号也从数字0开始。后面我们要把tonyliu的UUID(也就是3. 命令的输出)添加到最后,序号也是2.(如果运行这行命令,打印的结果只有1项,那么就是要设置groupmembers[1]='1052FC1A-7595-4D06-816A-4AF79EE746AE', 即Add groupmembers冒号后面的数字应该为1)

    6.  命令:PlistBuddy -c “Add users:2 string tonyliu” ./groups/admin.plist
        
       跟前面几个类似,不同的是:    Add:就是把数据添加到Plist文件的指定字段中。    users:就是字段名    :2:定义数组的元素编号,上面说了要把tonyliu添加到序号2。(如果上面Print users结果只有1项,这里应该为1)    string:定义后面的参数的类型,string是字符串    tonyliu :要添加的字符串的值    全句的解释就是,把tonyliu作为字符串添加到./groups/admin.plist文件中的users数组中的第[2]个元素。    运行成功,不会看到任何的输出

    7.  命令:PlistBuddy -c “Add groupmembers:2 string 1052FC1A-7595-4D06-816A-4AF79EE746AE” ./groups/admin.plist

        跟前面几个类似,不同的是:
        全句的解释就是,把** 1052FC1A-7595-4D06-816A-4AF79EE746AE**作为字符串添加到./groups/admin.plist文件中的groupmembers数组中的第[2]个元素。(如果上面Print groupmembers结果只有1项,这里应该为1
        运行成功,不会看到任何的输出

    8.  命令:PlistBuddy -c “Print users” ./groups/admin.plist 和 PlistBuddy -c “Print groupmembers” ./groups/admin.plist
       这两行就是为了验证前面的操作正确。

    9.  命令:reboot
       重新启动

     

    命令小结

    初级读者使用中,注意把命令中下面的字符串替换成与操作机配置相匹配的:

    “Macintosh HD”
    “tonyliu”
    “1052FC1A-7595-4D06-816A-4AF79EE746AE”
    其实,命令4/5/8/9都可以省略,这样只要在命令6/7中稍作修改就可以了。读者自行尝试。

     

    .AppleSetupDone法回顾

    方法是图形和命令行的混合:

    重启到单用户模式4后,一次输入下面三行命令:

    /sbin/mount -uw /
    rm /var/db/.AppleSetupDone
    reboot


    重启后,跟着macOS初始化步骤完成创建一个新管理员的步骤。登录到新管理员中,到用户和群组系统偏好中赋予原有帐户管理员权限5。
    可选整理步骤:登出新管理员,登录到原管理员帐户,删除新管理员帐户。
    如何在 Mac 上设置固件密码:https://support.apple.com/zh-cn/HT204455 ↩︎

    使用文件保险箱加密 Mac 上的启动磁盘:https://support.apple.com/zh-cn/HT204837 ↩︎

    更改 macOS 用户帐户和个人文件夹的名称: https://support.apple.com/zh-cn/HT201548 ↩︎

    以单用户模式或详细模式启动 Mac: https://support.apple.com/zh-cn/HT201573 ↩︎

    macOS Sierra: 在 Mac 上设置用户、客人和群组: https://support.apple.com/kb/PH25796?viewlocale=zh_CN&locale=de_LU ↩︎
    ————————————————
    版权声明:本文为CSDN博主「afatgoat」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/afatgoat/java/article/details/84138463

  • 相关阅读:
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增锁定用户与解除锁定用户的功能
    Vue常用经典开源项目汇总参考-海量
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->用户管理模块新增“重置用户密码”功能
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper
    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增记录SQL执行过程
    RDIFramework.NET平台代码生成器V3.2版本全新发布(提供下载-免费使用)
    [译]何时使用 Parallel.ForEach,何时使用 PLINQ
    IntelliJ IDEA 12 与 Tomcat7 配置
    git用.gitignore忽略指定文件
  • 原文地址:https://www.cnblogs.com/dfyg-xiaoxiao/p/12820207.html
Copyright © 2011-2022 走看看