題:
有沒有一種方法可以讓我以root用戶身份運行Adb Shell,而無需輸入“ su”?
Hank
2011-02-12 00:39:52 UTC
view on stackexchange narkive permalink

有沒有一種方法可以以root用戶身份運行Adb shell而無需鍵入 su ?我希望無需進入shell就能擁有root用戶訪問權限。

七 答案:
eldarerathis
2011-02-12 03:07:03 UTC
view on stackexchange narkive permalink

如果我正確理解了您的問題,那麼您正在問如何在運行 adb shell 時自動獲得root用戶訪問權限,這樣就不必進入shell並輸入 su 以在手機上以root用戶身份執行命令。

這由啟動分區中的標誌控制,大多數自定義ROM已對其進行了修改,默認情況下允許root權限。如果在使用 adb shell 時跌落到 $ ,則有兩個永久選項和一個臨時選項​​(臨時意味著重新啟動時不會粘住):

  1. 刷新包含修改的ROM
  2. 創建自定義boot.img並將其刷新到手機
  3. 重新啟動 adbd 在具有root權限的設備上使用code>
  4. ol>

    數字2其實並不那麼困難,但是如果不注意,它可能會有些危險。 這裡上有一篇Wiki文章,其中介紹了該過程,並包含了一些Perl腳本來幫助您。這些說明假定使用Linux / Unix環境。我已經在Fedora Linux上親自使用了這些說明,並且可以告訴您它們可以工作,但是我不知道其他* nix環境(如Mac)。我也不知道Windows有任何類似的說明,但是如果您使用Windows,則可以嘗試查找一些類似的信息。確切的命令因電話而異,因為不同的設備使用不同的分區表。

    不過,通常來講,您需要從手機中提取當前的boot.img,將其解壓縮,提取虛擬磁盤,然後找到 default.prop 文件。這是一個純文本文件,您需要在文本編輯器中打開它,然後找到包含值 ro.secure 的行。如果該行顯示 ro.secure = 1 ,那麼您需要將其更改為 ro.secure = 0 。之後,您可以重新打包ramdisk和boot.img,然後將其刷新到手機中。重新啟動後,每次執行 adb shell 時都將收到提示,而不必運行 su

    或者,如果使用的是自定義ROM,但沒有進行此修改,則可以使用上述步驟解壓縮ROM並修改其中包含的boot.img。然後,您可以使用新修改的boot.img壓縮ROM,並像往常一樣刷新zip文件。

    這也許不用多說,但是要小心 。弄亂引導分區很容易使您的手機損壞,並迫使您通過HBoot恢復。我強烈建議測試Fastboot,以確保您可以使用擴展的Fastboot命令並執行恢復。這根據您的型號而有所不同,但是大多數手機都有一些可以運行的台式機軟件來刷新手機。


    第三種選擇是,在很多情況下,它可能會可以使用root特權在設備上重新啟動 adbd 。一種可能性是從PC終端執行 adb root ,儘管這不適用於所有ROM配置(必須將ROM構建為“用戶調試”)。您也可以嘗試 Chainfire的adbd不安全應用程序。這不會在重新啟動後持續存在,因此,每次重新啟動手機時,都需要再次使用應用程序或 adb root

