OS X 10.8.3 root 用户帐户权限损坏

OS X 10.8.3 root 用户帐户权限损坏

我在 OS X 10.8.3 上遇到了 root 权限问题。此问题以多种形式表现出来。

在尝试执行 MacPorts 的自我更新后,这个问题变得清晰起来。以下问题https://stackoverflow.com/questions/15780321/macport-selfupdate-fails-code-23-xcode-command-line-tools-are-installed突出显示所看到的错误。

XCode 和 XCode 命令行实用程序已安装,并且已启用 root 用户。

关键是我无法以 root 身份进行更改,因为 root 似乎没有正确的权限。我尝试过对 /etc 和 /etc/local 中的任何内容进行 chown 和 chmod 操作,但总是出现“操作不允许”

我已遵循所有常规解决方案。磁盘实用程序 -> 修复权限,启用/禁用 root 用户,更改 root 用户密码,关闭机器电源。

bash-3.2$ chmod 775 base.tar
chmod: Unable to change file mode on base.tar: Operation not permitted
bash-3.2$ ls -la
total 129744
drwxr-xr-x  10 root  admin       340  8 Apr 15:17 .
drwxr-xr-x   3 root  admin       102  8 Apr 12:38 ..
-rw-r--r--   1 root  admin   9453803  8 Apr 12:30 PortIndex
-rw-r--r--   1 root  admin       512  8 Apr 12:31 PortIndex.rmd160
drwxr-xr-x  24 root  wheel       816 31 Jan 17:30 base
-rw-r--r--   1 root  admin   3594240  8 Apr 15:01 base.tar
-rw-r--r--   1 root  admin       512  8 Apr 15:01 base.tar.rmd160
drwxr-xr-x  51 root  wheel      1734  8 Apr 15:17 ports
-rw-r--r--   1 root  admin  53360640  8 Apr 15:01 ports.tar
-rw-r--r--   1 root  admin       512  8 Apr 15:01 ports.tar.rmd160
bash-3.2$ whoami
root
bash-3.2$ 

在此阶段,我正在考虑重新安装,但更愿意修复此问题而不是重新开始。

id 的输出是:

uid=504(root) 
gid=0(wheel) 
groups=0(wheel),
402(com.apple.sharepoint.group.1),
401(com.apple.access_screensharing),
1(daemon),
2(kmem),
3(sys),
4(tty),
5(operator),
8(procview),
9(procmod),
12(everyone),
20(staff),
29(certusers),
33(_appstore),
61(localaccounts),
504(admin),
98(_lpadmin),
100(_lpoperator),
204(_developer),
403(com.apple.sharepoint.group.2)

dscl 的输出。读取'/Users/root'

bash-3.2$ dscl . read '/Users/root'
AppleMetaNodeLocation: /Local/Default
GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000
NFSHomeDirectory: /Users/root
Password: ********
PasswordPolicyOptions:
 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>failedLoginCount</key>
    <integer>0</integer>
    <key>failedLoginTimestamp</key>
    <date>2001-01-01T00:00:00Z</date>
    <key>lastLoginTimestamp</key>
    <date>2001-01-01T00:00:00Z</date>
    <key>passwordLastSetTime</key>
    <date>2013-05-27T07:39:18Z</date>
</dict>
</plist>

PrimaryGroupID: 0
RealName: root
RecordName:
 root
 BUILTIN\Local System
RecordType: dsRecTypeStandard:Users
SMBSID: S-1-5-18
UniqueID: 504
UserShell: /bin/bash

答案1

你以某种方式创建了另一个名为没有 root 权限(可能覆盖了默认root账户)或更改了 root 用户 ID 的用户。root应该有 UID 0。也许启用/禁用 root 用户,更改 root 用户密码您所关注的是错误的。

您可以尝试通过sudo如下运行明确指定 UID 0:

sudo -u '#0' <command>

dscl是用于管理用户帐户(以及其他操作)的命令行实用程序。dscl . read '/Users/root'默认情况下,输出应类似于以下内容:

AppleMetaNodeLocation: /Local/Default
GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000
NFSHomeDirectory: /var/root
Password: *
PrimaryGroupID: 0
RealName:
 System Administrator
RecordName: root
RecordType: dsRecTypeStandard:Users
SMBSID: S-1-5-18
UniqueID: 0
UserShell: /bin/sh

你可以尝试通过运行 来重置所有内容dscl . change '/Users/root' 'UniqueID' '504' '0',希望这sudo能解决这个问题。但这可能会造成更多问题 – 我只用钥匙测试过UserShell

相关内容