adb shell su는 작동하지만 adb root는 작동하지 않습니다.


93

잠금 해제 된 Galaxy S3 (SGH-T999)를 루팅했습니다.

이제 adb rootWindows Command Prompt 에서 실행하려고하는데 adbd cannot run as root in production builds오류 가 발생합니다. 그래서, 내가 가장 먼저 확인한 것은 내 전화가 정말 루팅되었는지 여부였습니다.

그래서 다음을 시도했습니다.

명령 프롬프트 열기

$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**

내가 할 때, adb root내가 얻을 adbd cannot run as root in production builds오류입니다. 그래서 위에서했던 것 외에 몇 가지 추가 작업을해야 할 수도 있다고 생각했습니다. 다음 질문에 대한 모든 솔루션을 시도했습니다.

위의 어느 것도 나를 위해 일하지 않았습니다. 그들이하는 일은 SHELL 내부의 ROOT 액세스 권한을 부여하는 것뿐입니다. adb root셸에 들어 가지 않고도 다양한 adb 명령을 실행할 수 있도록 작업 하고 싶습니다 .


5
안드로이드 4.3 이상에서는 작동하지 않습니다. su가 없습니다.
drdrej

답변:


35

설계에 의해 adb root개발 명령이 작동 빌드 만 (즉, eng그리고 userdebug이는이 ro.debuggable=1기본적으로). 따라서 루팅 된 장치 에서 adb root명령 을 활성화 하려면 다음 파일 중 하나에 해당 줄을 추가하십시오 .ro.debuggable=1

/system/build.prop
/system/default.prop
/data/local.prop

기본적 adb shell으로 시작 하려면 root추가하십시오 ro.secure=0.

또는 수정 된 adbd바이너리를 사용할 수 있습니다 (을 확인하지 않음 ro.debuggable).

에서 https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp

#if defined(ALLOW_ADBD_ROOT)
// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
//   Allowed to become root, but not necessarily the default. Set to 1 on
//   eng and userdebug builds.
//
// ro.secure:
//   Drop privileges by default. Set to 1 on userdebug and user builds.

9
위의 컴파일 된 실행 파일은 어디서 얻을 수 있습니까?
Waqas Bukhary

3
ro.debuggable 및 ro.secure에 대한 새 값을 지정한 파일에 추가했지만 재부팅 할 때마다 덮어 쓰여지고 변경 사항이 적용되지 않습니다.
Patryk Czachurski

31

일부 개발자 친화적 인 ROM 에서는 설정> 개발자 옵션> 루트 액세스 에서 루트 액세스 를 활성화 할 수 있습니다 . 그 후 adb root사용할 수 있습니다. 불행히도 시중에 나와있는 대부분의 재고 ROM에서는 작동하지 않습니다.


64
개발 옵션에 "루트 액세스"옵션이 표시되지 않습니다.
Amalgovinus

2
@Amalgovinus 나는 당신이 사용하는 방에 달려 있다고 생각합니다. :)
NgaNguyenDuy

@NgaNguyenDuy 사용중인 ROM을 식별 할 수 있습니까?
Lobster Fighter 19 년

22

에뮬레이터를 루팅하려고 할 때이 문제가 발생했는데 Google Play가있는 Nexus 5x 에뮬레이터를 실행했기 때문이라는 것을 알았습니다. Google Play가없는 다른 에뮬레이터를 만들었 adb root으며 기기를 루팅 합니다. 이것이 누군가를 돕기를 바랍니다.


두 에뮬레이터를 어떻게 구별 할 수 있습니까?
Sanjay

@Sanjay Android Virtual Device Manager를 열면 Play 스토어 탭이 표시되고 루팅하려는 기기에 Play 스토어 아이콘이 없는지 확인해야합니다.
Andrew Steinmetz

1
2020 년, 이것은 도움이되었지만 루팅 된 전화없이 플레이 스토어가 활성화 된 장치에서 할 수있는 방법이 필요하지만 가능한지 확실하지 않습니다
trigster

8

abd 셸에서 su 모드로 들어가기 위해 사용합니다.

adb 쉘 "su"


2
Mac OS에서 "/ system / bin / sh : su : not found"오류가 발생합니다. 어떤 제안을 부탁드립니다.
Sachin G

@SachinG 아마도 잘못된 유형의 따옴표를 사용 하셨나요? 실행 해보세요adb shell "su -c whoami"
gkpln3

