不允許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 等)、擾亂系統進程、載入未正確簽署的 kext 等。但為了加強對系統資料夾的保護,它也阻止對系統磁碟區所在的裝置進行原始寫入。是的,即使您是 root(這就是重點 - 這是為了限制獲得 root 存取權限的惡意軟體造成的損害)。

思考此限制不適用於恢復模式。電腦啟動時按住 Command-R,它將從隱藏的緊急分區啟動。打開終端機(位於“實用程式”選單下),然後dd從那裡嘗試。dd恢復系統上可能不存在(它非常小),但您可以使用/Volumes/Macintosh\ HD/bin/dd它。你不需要sudo,你已經是root了。

如果這不起作用,請嘗試使用 停用 SIP csrutil disable,然後正常重新啟動(請參閱Apple 關於配置 SIP 的文檔)。然後,當您完成後,我建議重新啟用它——這是一個有用的安全功能。

答案2

就我而言,我必須更改“系統偏好設定 > 安全性和隱私 > 全磁碟存取 > 終端”或 iTerm2。

在我授予對終端機或 iTerm2 的完全磁碟存取dd權限後,無需更改 SIP/root 或+ r...我也嘗試過;-)

答案3

嘗試使用su.

在 linux/unix 上,您必須先為 root 使用者設定密碼,例如:

sudo passwd root

那麼您應該有足夠的權限來執行此操作。

也要檢查是否所有分割區都已卸載。

輸入mount並檢查安裝了哪些分割區。

然後:

sudo umount /dev/disk1sX

而不是disk1sX寫入正確的分區。

相關內容