'su'를 입력하지 않고 루트로 Adb 쉘을 실행하는 방법이 있습니까?


45

입력하지 않고 루트로 Adb 쉘을 실행하는 방법이 su있습니까? 쉘에 들어 가지 않고 루트 액세스 권한을 갖고 싶습니다.

답변:


40

귀하의 질문을 올바르게 이해하고 있다면을 실행할 때 자동으로 루트 액세스 권한을 얻는 방법을 묻기 adb shell때문에 su전화로 루트로 명령을 실행하기 위해 쉘에 들어가서 입력 할 필요가 없습니다 .

이것은 부팅 파티션의 플래그에 의해 제어되며 대부분의 사용자 정의 ROM은 기본적으로 루트 권한을 허용하도록 수정되었습니다. $사용할 때에 빠지면 adb shell두 가지 영구 옵션과 하나의 임시 옵션이 있습니다 (임시 재부팅하면 고정되지 않음).

  1. 수정 사항이 포함 된 ROM을 플래시
  2. 사용자 정의 boot.img를 만들어 휴대폰에 플래시
  3. adbd루트 권한으로 장치에서 다시 시작

숫자 2는 실제로 그렇게 어렵지는 않지만 부주의하면 다소 위험 할 수 있습니다. 여기 에 프로세스를 설명하고 도움이되는 몇 가지 Perl 스크립트가 포함 된 위키 기사가 있습니다. 이 지시 사항은 Linux / Unix 환경을 가정합니다. 필자는 Fedora Linux에서이 지침을 개인적으로 사용했으며 작동한다고 말할 수 있지만 Mac과 같은 다른 * nix 환경에 대해서는 잘 모릅니다. 또한 비슷한 Windows 지침을 모르지만 Windows를 사용하는 경우 일부를 추적하려고 할 수 있습니다. 장치마다 다른 파티션 테이블을 사용하므로 정확한 명령은 전화마다 약간 씩 다릅니다.

그러나 일반적으로 전화에서 현재 boot.img를 꺼내서 압축을 풀고 램 디스크를 추출한 후 default.prop 파일을 찾아야 합니다. 이 파일은 일반 텍스트 파일로, 텍스트 편집기에서 열고 value가 포함 된 행을 찾아야합니다 ro.secure. 줄이 표시되면 ro.secure=1로 변경해야합니다 ro.secure=0. 그런 다음 램 디스크를 다시 포장하고 boot.img를 휴대 전화에 플래시 할 수 있습니다. 재부팅 #하면 실행 adb shell하지 않고 수행 할 때마다 프롬프트 가 표시됩니다 su.

또는 사용자 정의 ROM을 사용하고 있지만이 수정이없는 경우 ROM의 압축을 풀고 위 단계를 사용하여 ROM에 포함 된 boot.img를 수정하면됩니다. 그런 다음 새로 수정 된 boot.img로 ROM을 압축하고 평소와 같이 zip 파일을 플래시 할 수 있습니다.

이것은 말할 것도없이 진행될 수 있지만 이 작업을 수행 할 때는 주의 하십시오. 부팅 파티션을 어지럽히면 전화가 쉽게 망가져 HBoot를 통해 복구 할 수 있습니다. 확장 Fastboot 명령을 사용하고 복구를 수행 할 수 있도록 Fastboot를 테스트하는 것이 좋습니다. 모델에 따라 약간 씩 다르지만 대부분의 휴대 전화에는 휴대 전화를 다시 플래시하기 위해 실행할 수있는 일종의 데스크톱 소프트웨어가 있습니다.


세 번째 옵션은 많은 경우 adbd루트 권한으로 장치 에서 다시 시작할 수 있다는 것 입니다. adb root모든 ROM 구성에서 작동하지는 않지만 PC 터미널에서 실행할 수도 있습니다 (ROM은 "userdebug"로 빌드해야합니다). Chainfire의 adbd 안전하지 않은 앱을 사용해 볼 수도 있습니다 . 재부팅 후에도 지속되지 않으므로 adb root휴대 전화를 다시 시작할 때마다 앱을 사용하거나 다시 사용해야합니다 .


전화기도 루트 권한으로 부팅됩니까? 보안 문제 일 수 있습니다.
Matthew 읽기

1
@Matthew : AFAIK, adbd기본적으로 전화에 대한 루트 권한 만 허용 합니다. Android 팀 멤버의 게시물이 있는데 이를 암시하지만 명시 적으로 말하지는 않습니다. AOSP에 대한 이 커밋 은 단순히 adbd시작 을 확인 하는 플래그 일뿐입니다 (소스의 다른 곳에서는 볼 수 없음). 내가 언급 한 바와 같이, 내가 본 것을 커스텀 롬의 대부분이 (CM 포함)가 0으로 설정 한
eldarerathis

나는 위의 100 %가 아니라고 말할 것입니다. default.prop 파일과 관련된 공식 문서를 찾을 수 없습니다. 아마도 내 Google-fu는 오늘 밤 약할 것입니다 ...
eldarerathis

