no se permite la operación dd, ¿cómo escapar del sandbox?

2

Estoy tratando de recuperar un sector defectuoso en mi disco, y al hacerlo, necesito escribir sobre el sector defectuoso. Numerosas fuentes en la web sugieren usar dd para hacerlo, pero hacerlo no funciona:

$ sudo dd if=/dev/zero of=/dev/disk1 bs=512 count=1 seek=961575240
dd: /dev/disk1: Operation not permitted
$

Pensé que tal vez había algún tipo de verificación acerca de hacer esto en un sistema de archivos montado, así que inicié en modo de usuario único (que al menos sale está en modo de solo lectura), pero sigo teniendo el mismo error. Sin embargo, también se muestran algunos mensajes adicionales sobre sandboxing.

Sandbox: dd(5) System Policy: deny(1) file-write-data /dev/disk1
Sandbox: dd(5) System Policy: deny(1) file-write-data /dev/disk1

¿Hay alguna manera de permitir que dd salga de la caja de arena? Lo intenté

sudo sandbox-exec -p '(version 1) (allow default)' /bin/dd if=/dev/zero of=/dev/disk1 bs=512 count=1 seek=961575240

pero eso todavía dio error a la operación no permitida.

Esto está en OS X 10.11 GM

Chris Eveland
fuente
¿Tiene algo montado en / dev / disk1 (incluso si es un sector diferente)? Eso suena como si fuera un disco. Es posible que desee intentar escribir en la partición (con el desplazamiento apropiado) si la partición no está montada. Nunca intente alterar el contenido de una partición montada, incluso si es de solo lectura. Puede que a los núcleos no les guste (por lo que puede tener inestabilidad del sistema). Nota: mucha gente, incluido yo mismo, afirma que una vez que una unidad da un solo error, ya no debe confiar en la unidad; tales unidades tienden a fallar más rápidamente que las unidades promedio que no han tenido un primer error de disco. ¡Apoyo!
TOOGAM

Respuestas:

2

No tengo una computadora sacrificial para probar esto, pero creo que te encuentras con la función de Protección de integridad del sistema en El Capitan. Principalmente, lo que hace SIP es evitar que (incluso como root) modifique las áreas del sistema del disco (/ System, / sbin, / bin / most of / usr, etc.), que se meta con los procesos del sistema, que cargue kexts incorrectamente firmados, etc. Pero para hacer cumplir esa protección de las carpetas del sistema, también evita las escrituras en bruto en el dispositivo en el que está activado el volumen del sistema. Sí, incluso si eres root (ese es el punto, es limitar el daño del malware que obtiene acceso root).

Creo que este límite no se aplicará en modo de recuperación . Mantenga presionado Command-R cuando la computadora se inicie y arrancará desde una partición de emergencia oculta. Abra la Terminal (está debajo del menú Utilidades) e intente dddesde allí. ddEs posible que no exista en el sistema de recuperación (es bastante mínimo), pero puede usarlo /Volumes/Macintosh\ HD/bin/dden su lugar. No necesitarás sudo, ya eres root.

Si eso no funciona, intente deshabilitar SIP con csrutil disable, luego reinicie normalmente (consulte el documento de Apple sobre la configuración de SIP ). Luego, cuando haya terminado, recomendaría volver a habilitarlo: es una característica de seguridad útil.

Gordon Davisson
fuente
Ahora necesita una raíz para raíz. Genius / sarc
cde
Gracias, eso fue bastante informativo. El modo / terminal de recuperación me llevó un poco más lejos, ya que no obtuve permiso ni errores de sandbox, pero todavía no estaba contento con el dispositivo ocupado, por lo que arrancó de una tarjeta SD para hacer el dd.
Chris Eveland
0

Intenta usarlo su.

En Linux / Unix, primero debe establecer una contraseña para el usuario root como:

sudo passwd root

Entonces deberías tener suficiente permiso para hacer esto.

Compruebe también si todas las particiones están desmontadas.

Escriba mounty compruebe qué particiones están montadas.

Entonces:

sudo umount /dev/disk1sX

En lugar de disk1sXescribir la partición correcta.

xdevs23
fuente
Ejecutar dd desde el shell de root (ya sea arrancado completamente o en modo de usuario único) da el mismo resultado que 'sudo dd ...'. Incluso ejecutándose con permiso de root, parece estar en el sandbox.
Chris Eveland
¿Lo has intentado sudo chown root:root /dev/disk1? ¿Estás seguro de que puedes escribir en / dev / disk1? Podría ser otro tema ...
xdevs23
Tuve que usarsudo diskutil unmountDisk /dev/diskNsX
Jacksonkr