Estou tentando recuperar um setor defeituoso no meu disco e, ao fazer isso, preciso sobrescrever o setor defeituoso. Inúmeras fontes na web sugerem usar dd para fazer isso, mas isso não funciona:
$ sudo dd if=/dev/zero of=/dev/disk1 bs=512 count=1 seek=961575240
dd: /dev/disk1: Operation not permitted
$
Achei que talvez houvesse algum tipo de verificação sobre como fazer isso em um sistema de arquivos montado, então inicializei no modo de usuário único (que pelo menos deixa o modo somente leitura), mas ainda recebo o mesmo erro. Algumas mensagens adicionais sobre sandbox também são exibidas.
Sandbox: dd(5) System Policy: deny(1) file-write-data /dev/disk1
Sandbox: dd(5) System Policy: deny(1) file-write-data /dev/disk1
Existe uma maneira de permitir que o dd saia da sandbox? tentei
sudo sandbox-exec -p '(version 1) (allow default)' /bin/dd if=/dev/zero of=/dev/disk1 bs=512 count=1 seek=961575240
mas isso ainda deu erro à operação não permitida.
Isso está no OS X 10.11 GM
Responder1
Não tenho um computador sacrificial para testar isso, mas acho que você está se deparando comProteção da integridade do sistemadestaque em El Capitan. Principalmente, o que o SIP faz é impedir que você (mesmo como root) modifique áreas do sistema do disco (/System, /sbin, /bin/ a maior parte de /usr, etc), mexa nos processos do sistema, carregue kexts assinados incorretamente, etc. Mas, para reforçar essa proteção das pastas do sistema, também evita gravações brutas no dispositivo em que o volume do sistema está. Sim, mesmo se você for root (esse é o ponto - é para limitar os danos causados por malware que obtém acesso root).
EUpensaresse limite não será aplicado emmodo de recuperação. Segure Command-R enquanto o computador inicia e ele inicializará a partir de uma partição de emergência oculta. Abra o Terminal (está no menu Utilitários) e experimente a dd
partir daí. dd
pode não existir no sistema de recuperação (é mínimo), mas você pode usar /Volumes/Macintosh\ HD/bin/dd
. Você não vai precisar sudo
, você já é root.
Se isso não funcionar, tente desabilitar o SIP com csrutil disable
e reinicializar normalmente (vejaDocumento da Apple sobre configuração do SIP). Então, quando terminar, recomendo reativá-lo – é um recurso de segurança útil.
Responder2
No meu caso, tive que alterar minhas “Preferências do Sistema > Segurança e Privacidade > Acesso Total ao Disco > Terminal” ou iTerm2.
Depois que eu dei acesso total ao disco ao Terminal ou dd
as operações do iTerm2 foram permitidas sem alterar SIP/root ou + r... eu tentei isso também ;-)
Responder3
Tente usar su
.
No Linux/Unix você primeiro precisa definir uma senha para o usuário root como:
sudo passwd root
Então você deve ter permissão suficiente para fazer isso.
Verifique também se todas as partições estão desmontadas.
Digite mount
e verifique quais partições estão montadas.
Então:
sudo umount /dev/disk1sX
Em vez de disk1sX
escrever a partição correta.