由于脚本错误,我的根的PrimaryGroupID是101,UniqueID是101.我仍然可以访问root,我可以从我的pipe理员帐户运行sudo,但是sudo和root没有明显的所有权限。
我可以读取dscl输出,例如:
dscl . -read /Users/root PrimaryGroupID PrimaryGroupID: 101 dscl . -list /Users UniqueID root 101 dscl . -list /Groups PrimaryGroupID wheel 0
但是我不能用dscl改变任何东西:
sudo dscl . -change /Users/root UniqueID 101 0 <main> attribute status: eDSPermissionError <dscl_cmd> DS Error: -14120 (eDSPermissionError)
什么是有趣的,当我运行:
dscl . -read /Groups/wheel GroupMembership GroupMembership: root
我如何重置根的UniqueID和PrimaryGroupID为0.我通过Mac OS X安装DVDloginterminal,我有一个超级用户所有必要的权利,但我没有弄清楚如何访问目录服务的logging从那里。
首先,备份用户和组的数据; 它存储在/ Volumes / yourbootvolume / var / db / dslocal / nodes / Default中,因此只要将整个目录复制到某个位置以防万一发生错误。 一旦完成,有几种不同的方法可以将root的uid重置回0:
使用文本编辑器可能是最简单的:编辑/Volumes/yourbootvolume/var/db/dslocal/nodes/Default/users/root.plist,找一个这样的部分:
<key>uid</key> <array> <string>101</string> </array>
并将“101”更改为“0”。 警告:如果你弄乱了这个文件的格式,你可以使你的系统比现在更加不可用。
另一种select是使用dscl -f打开常规系统的用户文件,即使是从DVD引导而已。 检查以确保您可以访问他们:
dscl -f /Volumes/yourbootvolume/var/db/dslocal/nodes/Default localonly -read /Local/Target/Users/root
它应该打印出根帐户的各种属性,包括“UniqueID:101”。 如果这有效,你应该能够设置它回来:
dscl -f /Volumes/yourbootvolume/var/db/dslocal/nodes/Default localonly -change /Local/Target/Users/root UniqueID 101 0