本篇文章更新時間:2026/02/22
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持 。
sandbox-exec 深度筆記:一個被忽略的 macOS 安全工具
編輯前言:這篇文章來自 sandbox-exec: macOS's Little-Known Command-Line Sandboxing Tool。作者花了不少篇幅說明 sandbox-exec 的原理、限制與實作示例,對任何想在 macOS 上建立高自訂性的安全環境的人都非常有啟發性。
核心觀點 (Key Takeaways)
- sandbox-exec 是 macOS 內建、但被低估的命令列沙箱工具,可以讓應用在受限環境中執行。
- 建立沙箱的核心是「sandbox profile」:以 Scheme/LISP 風格語法撰寫的規則檔。
- 兩種主要配置哲學:「拒絕為預設」最安全、「允許為預設」最易操作。
- sandbox-exec 的限制不少,例如 Apple 已不鼓勵使用,但靈活度依然極高。
深入解析
我覺得這篇文章最精彩的地方,是作者把 sandbox-exec 的運作方式拆解得既清楚又務實。sandbox-exec 本質上讓你把某個程式「鎖在一個你親手打造的房間裡」,它能不能讀檔、能不能連網,都取決於你怎麼寫 profile。
作者引用道:
"In essence, it creates a secure, isolated space where applications can run with limited access to system resources – only accessing what you explicitly permit."
這正是 sandbox-exec 與一般防毒、系統防護最大的差異──它不是靠偵測,而是靠「限制」。
-
沙箱 profile 的語法結構:文章說明 profile 是以
(version 1)開頭,接著用(allow ...)或(deny ...)來指定規則。例如: -
(deny default)先全部封鎖,再逐一開放 -
(literal "/path")、(regex ...)、(subpath ...)都可以精準描述權限範圍 -
兩個核心哲學:安全 vs 便利:
-
拒絕為預設:幾乎萬無一失,但配置起來很費工。
-
允許為預設:好上手,但必須小心遺漏風險。
-
實際應用示例非常實用:我自己最喜歡作者示範「無網路的 Zsh shell」,用 profile 封鎖 network*,這對測試不可信腳本真的很有用。
文章也點出一些日常會遇到的坑,例如當作者嘗試用 alias 沙箱化 Firefox 時,仍能照樣開網頁,這也說明 GUI app 的沙箱邏輯往往更複雜。
筆者心得與啟發
讀完這篇後,我重新認識了 macOS 在表面友善、安全模型之下,其實仍提供給高級使用者很深的可定制度。sandbox-exec 雖然被 Apple 歸類為「非主流」工具,但它的彈性與低階控制力,是 App Sandbox 與系統偏好設定完全無法比擬的。
對有以下需求的人,我會特別推薦善用 sandbox-exec:
- 在 MDM 或企業環境裡測試外部程式
- 想安全地跑未知腳本、Web 工具或 AI 生成程式碼
- 研究 macOS 低階安全機制
我個人會把 sandbox-exec 當作一種「動態最小權限工具」:當你不確定某個程式會做什麼,把它丟進沙箱內跑一遍,違規操作都會被 log 出來。這比手動查文件猜它會存取哪些路徑可靠得多。
文章最後提醒 sandbox-exec 未來可能隨著 macOS 的改版而被邊緣化,但只要它還在系統裡,它就是一個不可多得的安全利器。對我而言,它更像是一把瑞士刀:不一定每天用,但需要的時候能幫上關鍵的忙。
