[英]how to get access of android root directory (/system/app) programatically?
[英]How can I get root to work for system app in Android?
我需要將nfs共享從系統應用程序掛載到sdcard或mnt文件夾,但是mount
僅在授予root訪問權限的情況下起作用。 我怎樣才能做到這一點? (這不僅是一個程序,沒有root也不能運行。例如,我還需要root才能使用dd
刷新系統上的自定義恢復)
我下載了AOSP棉花糖源,並在/ system / xbin文件夾中添加了su及其所有必需的內容。 當我嘗試運行su
它向我顯示"Permission denied"
,但通過adb shell
根目錄可以正常工作(我可以在xbin文件夾中運行它)。 我需要添加什么權限才能以root用戶身份運行系統應用程序? 謝謝。
使用平台密鑰構建並簽名的系統和系統應用程序。 我正在測試的應用程序在Manifest.xml
具有sharedUid=android.uid.system
屬性
AOSP提供的su
有限制,以確保您是調用它的root或shell用戶。 此檢查位於https://android.googlesource.com/platform/system/extras/+/master/su/su.c#85
您始終可以將系統UID( AID_SYSTEM
)添加到此檢查; 但是,這會給具有系統UID的所有應用程序/進程授予一攬子根特權,從而帶來安全風險。 如果您接受這些風險並且想要一個簡單的解決方案,那么我只會在su.c
中將系統用戶添加到此行中。
我建議重新評估您的用例,並可能編寫一個本機守護程序/服務,以公開應用程序只能執行所需操作的功能。 然后,您可以使用更高級別的android權限以及本機守護程序本身的POSIX功能來實施這些操作。
唯一適用於我的解決方案是init
作為根進程啟動的服務器二進制文件。 我編寫了簡單的服務器二進制文件,可以從Java端通過LocalSocket
進行連接,並且可以向它發送一些命令。 為了在系統啟動時啟動服務器二進制文件,我在init.rc
腳本中添加了以下init.rc
行:
service suservice /system/bin/suservice
class core
user root
group root
socket suservice stream 0600 system system
在Java方面,我編寫了一個簡單的庫,該庫可通過回調接口工作,並從此服務接收數據,如果出現問題,則返回錯誤。
現在,只有以system:system
開頭的應用程序可以使用此本地套接字運行root命令。 用戶應用收到擴展Permission denied
。
PS現在根本不需要運行或保留su
二進制文件,因為服務器二進制文件已作為root運行。 我現在可以從系統中完全刪除su
二進制文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.