Redefina dscl UniqueID e PrimaryGroupID da raiz para 0 no Mac OS X

1

Devido a um script muito defeituoso, o PrimaryGroupID do meu root é 101 e o UniqueID é 101. Ainda tenho acesso ao root, posso executar o sudo da minha conta de administrador, mas o sudo e o root não possuem todos os direitos necessários.

Eu posso ler a saída do dscl, por exemplo:

dscl . -read /Users/root PrimaryGroupID
PrimaryGroupID: 101

dscl . -list /Users UniqueID
root 101

dscl . -list /Groups PrimaryGroupID
wheel 0

Mas não consigo alterar nada com dscl:

sudo dscl . -change /Users/root UniqueID 101 0
<main> attribute status: eDSPermissionError
<dscl_cmd> DS Error: -14120 (eDSPermissionError)

O que é interessante quando eu corro:

dscl . -read /Groups/wheel GroupMembership
GroupMembership: root

Como posso redefinir o UniqueID e PrimaryGroupID da raiz como 0. Eu efetuei login no Terminal por meio do DVD de instalação do Mac OS X, tenho um superusuário com todos os direitos necessários lá, mas não descobri como acessar os registros do Directory Service de lá.

    
por pirags 07.12.2011 / 09:14

1 resposta

1

Primeiro, faça um backup do usuário & dados do grupo; ele é armazenado no /Volumes/tabbootvolume / var / db / dslocal / nodes / Default, portanto apenas copie esse diretório inteiro para algum lugar seguro caso algo dê errado. Feito isso, há algumas maneiras diferentes de redefinir o retorno do root para 0:

Provavelmente é mais simples usar um editor de texto: edit /Volumes/yourbootvolume/var/db/dslocal/nodes/Default/users/root.plist, procure por uma seção como esta:

<key>uid</key>
<array>
    <string>101</string>
</array>

e mude o "101" para "0". Aviso: se você bagunçar o formato deste arquivo, poderá tornar seu sistema ainda mais inutilizável do que é agora.

A outra opção seria usar dscl -f para abrir os arquivos do usuário do sistema regular, mesmo que você tenha inicializado a partir do DVD. Verifique para ter certeza de que você pode acessá-los com:

dscl -f /Volumes/yourbootvolume/var/db/dslocal/nodes/Default localonly -read  /Local/Target/Users/root

Deve imprimir as várias propriedades da conta root, incluindo "UniqueID: 101". Se isso funcionou, você deve ser capaz de configurá-lo com:

dscl -f /Volumes/yourbootvolume/var/db/dslocal/nodes/Default localonly -change  /Local/Target/Users/root UniqueID 101 0
    
por 07.12.2011 / 18:12