답변:
귀하의 질문을 올바르게 이해하고 있다면을 실행할 때 자동으로 루트 액세스 권한을 얻는 방법을 묻기 adb shell
때문에 su
전화로 루트로 명령을 실행하기 위해 쉘에 들어가서 입력 할 필요가 없습니다 .
이것은 부팅 파티션의 플래그에 의해 제어되며 대부분의 사용자 정의 ROM은 기본적으로 루트 권한을 허용하도록 수정되었습니다. $
사용할 때에 빠지면 adb shell
두 가지 영구 옵션과 하나의 임시 옵션이 있습니다 (임시 재부팅하면 고정되지 않음).
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
휴대 전화를 다시 시작할 때마다 앱을 사용하거나 다시 사용해야합니다 .
adbd
기본적으로 전화에 대한 루트 권한 만 허용 합니다. Android 팀 멤버의 게시물이 있는데 이를 암시하지만 명시 적으로 말하지는 않습니다. AOSP에 대한 이 커밋 은 단순히 adbd
시작 을 확인 하는 플래그 일뿐입니다 (소스의 다른 곳에서는 볼 수 없음). 내가 언급 한 바와 같이, 내가 본 것을 커스텀 롬의 대부분이 (CM 포함)가 0으로 설정 한
adb root
auto-su 모드에서 adbd를 다시 시작하라는 명령을 발견 했습니다. 그래도 당신이 그 깃발에 불과하다고 생각합니다.
// ... 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가 작동 한 방식입니다.
전화가 루팅 된 경우 "su -c"명령으로 명령을 실행할 수 있습니다.
다음은 전화기 제품 정보를 얻기위한 build.prop 파일의 cat 명령 예입니다.
adb shell "su -c 'cat /system/build.prop |grep "product"'"
루트 권한을 호출하고 ''내부에서 명령을 실행합니다.
5 개의 따옴표를 확인하십시오. 모든 따옴표를 닫으십시오. 그렇지 않으면 오류가 발생합니다.
설명을 위해 형식은 다음과 같습니다.
adb shell "su -c '[your command goes here]'"
쉘에서 정상적으로 실행할 때와 같은 방식으로 명령을 정확하게 입력해야합니다.
시도해보십시오. 도움이되기를 바랍니다.
adbd Insecure를 설치 하십시오 .
무엇을 루트로 실행하려고합니까? 루트로 ADB 쉘을 실행하고 싶지만 ADB 쉘을 사용하고 싶지 않다고 말하고 있습니까? 당신은 명확히 할 수 있습니까?
응용 프로그램이 루트 액세스를 요청하면 전화기의 수퍼 유저 응용 프로그램에서 권한 부여를 처리해야합니다. 전화를 근절하는 과정에는 수퍼 유저 응용 프로그램이 포함되어 있어야합니다.
adb shell ps
또는 수행 adb shell
한 다음 ps
실행중인 프로세스 목록을 가져올 수 있습니다. 그래서 뭔가 루트 액세스가 필요합니다, 나는 전자를 할 수 있기를 원합니다.
대안으로, 전화로 스크립트를 작성하고 adb가이를 실행하도록 할 수 있습니다. 예를 들면 다음과 같습니다.
adb shell sh /sdcard/myscript.sh
스크립트는 다음과 같이 사용자의 개입없이 (수퍼 유저가 승인을 기억한다고 가정 할 때) 스스로 상승 할 수 있습니다.
su
pm setInstallLocation 1
방금 전화 로이 작업을 성공적으로 수행했지만 adb 셸 세션을 깨끗하게 종료하는 방법을 알지 못했다는 것이 유일한 문제입니다. Windows 명령 프롬프트로 돌아가려면 Windows 셸에서 Ctrl-C를 사용해야합니다. 그렇지 않으면 adb는 #
프롬프트에 앉아 입력을 받아들이지 않습니다.
수리 홈 버튼 문제 실패에 사용
adb 장치
adb 쉘 su -c commands
또는
adb root shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "보안 (이름, 값) 삽입 값 ( 'device_provisioned', '1');"
adb kill-server
'sh'에서 suid 비트를 설정할 수도 있습니다. BusyBox를 사용하고 있으므로 지침이 설정과 일치하지 않을 수 있습니다.
그리고 당신은 루트 프롬프트가 있어야합니다