2

Я пытаюсь восстановить поврежденный сектор на моем диске, и при этом необходимо перезаписать поврежденный сектор. Многочисленные источники в Интернете предлагают использовать для этого dd, но это не работает:

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

Я подумал, что, может быть, была какая-то проверка, чтобы сделать это с подключенной файловой системой, поэтому я загрузился в однопользовательском режиме (который, по крайней мере, оставляет в режиме только для чтения), но я все еще получаю ту же ошибку. Некоторые дополнительные сообщения о песочнице также отображаются, однако.

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

Есть ли способ разрешить dd из песочницы? Я старался

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

но это все равно дало операции недопустимую ошибку.

Это на OS X 10.11 GM

2 ответа2

1

У меня нет жертвенного компьютера для тестирования, но я думаю, что вы используете функцию защиты целостности системы в El Capitan. В основном то, что делает SIP, - это предотвращает (даже в качестве пользователя root) изменение системных областей диска (/System, /sbin, /bin / большинство из / usr и т.д.), Связывается с системными процессами, загружает неправильно подписанные кеши и т.д. Но чтобы обеспечить защиту системных папок, она также предотвращает необработанные записи на устройство, на котором включен системный том. Да, даже если вы являетесь пользователем root (суть в том, чтобы ограничить ущерб от вредоносных программ, которые получают root-доступ).

Я думаю, что этот предел не будет применяться в режиме восстановления. Удерживайте Command-R при запуске компьютера, и он загрузится со скрытого аварийного раздела. Откройте Терминал (он находится в меню Утилиты) и попробуйте оттуда dd . dd может не существовать в системе восстановления (она довольно минимальна), но вы можете использовать вместо нее /Volumes/Macintosh\ HD/bin/dd . Вам не понадобится sudo , вы уже root.

Если это не сработает, попробуйте отключить SIP с csrutil disable , а затем перезагрузиться как обычно (см. Документ Apple по настройке SIP). Затем, когда вы закончите, я бы рекомендовал снова включить его - это полезная функция безопасности.

0

Попробуйте использовать su .

В Linux / Unix вы должны сначала установить пароль для пользователя root, например:

sudo passwd root

Тогда у вас должно быть достаточно разрешения для этого.

Также проверьте, все ли разделы размонтированы.

Введите mount и проверьте, какие разделы смонтированы.

Затем:

sudo umount /dev/disk1sX

Вместо disk1sX напишите правильный раздел.

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