手機還會以root權限啟動嗎?可能是安全問題。
@Matthew: AFAIK,默認情況下僅允許“ adbd”在手機上具有root權限。 [有篇文章](http://groups.google.com/group/android-platform/browse_thread/thread/a8d9f57ecb631689)來自Android小組的成員,但有暗示,但沒有明確指出。對AOSP的[commit](http://www.gitorious.org/0xdroid/system_core/commit/e037fd7e193ecccbb5c0888e49f6d58c224bc11d)也暗示著它只是一個標誌,表示“ adbd”會在啟動時進行檢查(我在其他地方沒有看到它)來源)。如前所述,我見過的大多數自定義ROM(包括CM)都將其設置為0。
我會說,儘管我不是100%。我找不到任何與default.prop文件相關的官方文檔,儘管今晚我的Google-fu顯得很虛弱...
剛發現“ adb root”命令以自動su模式重新啟動adbd,顯然它依賴於此。我確實認為您認為它只是一個標誌是正確的。
@MatthewRead:我鏈接到的提交中的源代碼實際上對此有一個註釋:)`// ...,除非如果service.adb.root屬性由“ adb root”設置,我們允許在userdebug構建中以root身份運行順便說一下,這就是Kindle Fire的BurritoRoot的第一個版本IIRC的工作方式。
使用default.prop編輯時,需要在sepolicy中允許什麼,以便adb root可以在允許root shell的情況下工作
@eldarerathis,您為列出的第二個選項發布的鏈接看起來很破損。但是,我發現了一個具有相同標題的XDA線程,我想它與您鏈接的文章是同一篇文章,所以我正在編輯您的答案以更新該鏈接。
Ajster1989
2014-03-14 22:48:14 UTC
view on stackexchange narkive permalink

如果您的手機已經紮根,則可以使用“ su -c”命令運行命令。

以下是build.prop文件中的cat命令示例,用於獲取手機產品信息。

  adb shell“ su -c'cat /system/build.prop | grep” product“'”  

這將調用root權限並運行命令在''

內註意5個結束引號,這要求您關閉所有結束引號,否則會出現錯誤。

為澄清起見,格式如下。 / p>

  adb shell“ su -c'[您的命令在此處]'”  

請確保以與正常運行時完全相同的方式輸入命令

嘗試一下,希望對您有所幫助。

例如,您可以使用`adb shell -t“ su -c'sh'”`以root身份運行shell。需要`-t`來獲得提示。
Bryan Denny
2011-02-12 01:01:11 UTC
view on stackexchange narkive permalink

您要以root身份運行的目的是什麼?您是說要使用root用戶運行ADB Shell,但又不想使用ADB Shell?您能澄清一下嗎?

如果該應用程序請求root用戶訪問權限,那麼您手機上的SuperUser應用程序應處理是否授予其權限。手機植根的過程應該包含一個SuperUser應用程序。

我想從我的終端運行adb shell gdbserver,而不是進入shell運行它
終端幾乎總是需要將@Hank:終端連接到外殼才能進行任何有用的工作;也許您應該澄清“ terminal”和“ shell”的定義,因為您似乎對它們的定義與標準Linux / Android說法有所不同
因此,您可以先執行“ adb shell ps”或“ adb shell”,然後執行“ ps”來獲取正在運行的進程列表。所以有些東西需要root訪問,我希望能夠做到前者。
之所以“為什麼”(尤其是在涉及gdbserver的地方)是為了能夠在開發計算機上運行的腳本中使用該功能。但是,腳本可能會將命令通過管道傳遞給adb認為是交互式shell的內容,因此出於這個原因,實際上沒有必要將adb默認設置為root。
Matthew Read
2012-01-25 04:22:23 UTC
view on stackexchange narkive permalink

作為替代方案,您可以在電話上編寫腳本,然後簡單地讓adb執行該腳本,例如:

  adb shell sh /sdcard/myscript.sh

腳本可以在沒有您干預的情況下提升自身(假設SuperUser設置為記住批准),例如:

  supm setInstallLocation 1  

我只是在手機上成功完成了此任務,唯一的問題是我還沒有弄清楚如何徹底結束adb shell會話。我必須在Windows Shell中使用Ctrl-C返回Windows命令提示符-否則adb只會位於提示符下,並且不接受輸入。

mauro kit barcelona
2014-10-29 00:41:28 UTC
view on stackexchange narkive permalink

我用於修復主頁按鈕失敗


adb設備

adb shell su -c 命令

adb根外殼sqlite3 /data/data/com.android.providers.settings/databases/settings.db“插入安全(名稱,值)值('device_provisioned','1'); “

adb kill-server

looneybits
2012-11-27 16:00:35 UTC
view on stackexchange narkive permalink

您也可以在'sh'上設置suid位。我使用的是BusyBox,因此說明可能與您的設置不符:

  1. adb shell
  2. su
  3. 掛載-o重新掛載,rw / system(或:adb重新掛載)
  4. ls -la / system / bin / shlrwxr-xr-x根外殼2012-11-10 15:20 sh-> mksh
  5. chmod 4755 / system / bin / sh
  6. ls -la / system / bin / mksh
    -rwsr-xr-x根外殼157520 2012-11 -10 09:54 mksh(注意suid位置已設置)
  7. ^ D
  8. adb shell
  9. ol>

    ,您應該具有root提示符

從我-1。這是不安全的,並且會開一個大漏洞。任何APP都可能成為根源並造成嚴重破壞。
絕對不要這樣做,這是一個“災難性的安全漏洞”。 (免責聲明:我是[`mksh`](https://www.mirbsd.org/mksh.htm)的維護者。)


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...