驗收單 · 2026-10-22 · 约 10 分钟
shizukurunner 權限隱私審視:shell 能碰哪些目錄、什麼不能碰
| 軟體 | shizukurunner | 分類 | 系统工具 |
|---|---|---|---|
| 版本 | 17 | 體積 | 0.08M |
| 開發方 | 暂无资料 | 狀態 | 已歸檔 |

shizukurunner 是什麼、能幹嘛、適合誰
shizukurunner 是一款跑在 Android 手機上的 shell 命令執行器。它不 root,不靠 Magisk,而是通過 Shizuku 服務拿到系統 shell 權限,讓你在不想 root 的前提下也能執行 adb 級別的系統操作——批量備份 APK、清理應用快取、修改 DPI、調整動畫速度、開啟原生墓碑後台機制,這些原本需要連電腦打 adb 才能做的事,現在在手機上一個 App 就能跑。
它的定位很明確:給那些想 玩機 但不想碰 root 風險的用戶。root 當然權限更大,但要解鎖 Bootloader、會觸發 Knox 熔斷、銀行 App 和支付功能可能報警。shizukurunner 走的是另一條路——Wireless Debugging 配對一次,之後 Shizuku Binder 通道就一直開著,Runner 透過這條通道 fork shell 子進程執行命令,權限級別相當於 adb shell,比 root 弱但比普通 App 強一大截。
安裝
要了 shizukurunner下載 就能裝,shizukurunner 是 Android APK,安裝包只有 0.08M,體積非常小。但它不是裝完就能用的 App——核心依賴 Shizuku 服務,安裝前後需要幾個前置步驟。
首先,手機要開發者模式並啟用「無線除錯」(Wireless Debugging)。這是 Android 11 之後自帶的功能,進入設置 → 關於手機 → 連點版本號七次解鎖開發者選項,然後在開發者選項裡找到無線除錯打開。接著配對:點「使用配對碼配對裝置」,手機上會顯示 IP+配對碼,在電腦上用 adb pair 輸入,配對完成後再用 adb connect 連上。
然後安裝 Shizuku 本體和 shizukurunner 兩個 APK,都裝在手機上。首次打開 Shizuku,點「啟動」,它會透過無線除錯通道請求 shell 權限,彈框確認後 Shizuku 服務就一直掛在後台運行了。最後打開 shizukurunner,進入設置 → 選擇 Shizuku 服務,確認已連接,這時候 Runner 才能正常執行命令。
常見的坑:Shizuku 服務沒啟動就開 Runner,會一直提示連接失敗;無線除錯配對碼有時效性,過期了要重配;某些 ROM(比如 MIUI、ColorOS)會在深層設置裡隱藏無線除錯選項,需要額外搜一下。詳細設置流程在 shizukurunner官網 有完整指南。