@ gkpln3 여전히 같은 오류가 발생합니다. / system / bin / sh : su : 찾을 수 없음
Sachin G

저도 같은 오류가

8

나는 뿌리 삼성 갤럭시 트렌드 플러스 (GT-S7580)를 가지고 있습니다.

'adb root'를 실행하면 동일한 'adbd가 프로덕션 빌드에서 루트로 실행할 수 없음'오류가 발생합니다.

개발자 옵션-> 루트 액세스 권한이있는 기기의 경우 'ADB 전용'을 선택하여 기기에 대한 adb 루트 액세스 권한을 제공합니다 ( NgaNguyenDuy에서 제안 ).

그런 다음 ADB를 통해 루트로 스크립트 시작 에서 솔루션에 따라 명령을 실행 해보십시오 . 제 경우에는 'netcfg rndis0 dhcp'명령을 실행하고 싶었고 이렇게했습니다.

adb shell "su -c netcfg rndis0 dhcp"

이런 식으로 실행하는 동안 실수가 있는지 확인하십시오.

그래도 작동하지 않으면 장치를 올바르게 루팅했는지 확인하십시오. 여전히 운이 없으면 'adb root'가 작동하도록 Cyanogen Mod 와 같은 사용자 정의 ROM을 설치해보십시오 .


7

boot.img / sbin / 폴더의 adbd 바이너리를 su 가능한 바이너리로 바꿔야합니다. 또한 default.prop 편집도해야합니다.

삼성은 다른 벤더보다 이것을 더 어렵게 만드는 것 같습니다. 시도해 볼 수있는 adbd 바이너리가 있지만 새 바이너리로 boot.img를 디 컴파일하고 다시 컴파일하는 지식이 필요합니다. 또한 잠긴 부트 로더가 있다면 ... 이런 일은 일어나지 않을 것입니다.

또한 Chainfire에는 Play 스토어에서 adbd 루트 권한을 부여하는 앱이 있습니다. https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en

마지막으로, SU 권한이있는 Windows 스크립트를 작성하려는 경우 다음 명령 스타일을 사용하여이 구매를 수행 할 수 있습니다. 그러나 최소한 실행 된 처음에 SU 권한을 부여해야합니다. .

adb shell "su -c ls"<-su 권한이있는 작업 디렉토리 나열. adb 쉘 "su -c echo anytext> /data/test.file"

이것들은 단지 몇 가지 예입니다. 달성하고자하는 일을 구체적으로 말씀하시면보다 구체적인 조언을 드릴 수 있습니다.

-스코 슬러


5

adbd루트 액세스를 활성화하는 컴파일 플래그 / 옵션이 있습니다 : ALLOW_ADBD_ROOT=1.

Android 9까지 : adbd기기에서 해당 플래그없이 컴파일 된 경우 시작할 때 항상 권한이 삭제되므로 "adb root"는 전혀 도움이되지 않습니다. 내가 패치했습니다 에 대한 호출을 setuid(), setgid(), setgroups()그리고 기능은 내 전자 책 리더에 영구적으로 뿌리 adbd를 얻을 수있는 바이너리의 자신을 밖으로 떨어진다.

Android 10에서는 이것이 변경되었습니다. 휴대 전화 / 태블릿이 잠금 해제 ro.boot.verifiedbootstate == "orange"되면 ( ) 어떤 경우에도 adb 루트 모드가 가능합니다.


1

당신이 정말로 한해야하는 경우 ADB등의 실행 root, 가장 빠르고 쉬운 방법은 안드로이드 사용자 정의 ROM과 가장 인기가 설치하는 것입니다 CyanogenMod그것은이에 대한 Root Access당신이 루트 액세스 권한을 부여하도록 선택할 수 있습니다 개발자 옵션 메뉴에서 옵션을 apps and ADB. 이전에 CM을 사용했지만 더 이상 개발되지 않았기 때문에 몇 가지 솔루션을 찾아 보았습니다. CyanogenMod는 블로 트웨어가 없기 때문에 여전히 좋은 대안입니다.

친구에게서 찾은 대안 중 하나는 https://forum.xda-developers.com/showthread.php?t=1687590adbd insecure 에서 시도 할 수있는 앱을 사용 하는 것 입니다. 제 경우에는 Android 사용자 정의 커널에서는 제대로 작동하지만 Android 스톡 ROM에서는 작동하지 않습니다 (바닐라 Android 전용). Android ROM 수정과 같은 다른 대안도 시도해 볼 수 있습니다 .boot.img

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.