Операция dd не разрешена, как выйти из песочницы?

Операция dd не разрешена, как выйти из песочницы?

Я пытаюсь восстановить плохой сектор на моем диске, и при этом мне нужно записать поверх плохого сектора. Многочисленные источники в Интернете предлагают использовать 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

решение1

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

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

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

решение2

В моем случае мне пришлось изменить «Системные настройки > Безопасность и конфиденциальность > Полный доступ к диску > Терминал» или iTerm2.

После того, как я предоставил полный доступ к диску терминалу или ddоперации iTerm2 были разрешены без изменения SIP/root или + r... Я тоже это попробовал ;-)

решение3

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

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

sudo passwd root

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

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

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

Затем:

sudo umount /dev/disk1sX

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

Связанный контент