머신이 루팅되지 않은 경우 "루트"로 실행할 수 없나요?

머신이 루팅되지 않은 경우 "루트"로 실행할 수 없나요?

root기본적으로 장치 사용자는 특정 개체(예: 디렉터리) 에 액세스할 수 없습니다 /data. 그러나 이러한 객체는 제한이 없지만 이러한 객체는 궁극적으로 이러한 객체에 액세스하기 위해 일부 프로세스가 실행되는 이유 때문에 root존재하는 것 같습니다 .

하지만 저는 UNIX와 Android에 대한 경험이 거의 없으며 다음과 같은 질문을 하고 싶습니다. 사용자가 root아직 "루팅"되지 않은 Android 장치에서 이 프로그램을 실행할 수 있습니까? 어떤 상황에서 프로세스가 root수준 작업을 시작할 수 있습니까? (예: OS 업데이트?) root모든 경우에 비밀번호가 필요합니까?

질문에 직접 답하려고 노력하는 동안 "UNIX" 및 "Android"에 관한 모든 내용은 많이 읽어야 할 것 같으며 특정 질문에 대한 답을 어디서 찾을 수 있는지 잘 모르겠습니다.

답변1

특정 프로그램 및 서비스는 Android의 /system에서 루트로 실행됩니다. 일부 루트 기술에는 /system을 이러한 "프로그램"에 다시 마운트하는 명령을 삽입하는 작업이 포함됩니다. /system이 rw 모드로 마운트되지 않으면 추가된 프로그램을 루트로 실행할 수 없습니다. /data에 관한 한 각 애플리케이션에는 고유한 사용자 ID가 부여되고 애플리케이션 데이터가 저장되는 /data/data 폴더에는 해당 사용자에게만 액세스가 허용되도록 권한이 부여됩니다(기본적으로 chmod 700 ). 물론 이를 생성하려면 루트 수준 프로세스가 필요하며, 이는 /system에서 실행됩니다.

답변2

더 정확하게는 파일이나 실행 파일이 이러한 권한을 가질 수 있으므로 일반 사용자/프로세스가 실행하거나 읽을 수 없기 때문에 첫 번째 가정이 반드시 정확하지는 않지만 권한 "objects"을 사용하여 여러 프로세스가 실행되고 있습니다 root.

Android는 단지 낮은 수준의 Linux 시스템일 뿐이라는 점을 이해하는 것이 중요하다고 생각합니다. 즉, 휴대전화에 표시되는 모든 것은 Ubuntu나 Fedora와 같은 Linux 시스템과 공통점이 많지 않습니다. 즉, root설치하기 위해 명령만 실행할 수는 없습니다. 하드웨어의 실제 Stock Android 이미지. 또한 Android는 다중 사용자 시스템이 아니기 때문에 비밀번호를 입력할 필요가 전혀 없습니다 root(제가 아는 한 Android는 루트 비밀번호를 설정하지 않습니다).

이미 휴대폰에 일반 사용자가 있으므로 시스템 자체를 악용/공격하여 루트 액세스 권한을 얻을 수 있습니다. 예를 들어 2.1과 같은 이전 Android 시스템에서는 이 작업이 성공적으로 수행되었습니다.

확인해보시면 될 것 같아요Android 기기에서 루트 권한을 얻는 방법질문, 몇 가지 사항을 단순화하고 설명하는 데 도움이 될 수 있습니다.

답변3

장치를 루팅한다는 것은 모든 프로그램을 루트로 실행할 수 있다는 것을 의미합니다. 따라서 정의에 따르면 컴퓨터가 루팅되지 않은 경우 루트로 프로그램을 실행할 수 없습니다. Android 장치에는 루트로 실행되는 일부 프로그램이 있습니다. 하지만 그들의 행동을 통제할 수는 없습니다.

안드로이드는 유닉스 운영체제가 아닙니다. 커널은 Linux와 동일하지만 나머지는 다릅니다. 커널에 관한 한 루트로 프로그램을 실행하는 방법은 세 가지뿐입니다.

  • 커널에서 직접 호출할 수 있습니다. 커널이 부팅을 마치면 init이 프로그램을 루트로 호출합니다. 장치를 연결하면 일부 구성에서 커널이 루트로 프로그램을 실행할 수도 있습니다.
  • 루트로 실행되는 프로그램에 의해 호출될 수 있습니다.
  • 그것은설정값루트에 속하는 실행 파일입니다.

UNIX 시스템에서 su및 같은 프로그램은 sudosetuid 루트입니다. 이는 모든 사용자가 호출할 수 있으며 (전화한 사람, 입력한 비밀번호 등에 따라) 쉘이나 다른 프로그램을 루트로 실행할지 또는 오류 상태를 반환할지 여부를 결정할 수 있습니다. 인증을 수행하는 것은 커널이 아닌 이러한 프로그램입니다. 커널은 사용자 계정과 비밀번호가 아닌 숫자로 된 사용자 ID만 처리합니다.

표준 Android 시스템에는 사용자 계정이 없습니다(사용자 ID는 사용자가 아닌 애플리케이션을 격리하는 데 사용됩니다). Unix 의미에서 비밀번호 기반 인증을 사용하지 않습니다(PIN이나 기타 인증 방법을 사용하여 시스템의 고유 사용자를 인증할 수 있음). Android 기기를 루팅한다는 것은 셸이 루트로 실행되도록 준비하는 것을 의미하며 일반적으로 adb shell루트로 실행되는 셸을 제공합니다. 장치에는 사용자가 한 명뿐이므로 여전히 루트 비밀번호가 없습니다.

관련 정보