權限隱私審視
我習慣裝 App 前先做 權限隱私 檢查——不是怕什麼,是想知道「換來了什麼」。shizukurunner 這款比較特別,它的核心權限不是 AndroidManifest.xml 裡聲明的那堆 ACCESS_NETWORK_STATE 之類,而是 Shizuku Binder 通道——這才是真正給它 shell 權限的東西。下面一項項攤開。
要了什麼
從功能和設置描述能看清楚它的權限請求:
Shizuku Binder 通道:這是核心。Runner 通過 Shizuku 提供的 Binder 介面 fork shell 子進程,權限級別等同 adb shell。shell 權限比普通 App 的 dumpsys 權限大很多——能讀 /data/app/ 下的 APK、能寫 /sdcard/ 的任意子目錄、能調 pm 和 am 命令管理其他應用。
應用卸載權限:Android 系統裡卸載其他 App 需要 REQUEST_DELETE_PACKAGES 權限,Runner 會申請這個,配合 pm uninstall 命令批量卸載。
歷史記錄保存:Runner 自動把每次執行的命令內容、返回值、輸出截斷存進 App 內部存儲(/data/data/com.shizuku.uninstaller/ 下的資料庫或 JSON),清除 App 資料會一併清空。
命令輸出截斷:Runner 內部有個輸出限制(通常 1000 字元),超出的輸出會被截斷,這是它自身的安全閾值,不是系統權限。
換來了什麼
每項權限對應的功能收益,以及不給會缺什麼:
| 權限/通道 | 功能收益 | 不給會缺什麼 |
|---|---|---|
| Shizuku Binder(shell) | 執行 adb shell 級別的任意命令 | 整個 App 無法工作——Runner 沒有替代方案 |
| shell 權限下的目錄訪問 | 讀 /data/app/(提取 APK)、寫 /sdcard/ 子目錄、執行 pm/am/getprop 等 | 只能當個命令編輯器,跑不了系統級操作 |
| 應用卸載權限 | pm uninstall 批量卸載其他 App | 只能禁用用戶 App(pm disable-user),不能真卸載 |
| 歷史記錄自動保存 | 回顧曾跑過的命令、快速重執行、導出備份 | 重開 Runner 後命令全丟,每次手動輸入 |
特別說一下 shell 和 root 的邊界:Runner 預設以 shell 權限運行,能碰的目錄有邊界——/system/ 只讀、/data/data/<其他包>/ 部分可讀、不能改 SELinux 上下文、不能寫 /proc/ 和 /sys/。如果你的 Shizuku 服務是 root 權限啟動的,Runner 也能切到 root 模式,那時候就是「沒有邊界」——rm -rf /system/* 一行就能讓手機變磚。
收緊空間
哪些可以在設置裡關掉或降級:
shell vs root 權限選擇:Runner 設置裡有權限級別切換。如果你只是偶爾跑幾條清理快取、改 DPI 的命令,保持 shell 模式就夠了,把精力放在打磨自己的 工作流;root 模式下操作失誤的代價太高。
歷史記錄自動保存開關:Runner 預設開啟歷史記錄。如果你跑過讀取敏感檔案的命令(比如 cat 某個 App 的資料庫),建議跑完及時清除——進入歷史記錄 → 全選 → 刪除。部分版本支援關閉自動保存,找不到的話定期手動清也一樣。
命令輸出截斷閾值:1000 字元是硬限制,沒法改大。但可以自己在命令裡加 timeout 防止無限輸出卡住——這點不是權限設置,是命令寫法習慣。
預設槽位 vs 臨時執行:Runner 有預設命令槽位(你主動配置的常用命令)和臨時執行(歷史記錄裡自動積累的)。如果不想讓某些命令進歷史,跑完即刪即可。
邊界聲明
樣本文檔裡沒有提到以下幾點,我不推測、不下結論:
- 聯網行為:Runner 本身似乎不怎麼需要聯網——核心功能是本地 fork shell 子進程。但 Shizuku 服務啟動時走的是無線除錯通道(local WiFi,不是公網),沒有看到它會向外發送什麼資料。
- 帳號體系:Runner 不需要註冊登入,沒有雲端同步概念。所有狀態(歷史記錄、預設槽位)都存在 App 內部存儲裡,清除 App 資料即清空。
- 遠程控制:樣本沒提到任何遠端命令下發或同步機制。
結論
什麼人不用太在意:
- 已經在玩 root 的用戶——Runner 的 shell 權限對你來說已經是降級了
- 每天固定跑那幾條清理快取、改 DPI 命令的熟練用戶——知道自己在幹嘛,出問題能自救
什麼人建議先收緊再用:
- 剛接觸 Runner 的新手——建議先保持 shell 模式,不要急著開 root;先跑幾條安全命令(比如
getprop ro.product.model看設備型號)熟悉手感,再嘗試有破壞性的操作 - 對個人資料敏感的用戶——跑完敏感命令(讀取 App 資料庫、操作其他 App 的私有目錄)後及時清除歷史記錄;如果實在擔心,可以跑完把 Runner 卸載,用的時候再裝上
最後一句話收束:shizukurunner 的隱私風險不在它自己,而在你透過它跑的那些 shell 命令——命令本身才是真正的權限載體,Runner 只是個殼。
本文為個人基於網路公開資料整理編寫,非官方內容,僅供學習交流參考;軟體版權歸原作者所有,請支持正版;使用過程中遇到問題請查閱官方管道,本文不承擔任何責任。