Recuperando senhas (e usuários) no Mac OS X

(Pra variar, mais uma história..)

Estava no final do expediente hoje, na Diginet, quando minha amiga Stella aparece no messenger:

17:09:34 stella: homi
17:09:37 stella: eu esqueci a senha do meu macbook

(sim.. isso mesmo.. ela cometeu esse crime..)

Depois de ter tentado acalmar ela por alguns minutos, fui pesquisar uma forma de como recuperar a bendita senha..

O site da Apple, tem um procedimento para resetar a senha de um usuário, que não requer que você tenha a senha anterior e envolve o DVD de instalação do sistema. Pensei: “Ótimo.. vai ser facílimo resolver isso..”.

Passei então para elas as instruções, e aparentemente, tudo estava OK. A surpresa veio quando ela me disse quando reiniciou o Mac. Seu usuário tinha desaparecido. Me pareceu estranho, mas como o problema ficou realmente sério, eu me propus a ir até sua casa resolver.

Depois de iniciar no modo single (segurar ‘s’ durante o boot), comecei a verificar o problema e vi que realmente não havia mais referências para o usuário dela no sistema. Sua pasta home (que por sorte também não sumiu..) estava com permissão para o usuário 501, e não para o nome do usuário ( que vou chamar stella, porque, enfim.. não importa.. :) ). Tentei iniciar os serviços do sistema, por achar que a base de dados dos usuários não tinha sido carregada, mas o problema persistia. Tentei mudar a senha do usuário com o bom e velho conhecido do linux passwd, mas era informado um erro que dizia não ter dados para poder trocar a senha. Foi então que caiu realmente a ficha que o usuário foi apagado (PS: Tenham cuidado com o DVD de instalação..).

Pois bem.. em mais um ato nerd e ninja ao mesmo tempo, misturei algumas várias informações que coletei na internet, em sites diferentes, para recriar o usuário e poder setar uma senha (a dica serve para o Mac OS X Tiger – 10.4 e para o Leopard – 10.5. Também serve para o caso de precisar apenas trocar a senha em modo single), sem perder os arquivos pessoais que estavam no home dela.

  1. Depois de iniciado o modo single, remontar a partição principal com permissão de escrita:
    • mount -uw /
  2. Com a partição remontada, iniciar os serviços do sistema (caso queira apenas trocar a senha, pule para o passo 4, após esse):
    • Tiger: sh /etc/rc
    • Leopard: launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServices.plist
      launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist
  3. Logo após ter iniciado esses serviços, foi preciso recriar o usuário com os mesmos dados do usuário anterior. Dica: Veja quais os IDs dos usuário e grupo que estavam sendo informados no home). Segue os passos para criar um usuário administrador “na mão”.
    • Criar uma entrada no domínio local de autenticação na categoria “usuários”. Repare que isso não vai criar o seu home (Mude temporariamente o nome do home anterior. No caso dela, eu mudei para stella_bkp)
      • dscl / -create /Users/stella
    • Setar o shell padrão para o bash
      • dscl / -create /Users/stella UserShell /bin/bash
    • Setar o nome real do usuário
      • dscl / -create /Users/stella RealName “Stella”
    • Setar o ID do usuário (lembrando que esse era o ID original do usuário)
      • dscl / -create /Users/stella UniqueID 501
    • Setar o ID do grupo do usuário (também era o ID original)
      • dscl / -create /Users/stella PrimaryGroupID 1000
    • Criar e setar o diretório home do usuário (neste caso é importante ter renomeado o diretório)
      • dscl / -create /Users/stella NFSHomeDirectory /Users/stella
  4. Finalmente setar a senha:
    • passwd stella
  5. Mudar o usuário para o grupo administrador (que era o caso dela)
    • dscl / -append /Groups/admin GroupMembership stella
  6. Após ter feito isso, verifique se o diretório especificado foi criado. Se não foi, ótimo.. (a ideia do comando que sugeria isso, era apenas setar o diretório… não realmente criar). Se foi criado, remova ou renomeie (por segurança..), e torne a renomear o backup original do home para o nome do usuário:
    • mv /Users/stella_bkp /Users/stella

Depois desses passos, provavelmente vai estar tudo de volta no lugar, bastando apenas reiniciar o Mac:

  • reboot

    Quando iniciar o sistema, em modo normal, o usuário novo (re)criado, deve aparecer na listagem, e a senha setada vai funcionar :)

    Espero que possa ajudar mais pessoas que eventualmente tenham tido o problema.