방금 adb rootauto-su 모드에서 adbd를 다시 시작하라는 명령을 발견 했습니다. 그래도 당신이 그 깃발에 불과하다고 생각합니다.
Matthew 읽기

1
@ MatthewRead : 커밋의 소스 코드는 실제로 그 효과에 대한 주석을 가지고 있습니다 :) // ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command". 덧붙여서, 그것은 Kindle Fire를위한 BurritoRoot의 첫 번째 버전 인 IIRC가 작동 한 방식입니다.
eldarerathis 2012 년

15

전화가 루팅 된 경우 "su -c"명령으로 명령을 실행할 수 있습니다.

다음은 전화기 제품 정보를 얻기위한 build.prop 파일의 cat 명령 예입니다.

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

루트 권한을 호출하고 ''내부에서 명령을 실행합니다.

5 개의 따옴표를 확인하십시오. 모든 따옴표를 닫으십시오. 그렇지 않으면 오류가 발생합니다.

설명을 위해 형식은 다음과 같습니다.

adb shell "su -c '[your command goes here]'"

쉘에서 정상적으로 실행할 때와 같은 방식으로 명령을 정확하게 입력해야합니다.

시도해보십시오. 도움이되기를 바랍니다.



1

무엇을 루트로 실행하려고합니까? 루트로 ADB 쉘을 실행하고 싶지만 ADB 쉘을 사용하고 싶지 않다고 말하고 있습니까? 당신은 명확히 할 수 있습니까?

응용 프로그램이 루트 액세스를 요청하면 전화기의 수퍼 유저 응용 프로그램에서 권한 부여를 처리해야합니다. 전화를 근절하는 과정에는 수퍼 유저 응용 프로그램이 포함되어 있어야합니다.


쉘로 들어 가지 않고 터미널에서 adb shell gdbserver를 실행하고 싶습니다
Hank

2
@Hank : 유용한 작업을 수행하려면 터미널을 거의 항상 셸에 연결해야합니다. 아마도 "터미널"과 "쉘"에 대한 정의를 명확히해야합니다. 표준 Linux / Android 용어와는 다른 아이디어를 가지고있는 것 같습니다
Lie Ryan

adb shell ps또는 수행 adb shell한 다음 ps실행중인 프로세스 목록을 가져올 수 있습니다. 그래서 뭔가 루트 액세스가 필요합니다, 나는 전자를 할 수 있기를 원합니다.
행크

1
"왜"(특히 gdbserver와 관련된) 이유는 개발 시스템에서 실행되는 스크립트에서 기능을 사용할 수 있기 때문입니다. 그러나 스크립트가 adb가 대화 형 쉘로 생각하는 것에 명령을 파이프하는 것이 가능하므로 adb 기본값을 루트로 설정하는 것이 실제로 그런 이유는 아닙니다.
Chris Stratton

1

대안으로, 전화로 스크립트를 작성하고 adb가이를 실행하도록 할 수 있습니다. 예를 들면 다음과 같습니다.

adb shell sh /sdcard/myscript.sh

스크립트는 다음과 같이 사용자의 개입없이 (수퍼 유저가 승인을 기억한다고 가정 할 때) 스스로 상승 할 수 있습니다.

su
pm setInstallLocation 1

방금 전화 로이 작업을 성공적으로 수행했지만 adb 셸 세션을 깨끗하게 종료하는 방법을 알지 못했다는 것이 유일한 문제입니다. Windows 명령 프롬프트로 돌아가려면 Windows 셸에서 Ctrl-C를 사용해야합니다. 그렇지 않으면 adb는 #프롬프트에 앉아 입력을 받아들이지 않습니다.


0

수리 홈 버튼 문제 실패에 사용


adb 장치

adb 쉘 su -c commands

또는

adb root shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "보안 (이름, 값) 삽입 값 ( 'device_provisioned', '1');"

adb kill-server


-1

'sh'에서 suid 비트를 설정할 수도 있습니다. BusyBox를 사용하고 있으므로 지침이 설정과 일치하지 않을 수 있습니다.

  1. adb 쉘
  2. mount -o remount, rw / system (또는 adb remount)
  3. ls -la / system / bin / sh lrwxr-xr-x 루트 셸 2012-11-10 15:20 sh-> mksh
  4. chmod 4755 / system / bin / sh
  5. ls -la / system / bin / mksh
    -rwsr-xr-x 루트 쉘
  6. ^ D
  7. adb 쉘

그리고 당신은 루트 프롬프트가 있어야합니다


3
나에게서 -1. 이것은 안전하지 않으며 큰 구멍을 열어줍니다. 모든 APP는 루트가되어 혼란을 일으킬 수 있습니다.
ce4

6
절대로 그렇게하지 마십시오. 이것은 치명적인 보안 구멍 입니다. (면책 조항 : 나는 mksh관리자입니다.)
mirabilos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.