2

Я сталкиваюсь с проблемой прав доступа root на OS X 10.8.3. Это проявляется в разных формах.

Это стало ясно после попытки выполнить самообновление MacPorts. Следующая проблема https://stackoverflow.com/questions/15780321/macport-selfupdate-fails-code-23-xcode-command-line-tools-are-installed подчеркивает увиденную ошибку.

Утилиты командной строки XCode и XCode установлены, а пользователь root включен.

Ключевым моментом является то, что я не могу вносить изменения от имени пользователя root, поскольку у root, похоже, нет необходимых прав доступа. Я пробовал chown'ing и chmod'ing что-нибудь в /etc и /etc /local, но я всегда получаю "Операция не разрешена"

Я следовал всем нормальным решениям. Дисковая утилита -> Восстановить разрешения, Включить / отключить пользователя root, изменить пользователя root на p / w, выключить и снова включить компьютер.

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$ 

На этом этапе я рассматриваю возможность переустановки, но предпочел бы исправить это, а не начинать заново.

Вывод идентификатора:

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)

вывод дскл. прочитайте '/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 ответ1

2

Каким-то образом вы создали другого пользователя с именем root , у которого нет прав доступа root (который мог бы переопределить учетную запись root по умолчанию), или изменили ID пользователя root. root должен иметь UID 0. Возможно, инструкции по включению / отключению пользователя root, смене пользователя root, которого вы придерживались, были неверными.

Вы можете попытаться указать UID 0 явно, запустив sudo следующим образом:

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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .