【前言】為什么有這個需求?
Q:首先,談談為啥想要root呢?
A:有root才能有控制權,也才能折騰很多東西,比如:刪刪流氓軟件,用用代理、軟件自動安裝等;
Q:然后,那么為何又需要刪除root呢?
A:有時候有些工具在已經root的機器上是不能執行的啦, 但是這些功能對我們也有很大的吸引力,比如:手機打卡呀 等等牛逼的功能;如果你也想要使用這些功能,同時又想要偶爾root一下的話, 那么恭喜你,可以通過如下的方式來搞定;
一 准備篇
1.1 要已有root權限
至於如何獲取root,這是最基本的了,百度一下很多工具都有一鍵root的功能;此處略過一萬字;
1.2 用到的終端工具
推薦使用Better Terminal Emulator Pro,免費又好用;
參考地址如下(百度手機助手搜索一下就行了):
1.3 必備的知識
1.3.1 關於mount
默認啟動后的系統分區都是只讀的,所以就算你的手機已經root了,通過終端操作的時候,看到的也是只讀的,不能修改,那么就需要重新掛載一次,主要是要掛載成可讀寫,核心腳本如下:
mount -o remount,rw /emmc@android /system
1.3.2 關於可執行權限
簡單來說在linux角度一個程序的各種權限是通過權限位來設置的,核心思想是:讀權限值為4、寫權限值為2、執行權限值為1,需要什么樣的權限,那么就設置合適的權限值就行了,比如你要可讀可寫可執行,那么就是4+2+1=7;
權限分組,linux一個文件權限分了3個部分,分別是: 擁有者的權限 擁有小組的權限 其他人的權限, 三個部分依次用3個8進制的數組和起來,所以一般權限位設置的時候看起來像 777、755 這樣子的,就是所有人可讀可寫可執行 和 擁有者可讀可寫可執行、擁有該文件的小組的所有人可讀可執行、其他人可讀可執行;
此處額外設置一下suid和guid,故整個權限位變成了 6755, 前面的6讓普通用戶執行su的時候感覺是root在執行一樣;
chmod 6755 /system/xbin/su
詳細的可以參考: http://blog.chinaunix.net/uid-26642180-id-3378119.html
也可以搜索一下: suid guid 關鍵字
二 行動篇
2.1 查看分區情況
打開超級終端,輸入mount命令,查看當前是哪個分區掛載到了 /system這個目錄,我的系統是掛載了 /emmc@android 到 /system下,參考下圖:
如需使用,請輸入mount查看您的磁盤分區路徑;
2.2 查看需找su路徑
一般su所在路徑是:
/system/xbin/su /system/bin/su
后續假設都在通用的 /system/xbin/su 路徑下;
2.3 准備寫腳本
2.3.1 備份原來的su程序broot.sh
#!/system/bin/sh /system/xbin/su -c "mount -o remount,rw /emmc@android /system" /system/xbin/su -c "cp /system/xbin/su /system/su" /system/xbin/su -c "mount -o remount,ro /emmc@android /system"
這個腳本一般執行一次就可以了,也可以通過Root Explorer來實現備份!
2.3.2 獲取root的程序groot.sh
#!/system/bin/sh /system/su -c "mount -o remount,rw /emmc@android /system" /system/su -c "cp /system/su /system/xbin/su" /system/su -c "chmod 6755 /system/xbin/su" /system/su -c "mount -o remount,ro /emmc@android /system"
實現原理是,利用上面備份好的su,來執行以下幾步:
- 重新掛載system分區為可讀可寫;
- 拷貝備份的su到xbin目錄下
- 設置合適的權限;
- 重新掛載分區為只讀模式;
2.3.3 刪除root的程序droot.sh
特別注意,必須先參考2.3.1的腳本備份su到/system/su目錄下,然后才能執行這個程序,不然沒了root后果自負哦;
#!/system/bin/sh /system/su -c "mount -o remount,rw /emmc@android /system" /system/su -c "mv /system/xbin/su /system/xbin/su.bak" /system/su -c "mount -o remount,ro /emmc@android /system"
實現原理是,利用上面備份好的su,來執行以下幾步:
- 重新掛載system分區為可讀可寫;
- 將xbin下的su重命名為su.bak;
- 重新掛載分區為只讀模式;
三 坐享其成
3.1 下載工具
基本腳本都寫好了,到這里來下載吧 :)
http://yunpan.cn/cfwmQui82UXZt (提取碼:c7a3)
3.2 執行實例
執行步驟詳解如下:
sh broot.sh # 備份su ls -al /system/su # 檢查備份結果 sh droot.sh # 刪除su,移除root權限,特別要小心!!!保證前面備份成功啊!!! su # 檢查是否成功移除,出現not found表示移除成功了; su groot.sh # 恢復su,恢復了root權限,恭喜 :) su # 檢查是否恢復成功,執行不報錯,前面提示符編程 '#'表示成功; exit # 退出root模式
有圖有真相!!!
【測試機型】 紅米Note聯通版, HM NOTE 1W;
歡迎大家交流 :)